Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
DimKaKiber
11 / 11 / 0
Регистрация: 20.11.2013
Сообщений: 96
#1

Квартернионы. Расчет координат вектора при смещении одного узла относительно другого - C++

03.10.2017, 08:00. Просмотров 125. Ответов 1
Метки нет (Все метки)

Добрый день! Помогите, пожалуйста, решить задачу.

Есть три связанных между собой узла. Один узел неподвижен (Узел 1). На нем расположен центр глобальной системы координат (точка (0,0,0)). К нему жестко крепится Узел 2 (картинка). Этот узел совершает вращательное движение вбок на определенный угол (Альфа на картинке) и тянет за собой Узел 3. Начала координат Узла 2 и Узла 3 совмещены .

Нужно найти координаты точки А со штрихом (x,y,z), которые получаются при перемещении узла 3 вслед за узлом 2.

На картинке справа от рисунка я приставил систему координат, в которой перемещаются узлы. Снизу - система координат, для которой есть направляющий вектор (1,0,0) для узла 2.

Для решения задачки сделал механизм генерации квартернионов и их обработки.
При этом считаю координаты вектора по механизму поворота вектора (https://habrahabr.ru/post/255005/, http://www.rossprogrammproduct.com/t...%20FAQ.htm#Q26 и другие).

Результаты, мягко говоря, не впечатляют. Результаты сравниваю с результатами, выдаваемыми Solid Works при работе с моделькой этой. При этом повороты относительно осей на 90,180 градусов работают верно. Поэтому, думаю что где то непонимаю уже саму методологию.

Заранее спасибо за ответы и советы!
0
Миниатюры
Квартернионы. Расчет координат вектора при смещении одного узла относительно другого  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2017, 08:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Квартернионы. Расчет координат вектора при смещении одного узла относительно другого (C++):

Два, рядом стоящие эллипса, изменяют размеры, цвета заливки, положение одного относительно другого - C++
Нужна помощь с написанием кода: Два, рядом стоящие эллипса, изменяют размеры, цвета заливки, положение одного относительно другого и...

Расчет координат точки при смещении узла - Механика
Добрый день! Хотелось бы посоветоваться о решении новой для меня задачи. У меня имеется механизм, состоящий из 6 узлов, связанных...

Как получить значение одного узла по значению другого узла? - LINQ
Всем благополучия. Помогите разобраться с вроде несложной ситуацией, плз. Есть простенький XML файл: <Name>Тип документа</Name>...

Уникальность одного текста относительно другого - Delphi
Здраствуйте! Возникла необходимость написать программу, которая могла бы определять уникальность одного текста относительно другого. ...

HEIGHT одного блока DIV относительно другого - HTML, CSS
Есть блоки DIV (например main и left), у блока left высота (height) 800px, позиционирование (position) absolute. Блок left находится в...

Вычисление одного поля на форме относительно другого - MS Access
Доброго времени суток. Прошу Вас помочь с формой на которой есть вичисляемое поле, которое равно =Sum(). Как сделать чтобы оно считалось...

1
DimKaKiber
11 / 11 / 0
Регистрация: 20.11.2013
Сообщений: 96
03.10.2017, 15:46  [ТС] #2
Начал потихоньку разбираться.

здесь http://dobrijzmej3d.blogspot.ru/2012/07/ogre3d.html хорошую табличку нашел в конце.
Получается, что относительно глобальной системы координат узла 1 система узла 2 должна быть повернута на 180 градусов по оси X (1,0,0).

Затем мне нужно повернуть этот узел (наклонить) по соответствующей оси и выполнить обратный разворот на 180 градусов?

Правильно ли я рассуждаю?

Добавлено через 4 часа 38 минут
Ладно. Сам спросил - сам отвечаю

Для этого простого примера подошла схема:
1. Перенос координат текущего узла в систему координат предыдущего.
2. Формирование квартерниона, описывающего поворот вокруг нужной оси на нужный угол.
3. Поворот вектора квартернионом.
4. Возврат системы координат на место.


Про перенос координатных систем напрочь забыл, поэтому была проблема.
Теперь буду дальше экспериментировать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2017, 15:46
Привет! Вот еще темы с ответами:

Max среди координат одного вектора - Free Pascal
max среди координат одного вектора. С векторов v1,v2,v3 выбрать вектора(один или несколько),что имеют наибольший max среди координат.В...

ввести функцию суммы координат одного вектора - Pascal
одномерные массивы(векторы) v1(m), v2(n), v3(k) ввести функцию суммы координат одного вектора выдать вектор с максимальной суммой...

Вычислить проекцию одного вектора на направление другого - Геометрия
Не догоняю как решать..:(

Построить график зависимости одного вектора от другого - Matlab
есть два вектора D и N - вот нужно сделать график D(N) syms n An = 48/(5*(n^2+6*n+5)) n1 = 0 n2 = inf S_inf = symsum(An, n,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru