Эффективное использование вычислителей кривой и поверхности
Чтобы получать максимальную эффективность от кривой и поверхностных вычислителей, Вы должны многократно использовать AcGePointOnCurve2d, AcGePointOnCurve3d, и объекты AcGePointOnSurface в максимально возможной степени, когда Вы выполняете много оценок на той же самой кривой или поверхности. Например, предположите, что func1 и func2 и исполняют оценки на той же самой поверхности srf, и func1 вызывает func2. Тогда объект AcGePointOnSurface, что func1 использования для оценок нужно пройти к func2:
void func1 (const AcGeSurface& srf)
{
AcGePointOnSurface pntOnSrf (srf);
.
. // Evaluate some points and derivatives.
.
func2 ( pntOnSrf );
.
.
}
void func2 (AcGePointOnSurface& pntOnSrf)
{
// Evaluate some points and derivatives using pntOnSrf
// passed in from func1.
}
Пропуская pntOnSrf к func2, вычислитель может продолжать использовать ту же самую область данных, которая использовалась для всех оценок в func1. Если func1 не передает объект AcGePointOnSurface к func2, то func2 должен объявить новый объект AcGePointOnSurface, который создаст новую область данных и повторно вычислит данные, который был вычислен в func1. Следующий код выполняется правильно; однако, это менее эффективно чем предыдущий код:
void func1 (const AcGeSurface& srf)
{
AcGePointOnSurface pntOnSrf (srf);
...
func2 (srf);
...
}
void func2 (const AcGeSurface& srf)
{
AcGePointOnSurface pntOnSrf (srf);
.
. // Оценивает некоторые точки и производные, используя новый pntOnSrf, объявленный выше.
.
}
Многократное использование того же самого объекта AcGePointOnSurface важно для вычислитель-интенсивных приложений, типа поверхностно - поверхностных межсекторов или проекционно-разностных генераторов сети. В случае поверхностно - поверхностного межсектора, функция верхнего уровня должна объявить два объекта AcGePointOnSurface (один для каждой поверхности) и передавать эти объекты через все подпрограммы низшего уровня. Таким образом, приложение получает максимальное использование данных, который сохранен между оценками и получает максимальную эффективность от ее поверхностных вычислителей.
Чтобы получить лучшее использование AcGePointOnCurve2d, AcGePointOnCurve3d, и классов AcGePointOnSurface, большое количество этих объектов никогда не должно быть в контексте в то же самое время для той же самой кривой или поверхности. В большинстве местоположений, только один из этих объектов должен быть в контексте для специфической кривой или поверхности.