template<typename T> quaternion<T> spherical(T const & rho, T const & theta, T const & phi1, T const & phi2);
template<typename T> quaternion<T> semipolar(T const & rho, T const & alpha, T const & theta1, T const & theta2);
template<typename T> quaternion<T> multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2);
template<typename T> quaternion<T> cylindrospherical(T const & t, T const & radius, T const & longitude, T const & latitude);
template<typename T> quaternion<T> cylindrical(T const & r, T const & angle, T const & h1, T const & h2);
Они строят кватернионы так же, как полярные строят комплексные числа, поскольку для кватернионов нет строгого эквивалента полярных координат.
<spherical
>— простая транспозиция<polar
>, она принимает в качестве входов величину (положительную) и точку на гиперсфере, заданную тремя углами. Первый из них<theta
>имеет естественный диапазон от<-pi
>до<+pi
>, а два других имеют естественный диапазон от<-pi/2
>до<+pi/2
>(как в случае с обычными сферическими координатами вR3). Из-за множества симметрий и периодичностей ничего не происходит, если величина отрицательная или углы находятся за пределами их естественных диапазонов. Тем не менее, ожидаемые дегенерации (величина нуля игнорирует настройки углов ...) случаются.
<cylindrical
>также является простой транспозицией обычных цилиндрических координат вR3, что, в свою очередь, является еще одной производной плоских полярных координат. Первые два входа являются полярными координатами первогоСкомпонента кватерниона. Третий и четвертый входы помещаются в третий и четвертыйRкомпоненты кватерниона соответственно.
<multipolar
>— ещё одно простое обобщение полярных координат. На этот раз обеCсоставляющие кватерниона приведены в полярных координатах.
<cylindrospherical
>специфичен для кватернионов. Часто интересно рассматриватькак картезианский продуктRR3(кватернионное умножение как тогда особая форма, как здесь дано). Таким образом, эта функция строит кватернион из этого представления с компонентомR3, заданным в обычныхR3сферических координатах.
<semipolar
>— другой генератор, специфичный для кватернионов. Он принимает в качестве первого входа величину кватерниона, в качестве второго входа угол в диапазоне<0
>до<+pi/2
>таким, что величины первых двухCкомпонентов кватерниона являются произведением первого входа и синуса и косинуса этого угла, соответственно, и, наконец, в качестве третьего и четвертого входных углов в диапазоне<-pi/2
>до<+pi/2
>, которые представляют собой аргументы первого и второгоCкомпонентов кватерниона соответственно. Как обычно, ничего не происходит неблагоприятным, если величины являются отрицательными числами или углы находятся за пределами их естественных диапазонов, как симметрии и периодичности.
В этой версии нашей реализации кватернионов нет аналога операции комплексного значения<arg
>, поскольку ситуация несколько сложнее. Единичные кватернионы связаны как с вращениями вR3, так и вR4, и соответствия не слишком сложны, но в настоящее время отсутствует стандартная (де-факто или де-юре) матричная библиотека, с которой могли бы работать преобразования. Это следует исправить в ходе дальнейшего пересмотра. В среднем пример того, как это можно сделать, представлен здесь дляR3, и здесь дляRпример тестового файла.