3D направления (сломал мозг)

Обсуждение вопросов, связанных с обработкой аудио и видео информации

3D направления (сломал мозг)

Postby Artem.spb on 06 Jun 2019, 19:17

Коллеги, спасите.
Мозг сломал с 3Д-трансформациями.
Задача: есть две точки в пространстве (координаты известны). Надо нарисовать между ними "палку". В итоге вместо палки должна быть осмысленная фигура, но пока разминаюсь на кошках.
Зелёная и синяя оси Z должны идти вдоль одной линии Оттуда, где начинается зелёная, туда, где начинается синяя.
Снимок.PNG


На больших расстояниях оно даже похоже на правду, но при приближении плоскостей друг у другу, оси разбегаются.

ситуация осложняется нестандартностью ориентации осей в :labview:
Подскажите, где ошибка.
Если есть рецепт поворота проще, то и ошибку указывать не нужно :)
В коде сначала вращаю вокруг Z, потому что это фиксированный разворот.
Вот как это выглядит.
Снимок2.PNG

Т.е. если вместо осей нарисовать палку с ручкой, то ручка должна смотреть в одну и ту же сторону при наклонах палки.

В приложении вся функция
Attachments
Untitled 4.vi
LV2012
(39.67 KiB) Downloaded 15 times
Artem.spb
expert
expert
 
Posts: 1563
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 252
CLD hardware I/O VIP freelance

Re: 3D направления (сломал мозг)

Postby IvanLis on 09 Jun 2019, 19:00

Должно быть так:
https://youtu.be/WPy3euITZFI

Stewart-ForArtem.vi
lv2015
(61.39 KiB) Downloaded 5 times


Проблема в том, что при использовании углов Эйлера конечный результат серии вращений зависит от порядка промежуточных вращений, иногда случается, что вращение вокруг одной оси отображается на вращение вокруг другой оси. Это называется "Шарнирный замок" - "Gimbal lock".
Для обхода этой ситуации необходимо (последовательность может изменяться):
1. вычислить угол поворота относительно оси X, сформировать матрицу трансформации
2. довернуть объект на угол противоположный X (в противоположную сторону)
3. вычислить угол поворота относительно оси Y (при условии, что X уже компенсировали), сформировать матрицу трансформации
4. перемножить две матрицы трансформации и получится матрица трансформации с необходимым направлением
User avatar
IvanLis
professor
professor
 
Posts: 4776
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 749
hardware VIP bloggers teachers


Return to Работа с графикой и звуком

Who is online

Users browsing this forum: No registered users and 1 guest

cron