ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Эффективное использование вычислителей кривой и поверхности


 Чтобы получать максимальную эффективность от кривой и поверхностных вычислителей, Вы должны многократно использовать 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, большое количество этих объектов никогда не должно быть в контексте в то же самое время для той же самой кривой или поверхности. В большинстве местоположений, только один из этих объектов должен быть в контексте для специфической кривой или поверхности.



Содержание раздела