Перейти к публикации

поворот системы координат


AlexeyN

Рекомендованные сообщения

Задача: после ряда построений повернуть систему координат вокруг оси Z на угол 45 градусов и продолжить построения в новой системе координат. В примере должно получиться в результате 2 прямые, угол между которыми 45 градусов, а после запуска программы получаются две совпадающие прямые в исходной системе координат, причем система координат поворачивается, но после выполнения последней комманды, когда программа уже отработала. Пытался после поворота обновить модель, но это не помогло. В чем дело? :wallbash:

tag_t matrix_id_csys,matrix_id_csys2,csys_id,csys_id2;

double csys_origin[3],matrix_csys_values[ 9 ],rotation_angle_csys,rotation_axis_csys[3];

UF_CURVE_line_t sline;

tag_t line;

sline.start_point[0] = -1000;

sline.start_point[1] = 0;

sline.start_point[2] = 0;

sline.end_point[0] = 1000;

sline.end_point[1] = 0;

sline.end_point[2] = 0;

UF_CURVE_create_line(&sline,&line);

UF_CSYS_ask_wcs (&csys_id);

UF_CSYS_ask_csys_info (csys_id, &matrix_id_csys, csys_origin );

UF_CSYS_ask_matrix_values (matrix_id_csys, matrix_csys_values );

rotation_axis_csys[0]=0;

rotation_axis_csys[1]=0;

rotation_axis_csys[2]=1;

rotation_angle_csys=45*DEGRA;

UF_MTX3_rotate_about_axis (rotation_axis_csys, rotation_angle_csys, matrix_csys_values );

UF_CSYS_create_matrix (matrix_csys_values, &matrix_id_csys2 );

UF_CSYS_create_csys (csys_origin, matrix_id_csys2,&csys_id2);

UF_CSYS_set_wcs (csys_id2 );

sline.start_point[0] = -1000;

sline.start_point[1] = 0;

sline.start_point[2] = 0;

sline.end_point[0] = 1000;

sline.end_point[1] = 0;

sline.end_point[2] = 0;

UF_CURVE_create_line(&sline,&line);

Ссылка на сообщение
Поделиться на других сайтах


Построение линии всегда выполняется в абсолютной системе координат.

Если хочешь построить линии с поворотом, то есть несколько вариантов:

1) после поворота пересчитать координаты с помощью UF_CSYS_map_point

2) Посчитать координаты линии в новой системе координат с помощью

double transform2[16];

// определение матрицы трансформации

UF_MTX4_rotation

// пересчет точек в повернутую систему координат

UF_MTX4_vec3_multiply

:clap_1:

3) Можно придумать еще, но это надо время и желание, а приведенные выше, уже опробованные

Удачи

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...