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


         

чтобы преобразовать вектор скорее чем


ПРИМЕЧАНИЕ, чтобы преобразовать вектор скорее чем точка, не добавьте в векторе сдвига М3 М13 М23 (от четвертого столбца матрицы преобразования).

Следующая функция осуществляет предыдущие уравнения, чтобы преобразовать единственную точку:

void xformpt(xform, pt, newpt)

ads_matrix xform;

ads_point pt, newpt;

{

int i, j;

newpt[X] = newpt[Y] = newpt[Z] = 0.0;

for (i=X; i<=Z; i++) {

for (j=X; j<=Z; j++)

newpt[i] += xform[i][j] * pt[j];

// Add the translation vector.

newpt[i] += xform[i][T];

}

}

Следующее рисунок суммирует некоторые основные геометрические преобразования.

( Значения в ads_matrix - фактически ads_real, но им показывают здесь как целые числа для удобочитаемости и соответствовать математическому соглашению.)













































































































































































1



0



0



0





1



0



0



TX





SX



0



0



0





cos



-sin



0



0



0



1



0



0





0



1



0



TY





0



SY



0



0





sin



cos



0



0



0



0



1



0





0



0



1



TZ





0



0



SZ



0





0



0



1



0



0



0



0



1





0



0



0



1





0



0



0



1





0



0



0



1



Translation                               scaling                      2D rotation (in the XY plane)

AcedXformSS () функция — в отличие от acedDragGen(), acedGrVecs(), или acedNEntSelP() функции — требует, чтобы  матрица делала однородное масштабирование. То есть в матрице преобразования, которую Вы проходите к acedXformSS (), элементы в векторе масштабирования S X S Y S Z, должны весь быть равными; в матричном примечании, М. 00 = М. 11 = М. 22. Трехмерное вращение - слегка различный случай, как показано в следующем рисунке:





































































































































cos



-sin



0



0





1



0



0



0





cos



0



sin



0



sin



cos



0



0





0



cos



-sin



0





0



1



0



0



0



0



1



0





0



sin



cos



0





-sin



0



cos



0



0



0



0



1





0



0



0



1





0



0



0



1

<

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