a point, add in the
void mcs2wcs(xform, entpt, is_pt, worldpt)
ads_matrix xform;
ads_point entpt, worldpt;
int is_pt;
{
int i, j;
worldpt[X] = worldpt[Y] = worldpt[Z] = 0.0;
for (i=X; i<=Z; i++)
for (j=X; j<=Z; j++)
worldpt[i] += xform[i][j] * entpt[j];
if (is_pt) // If it’s a point, add in the displacement
for (i=X; i<=Z; i++)
worldpt[i] += xform[i][T];
}
Следующий кодовый фрагмент показывает, как mcs2wcs () мог бы использоваться в конъюнкции с acedNEntSelP () чтобы транслировать значения точки в поток WCS.
ads_name usrent, containent;
ads_point usrpt, defpt, wcspt;
ads_matrix matrix;
struct resbuf *containers, *data, *rb, *prevrb;
status = acedNEntSelP(NULL, usrent, usrpt, FALSE, matrix,
&containers);
if ((status != RTNORM) || (containers == NULL))
return BAD;
data = acdbEntGet(usrent);
// Extract a point (defpt) from the data obtained by calling
// acdbEntGet() for the selected kind of entity.
.
.
.
mcs2wcs(matrix, defpt, TRUE, wcspt);
AcedNEntSelP () функция также позволяет программе определять точку указки. Pickflag параметр определяет, действительно ли acedNEntSelP () называется в интерактивном режиме.
В следующем примере, acedNEntSelP () запрос определяет его собственную точку для выбора примитива и не запрашивает пользователя. Pickflag параметр ИСТИНЕН, чтобы указать, что запрос поставляет{*снабжает*} его собственному значению точки (также, подсказка - NULL).
ads_point ownpoint;
ownpoint[X] = 2.7; ownpoint[Y] = 1.5; ownpoint[Z] = 0.0;
status = acedNEntSelP(NULL, usrent, ownpt, TRUE, matrix, &containers);
AcedNEntSel () функция обеспечивается для совместимости с существующими ObjectARX-приложениями. Новые приложения должны быть написаны, используя acedNEntSelP ().
Модель к Мировой Матрице преобразования, возвращенной запросом к acedNEntSel () имеет ту же самую цель как возвращенное acedNEntSelP (), но это - 4x3, матрица — прошла как массив четырех точек —, который использует соглашение, что точка - строка скорее чем столбец. Преобразование описано следующим матричным умножением:
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий