С Новым годом! Форум программистов, компьютерный форум, киберфорум
Геометрия
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
1

Кватернион: расчет новой координаты точки при повороте ее СКО относительно предыдущей системы координат

10.05.2018, 12:30. Показов 5800. Ответов 54
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Столкнулся с проблемой понимания применения алгебры кватернионов для решения одной небольшой задачи.
Пишу приложение на С++. Есть несколько связных объектов, каждый из которых имеет собственную систему координат. Координаты каждой из систем рассчитываются относительно глобального нуля.
Одна из систем координат изначально "повернута" по оси Y относительно родительского объекта (и, соответственно, его системы коодинат) на константный угол. Необходимо пересчитать координаты точки, лежащей в этой "Повернутой" системе координат при вращении системы относительно оси X.

При расчете координат точек внутри систем, перпендикулярных друг другу проблем не возникает:
1. формируется нужный кватернион поворота;
2. происходит локальный поворот точек внутри текущей СКО при помощи сформированного кватерниона;
3. происходит смещение этой СКО в систему ее "Родителя", применяется кватернион родителя и обратный перенос СКО на свое место в пространсве.

При расчете же новых координат точек внутри "повернутой" системы координат результат не совпадает с результатами САПР, в котором выстроенна модель из моих связных объектов. Судя по координатам, выдаваемым САПР происходит поворот не только по нужной мне оси, но и еще по какой-то из оставшихся.

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

К посту для наглядности прикладываю иллюстрацию связе объектов.
Миниатюры
Кватернион: расчет новой координаты точки при повороте ее СКО относительно предыдущей системы координат  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2018, 12:30
Ответы с готовыми решениями:

Преобразование координат точки при повороте системы координат
Здравствуйте! Не могу понять, из чего получается формула преобразования координат точки при...

Относительно прямоугольной системы координат даны точки
Относительно прямоугольной системы координат даны точки A(\sqrt{8}; -\frac{1}{\sqrt{2}}) и M(x, y)....

Найти координаты точки векторами базиса и началом системы координат
Не знаю как найти координаты точки Д. Вроде как вектора вывел но коряво. Дайти толчок плиз. С чего...

Квартернионы. Расчет координат вектора при смещении одного узла относительно другого
Добрый день! Помогите, пожалуйста, решить задачу. Есть три связанных между собой узла. Один узел...

54
289 / 337 / 62
Регистрация: 09.06.2015
Сообщений: 1,306
10.05.2018, 18:26 2
Например, всю жизнь пользуюсь простыми и понятными углами Эйлера. И ни разу со школы не возникало проблем. Вернее, возникали спотыкания, но только из-за больших перерывов в применении.
А все эти новые словечки от лукавого, потому что суть остаётся той же самой, что и была при дедушке Эйлере.
Можно заподозрить, речь о манипуляторе, да?
0
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
10.05.2018, 18:44  [ТС] 3
О нем самом)
Только он крепится к телу, у которого посадочная площадка под углом и находится. Я пользовался всем. Кватернионы в реализации для других узлов оказались проще и понятнее.
Здесь же что матрицы поворота/перемешения, что кватернионы не дают верного результата. Что то делаю не так, а что понять вообще не могу. Устраняю поворот этот злосчастный - все работает путем и совпадают результаты.
0
289 / 337 / 62
Регистрация: 09.06.2015
Сообщений: 1,306
10.05.2018, 18:56 4
Ну, наклонилось тело, повернулось, сместилось … к телу привязана система координат – то же самое произошло с ней. Координаты второй точки первого звена, если они первые по очереди, вычисляются автоматически. И далее все остальные.
Это же прямая задача?
0
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
10.05.2018, 19:01  [ТС] 5
one man, да, прямая.С обратной проще....получил координаты, углы рассчитал
Только начальные координаты точки уже сразу под этим углом крепления у меня. Других не дано.
В мурзилках таких случаев не встретил - сплошные Пумы, да стендфорский манипулятор. Решение простым должно быть и на поверхности где то(

Хочу попробовать завтра (сейчас нет лоступа к коду) вот такое решение https://www.cyberforum.ru/post10744507.html только пока не определился какие координаты в качестве А и В использовать для крайнего узла.
0
289 / 337 / 62
Регистрация: 09.06.2015
Сообщений: 1,306
10.05.2018, 19:14 6
Не знаю, если начальные углы фиксированы и известны, то что ещё нужно?
Тут как-то советовал одному парню завести процедуру для конкретного устройства, чтобы эта процедура по известным изменениям управляющих параметров выдавала координаты любых точек. Могу повторить совет. Ещё могу попробовать ближе к конкретике, но только без специальных технических терминов. Просто рассматриваем отрезки, точки в пространстве…
0
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
10.05.2018, 19:19  [ТС] 7
one man, я сейчас тоже самое делаю) цель - постоянно пересчитывать координаты. Но для этого надо программу научить...ей же что скажешь, то и сделает)

Поэтому буду только ЗА, если без конкретики, но наведете на верное решение задачи....у меня реальная проблема в понимании реализации при таких условиях...
0
289 / 337 / 62
Регистрация: 09.06.2015
Сообщений: 1,306
10.05.2018, 19:25 8
Первая точка отвечает шаровому креплению? Она смещена? С ней всё ясно?
Вторая точка на конце звена? Начинаем с неё?
0
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
10.05.2018, 19:30  [ТС] 9
Вроде да...
0
289 / 337 / 62
Регистрация: 09.06.2015
Сообщений: 1,306
10.05.2018, 20:01 10
Вторая точка имеет известные координаты в новой системе или где-либо вообще к этому моменту? Тогда, зная углы изменения местной системы, мы пересчитываем её координаты из местных в глобальные. Формулы известны безо всяких кватернионов.

Добавлено через 16 минут
Или, скорее всего, предполагаемые глобальные (без наклона всей системы), в реальные глобальные после наклона. Как угодно можно.
0
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
11.05.2018, 07:12  [ТС] 11
Точка имеет известные координаты до поворота системы, в которой она располагается. Система, к которой она привязана уже осуществила свои перемещения. Т.е. нужно повернуть систему, в которой находится точка и получить новые координаты точки в глобальной системе координат.
А формулы - это перенос систем координат и матрицы вращения? Или я уже поплыл в мат. части?
0
289 / 337 / 62
Регистрация: 09.06.2015
Сообщений: 1,306
11.05.2018, 11:02 12
Конечно, всё так. Тут только можно напутать с правильным переписыванием-записыванием формул, как мне кажется, но это чисто технический вопрос. Я бы порекомендовал немного потренироваться на простых примерах с точками и с формулами, и чтобы под руной всегда был графический интерфейс для быстрого контроля. Короче, какой-нибудь матпакет, вернее, лучше мощный матпакет. Языки более низкого уровня не для этих задач – только тратить силы и время.
0
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
11.05.2018, 15:48 13
Цитата Сообщение от DimKaKiber Посмотреть сообщение
как нужно использовать алгебру кватернионов
Предлагаю на нее забить т.к. она мутновата для смертных =). Она вроде используется для ускорения математики где очень важна скорость расчета железом.

Есть простая и понятная “Матрица поворота вокруг произвольной оси”
https://ru.wikipedia.org/wiki/Матрица_поворота
Направление поворота там вроде всегда против часовой. Находите матрицу. Множите вектор на матрицу и получаете повернутый вектор. Можно крутить что угодно и как угодно.
Цитата Сообщение от one man Посмотреть сообщение
И ни разу со школы не возникало проблем
Может просто сложность проблем школьная?
http://www.wikiznanie.ru/wikip... рный_замок

Цитата Сообщение от one man Посмотреть сообщение
все эти новые словечки от лукавого,
Предложены Уильямом Гамильтоном в 1843 году.
https://ru.wikipedia.org/wiki/Кватернион

Цитата Сообщение от DimKaKiber Посмотреть сообщение
для наглядности прикладываю иллюстрацию связе объектов.
Обычно рисуют кинематическую схему с шарнирами. Экспертам хватает и просто фото манипулятора.
Цитата Сообщение от one man Посмотреть сообщение
Короче, какой-нибудь матпакет, вернее, лучше мощный матпакет.
Тут хватит и GeoGebra, можно слайдерами крутить отрезки и т.п. Если нужны свистоперделки (красивый свет, сложное затенение 3д модели, загрузить 3д модель манипулятора) то тогда wolfram Mathematica.

Цитата Сообщение от DimKaKiber Посмотреть сообщение
Система, к которой она привязана уже осуществила свои перемещения.
Последовательно повернуть отрезок N раз. Сложность 5 класс =).
0
289 / 337 / 62
Регистрация: 09.06.2015
Сообщений: 1,306
11.05.2018, 19:36 14
DimKaKiber, yе знаю, надеюсь, поможет. Это основной текст программы (Maple), отвечающий за вращение и смещение
Matlab M
1
2
3
4
5
6
7
FACE1 := seq(plottools[polygon]([seq([
 
m[1, 0]*L[1][i]+m[1, 1]*L[2][i]+m[1, 2]*L[3][i]+g1, 
m[2, 0]*L[1][i]+m[2, 1]*L[2][i]+m[2, 2]*L[3][i]+g2,
m[0, 0]*L[1][i]+m[0, 1]*L[2][i]+m[0, 2]*L[3][i]+g3
 
], i = 1 .. mm)], color = red, transparency = .5, style = patchnogrid), k = 1 .. N);
m[к, n] – элемент обычной матрицы поворота, например, из Википедии,
L[m][i] – одна из координат i-й точки ломаной, изображающей сердечко,
gm – смещение по соответствующей координате.
Элементы матрицы вращения и смещения меняют свои значения N раз по кругу.
Здесь все точки одновременно получают одно и то же вращение и смещение. Поэтому мы видим движение всего рисунка. Раз он отображается на экране, значит, решена прямая задача – мы по углам поворота и смещению получаем координаты всех точек.
Думаю, прямая задача манипулятора не сложнее задачи получения этого рисунка.
https://www.cyberforum.ru/atta... 1526056446
Миниатюры
Кватернион: расчет новой координаты точки при повороте ее СКО относительно предыдущей системы координат  
0
289 / 337 / 62
Регистрация: 09.06.2015
Сообщений: 1,306
11.05.2018, 20:01 15
Не совсем удачно выбрал букву для m[к, n], пусть будет m[j, n], где j,n от 0 до 2.
0
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
11.05.2018, 20:07 16
Вот это троллинг .
То чувство когда думаешь что будет в мат пакете что-то такое
Кватернион: расчет новой координаты точки при повороте ее СКО относительно предыдущей системы координат

А тебе показывает сердечко
0
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
12.05.2018, 06:44  [ТС] 17
Да хоть палки, скрепленные чем то не совсем приличным))))) Так что сердечко это еще норм)))

Я тут понял, что как то неправильно владею матрицами поворота - сижу теперь от простого все начинаю) Как в школе, действительно)))
0
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
12.05.2018, 07:47 18
Почему не взяли готовые функций которые крутят вектора?

Берите матрицу поворота вокруг произвольной оси, она интуитивно понятна, 90% матрицы одно и тоже. Ось она же по аналогии с валом...очень толково.
0
289 / 337 / 62
Регистрация: 09.06.2015
Сообщений: 1,306
12.05.2018, 09:07 19
DimKaKiber, специально в коде соединил строки 3,4,5. Они по очереди соответствуют новым координатам x,y,z текущей точки i с координатами L[1][i], L[2][i], L[3][i]. Просто под рукой другого текста не было, а суть та же самая, только в звене расстояние постоянное, а здесь расстояния g переменные (под рисунок). А при постоянной длине каждая g равна соответствующей проекции этой длины звена.
http://vmk.ugatu.ac.ru/labkg51.htm
0
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
12.05.2018, 17:48  [ТС] 20
Excalibur921, К сожалению опыт работы с уже готовыми функциями и библиотеками у меня печальный - сколько раз не брался - получается совсем нето, что задумываешь. Поэтому всегда стараюсь понять как оно работает и что должно делать для решения именно моей задачи. + В последнее время ставятся такие задачи, для которых важна именно производительность на самом слабом железе (контроллер, смартфон, ПК). Поэтому всегда нужно знать как исправить внутренность функций для оптимизации и ускорения алгоритмов, которые мне же самому и приходится придумывать, обсчитывать и тестировать. Конкретно здесь - стоит задача обсчета прямой кинематики механизма, решение которой должно осуществляться в срок не более 0.5-1 миллисекунды в потоковом режиме для механизма имеющего в своем составе 59 взаимоувязанных узлов + их ориентация в пространстве (крен, тангаж, рысканье).
Недавно сделал такую схему + обратную для механизма с чуть меньшим количеством узлов с применением как раз алгебры кватернионов, что устроило по результатам (погрешность на уровне накопления ошибки для вычислений чисел типа float в микрометрах) и по быстродействию (от 0 до 1 миллисекунды, если замерять в целых числах по тикам процессора).
И поэтому вызвало недоумение невозможность получения новых координат теми же способами для манипуляторов нового механизма.
one man, Спасибо большое! Буду разбираться. День просто суматошный выдался - часто в разъездах приходится бывать.

Задачка то, действительно, школьного уровня, но зараза, пока понимание не прийдет - до конца не решится.

Добавлено через 1 час 56 минут
Неправильно домножал координаты на матрицу поворота как оказалось.....Надо было матрицу на вктор-столбец, а я наоборот фигачил.......Это к вопросы про обычные матрицы и единичный поворот вектора

А матрицу поворота вокруг произвольной оси таким же макаром задавать? Или ее надо сначала на направляющий вектор домножить, а потом на вектор, координаты которого пересчитываю? Как в ней ось поворота задается?

Ага, разобрался....Те же яйца, только в профиль. Просто матрицу надо составлять с использованием значений единичного вектора, который направление определяет.
0
12.05.2018, 17:48
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2018, 17:48
Помогаю со студенческими работами здесь

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

Определите координаты точки, полученной поворотом вокруг точки в системе координат
В системе координат XOY задана точка A (25, 45). Определите координаты точки B, полученной...

Ввести координаты точки М и найти ее расстояние от начала координат (радиус - вектор от точки О (0,0)).
Ввести координаты точки М и найти ее расстояние от начала координат (радиус - вектор от точки О...

Даны координаты концов N - мерного отрезка (точки a и b). Найти его длину и наибольшую из координат точки а
Пропустил пары и теперь не знаю, как составить программу:boredom:


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru