Я новичок в javascript, но мне удалось написать работающую xml-функцию:)
Я надеялся, что кто-нибудь может дать мне краткое изложение того, как оптимизировать функцию. В настоящее время существует своя функция для погоды в каждом штате, но я надеялся, что смогу это как-то упростить.
Код вставлен здесь: http://pastie.org/private/ffuvwgbeenhyo07vqkkcsw
Любая помощь очень важна оценен. Для скорости я использую UnsafeNativeMethods для выполнения всех преобразований. Эта проблема: ...
Справочная информация: Я использую управляемые библиотеки DirectX 9.0 для преобразования массивов трехмерных точек в двумерные экранные координаты. Для скорости я использую UnsafeNativeMethods для выполнения всех преобразований.
Проблема:
Если используется моя пользовательская функция обрезки строк, мое приложение умирает без каких-либо исключений, мне потребовалось некоторое время, чтобы выяснить, что оно выбрасывает uncatchable System.ExecutionEngineException
. Я сузил его до случая из-за последних двух строк моей функции отсечения.
List verticesAfterClipping = new List;
public unsafe void ClipLine(Line lineToClip)
{
this.verticesAfterClipping.Clear();
// Clipping algorithm happens here... (this is psuedo-code of what it does)
foreach(Vertex in lineToClip.Vertices)
{
bool thisIsClipped = // Set to whether this vertex is clipped
bool lastWasClipped = // Set to whether last vertex was clipped
if(thisIsClipped == false && lastWasClipped == true)
{
verticesAfterClipping.Add( /* intersection on clipping plane */ );
verticesAfterClipping.Add( /* thisVertex */ );
}
else if (thisIsClipped == false && lastWasClipped == false)
{
verticesAfterClipping.Add( /* thisVertex */ );
}
else if (thisIsClipped == true && lastWasClipped == false)
{
verticesAfterClipping.Add(/* intersection on clipping plane */);
}
}
// THIS IS WHERE BAD THINGS HAPPEN
lineToClip.Vertices = new Vertex[verticesAfterClipping.Count];
verticesAfterClipping.CopyTo(lineToClip.Vertices, 0);
}
Когда список verticesAfterClipping
копируется в lineToClip
вершины, вершины lineToClip
] затем передается в UnsafeNativeMethod, который преобразует эти вершины в 2d вершины. Судя по всему, что я вижу, когда прохожу через него в режиме отладки, он работает полностью нормально, пока просто не умирает.
Я просто не могу понять, что не так. Любая помощь будет принята с благодарностью.