stratego
Если речь шла про сопряжённых то правильно в Огре и урху
stratego
Сорри не меняется исходный
}:+()___ [Smile]
> OMG:
>
> inline Quaternion &Quaternion::operator-()
> {
> x = -x;
> y = -y;
> z = -z;
> w = -w;
> return *this;
> }
> Употребление −q внезапно портит q.
a + (- b) == a - b
a * (- b) == - (a * b)
Это же та же фишка, что и с тем злополучным оператором==, плюс-минус — это операции векторного пространства, а сопряжение — должно быть отдельной функцией (в своём велосипеде я ставил на operator~ (бинарное отрицание в стд)).
Имбирная Ведьмочка
Может он имел введу шо исходный портится
это да, как если бы после
a + (- b) == a - b
сделать
а + b и получить то же самое
innuendo
> Может он имел введу шо исходный портится
А! Я понял, operator- берёт свой аргумент по ссылке и мутирует его. Прикольно.
интересно, есть какая то правильная функция для интерполяции между 3 или 4 кватернионами?
если надо смешать 4 вращения то можно сделать 4 SLERP или LERP например последовательно, по весам.
но результат будет разный при разной последовательности интерполяций.
Noir
> есть какая то правильная функция для интерполяции между 3 или 4 кватернионами?
Интерполяция между 3-мя кватернионами эквивалентна интерполяции между тремя точками на сфере, между 4-мя — четырьмя точками на гиперсфере. В принципе, если сильно надо, то можно придумать что-нибудь симметричное, однако я сомневаюсь, что есть что-то каноническое.
}:+()___ [Smile]
> Интерполяция между 3-мя кватернионами эквивалентна интерполяции между тремя
> точками на сфере, между 4-мя — четырьмя точками на гиперсфере. В принципе, если
> сильно надо, то можно придумать что-нибудь симметричное, однако я сомневаюсь,
> что есть что-то каноническое.
то есть лучше заморачиваться и сделать ((q1 + q2 + q3 + q4)/4).normalize ?
Noir
> то есть лучше заморачиваться и сделать ((q1 + q2 + q3 + q4)/4).normalize ?
Деление на 4 лишнее (нормализация же не приближенная?). И могут быть проблемы с кватернионами у которых все компоненты имеют обратный знак, сумма даст 0 но на самом деле эти кватернионы представляют одинаковые повороты.
}:+()___ [Smile]
> В принципе, если сильно надо, то можно придумать что-нибудь симметричное,
> однако я сомневаюсь, что есть что-то каноническое.
Делать несколько итераций коррекции весов исходя их получившихся угловых расстояний от интерполированного кватерниона до каждого из исходных.
amaora
> Деление на 4 лишнее (нормализация же не приближенная?). И могут быть проблемы с
> кватернионами у которых все компоненты имеют обратный знак, сумма даст 0 но на
> самом деле эти кватернионы представляют одинаковые повороты.
согласен с этими уточнениями)