Leave a comment

Comments 6

bluxer August 6 2018, 21:12:33 UTC
Постепенно осилю.

Reply


А почему-бы не использовать скалярное произведение? ext_4892445 November 18 2018, 03:43:35 UTC
Вычисление нормы все-таки дорого - корень.

Примерно так:

вектор покоординатной разности D = M - L

квадрат его нормы p = (D, D)

расстояние dist(M,L) = 2 SQRT ( p - p p / 4) = SQRT (4 p - p p)

А если dist будет использоваться для сравнения с константами, то можно оставить только (4 p - p p ) и обойтись совсем простой арифметикой.

И еще. Последнее приближение d ~= 2 | M-L | может сильно подвести, если нарвемся на пару вроде (1) и (-1). Как такой случай избежать?

Reply

Re: А почему-бы не использовать скалярное произведение? nabbla1 November 18 2018, 13:13:07 UTC
Всё верно. Можно ещё ввести функцию LengthSquared (квадрат длины), она чуть быстрее скалярного произведения, поскольку аргументов меньше.

Не стал здесь рассуждать о скорости вычислений, поскольку не думал эту метрику саму в вычисления запихивать, она мне была нужна для анализа достигаемой точности. (Разве что она вычисляется у меня на персональном компьютере после моделирования разных алгоритмов, чтобы сравнить их. Но далеко не внутри долгого цикла, скорее уже в конце работы)

И приближенное значение метрики - не для ускорения, а чтобы продемонстрировать: на малых масштабах это эвклидова метрика, все четыре компоненты оказывают одинаковый вклад в точность представления поворота.

Reply

Re: А почему-бы не использовать скалярное произведение? nabbla1 December 5 2018, 21:02:47 UTC
В новой части немножко написал об этом: https://nabbla1.livejournal.com/211002.html

Reply


roman_rogalyov December 26 2021, 18:43:56 UTC
А чем не нравится традиционная метрика - расстояние ρ(q,r) между кватернионами q и r равно меньшей дуге большого круга на трёхмерной сфере a2+x2+y2+z2=1, проходящей через эти кватернионы (в такой нормировке максимальное расстояние будет равно π)?

Расстояние между _поворотами_, соответствующими кватернионам (q и -q) и (r и -r) - минимальная дуга большого круга, проходящего через эти 4 точки. Это min(ρ(q,r), π-ρ(q,r)).

Вроде бы естественным образом возникает сферическая геометрия на трёхмерной сфере, и никаких псевдометрик.

Reply

nabbla1 December 27 2021, 12:16:14 UTC
Этот ликбез - о применении кватернионов для решения задач, связанных с вращением твёрдого тела, ориентацией в пространстве и пр. Свойства самих кватернионов - лишь в той мере, в какой они нужны для этих задач.

Поэтому отталкиваюсь именно от поворотов, ввожу "практичную" метрику, которой можно характеризовать, насколько правильно работают "приближённые методы". И так удачно выходит, что эта метрика выражается строгой формулой через кватернионы, и по ней сразу видно, что представить кватернионы числами с фиксированной запятой, т.е отрезок [-1;1] разбить на равные интервалы - очень неплохая идея! (представление с плавающей точкой позволяет ОТДЕЛЬНЫЕ повороты изобразить очень точно, скажем, вблизи нулевого, но для многих других точность становится ниже, т.к биты, которые могли уйти в мантиссу, заняты экспонентой)

Сразу получается оценить точность такого представления при заданном числе бит.

А с длинами дуги нужно сначала выводить формулы, как из компонентов кватернионов их посчитать, а потом ещё "привязывать" к поворотам.

Reply


Leave a comment

Up