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



         

Классы cпециальной оценки - часть 7


В дополнение к обеспечению более простого и более естественного интерфейса к кривой и поверхностным вычислителям, AcGePointOnCurve2d, AcGePointOnCurve3d, и классы AcGePointOnSurface обеспечивают более эффективный интерфейс также по традиционным вычислителям. Это - то, потому что каждый из этих классов содержит указатель на область данных, которая может использоваться вычислителями, чтобы сохранить информацию между оценками. Например, вычислитель НЕОДНОРОДНОГО РАЦИОНАЛЬНОГО В-СПЛАЙНА использует эту область, чтобы сохранить матрицы основания мощности, которые не сохранены как часть поверхностного определения. Используя эту область данных, вычислители могут избегать повторно вычислять те же самые данные, который был вычислен в предыдущей оценке и таким образом работать более эффективно. Эти данные - не часть кривой или поверхностных классов, потому что оценки могли бы иметь место в больше чем одной области чередующимся способом, который приведет к неэффективной потере местных данных оценки в переключении контекста.

Эта область данных также позволяет вычислителям быть намного более эффективной, когда преобразование применилось к объекту AcGePointOnSurface. Если transformBy () функция вызвана на объект AcGePointOnSurface, это заставляет последующие оценки быть преобразованным указанным преобразованием без фактически преобразования основной поверхности. Это означает, что вычислители должны применить преобразование к каждой точке, производной, и нормальному вектору, который они вычисляют. Используя область данных объекта AcGePointOnSurface, вычислители могут избегать иметь фактически, чтобы применить это преобразование для каждой оценки. Например, AcGePlane класс содержит компоненты данных mPoint, mUAxis, и mVAxis, которые определяют начало координат и оси плана. AcGePlane вычислитель оценивает точку со следующей инструкцией:

AcGePoint3d pnt3d = mPoint + param.x * mUAxis + param.y * mVAxis;

Если transformBy () запросили объект AcGePointOnSurface, то это преобразование должно примениться к pnt3d прежде, чем это возвращено вызывающей программе.

Вычислитель может избегать, чтобы  расход матрицы умножился,  сохраняя преобразованный mPoint, mUAxis, и mVAxis в AcGePointOnSurface области данных.

Тогда вышеупомянутая инструкция оценит точку в преобразованном местоположении без дополнительного расхода матрицы, умножают. Это - особенно полезная способность в приложениях типа моделирования трансляции{*блока*}, где кривые и поверхности были преобразованы в пространство{*пробел*} трансляции{*блока*} преобразованием позиционирования.




Содержание  Назад  Вперед