Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Quaternion Member Functions

Boost , Math Toolkit 2.5.0 , Chapter 9. Quaternions

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Constructors

Шаблонная версия:

explicit quaternion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T());
explicit quaternion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>());
template<typename X>
explicit quaternion(quaternion<X> const & a_recopier);

Версия специализации Float:

explicit quaternion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f);
explicit quaternion(::std::complex<float> const & z0,::std::complex<float> const & z1 = ::std::complex<float>());
explicit quaternion(quaternion<double> const & a_recopier);
explicit quaternion(quaternion<long double> const & a_recopier);

Двойная специализация:

explicit quaternion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0);
explicit quaternion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>());
explicit quaternion(quaternion<float> const & a_recopier);
explicit quaternion(quaternion<long double> const & a_recopier);

Длинная двойная специализация:

explicit quaternion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L);
explicit quaternion( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>());
explicit quaternion(quaternion<float> const & a_recopier);
explicit quaternion(quaternion<double> const & a_recopier);

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

Деструкторы и конструкторы копий (от одного типа) предоставляются компилятором. Конвертирующие конструкторы копий используют шаблонную функцию помощника в «детальном» подименном пространстве.

Other member functions

Real and Unreal Parts
T             real() const;
quaternion<T> unreal() const;

Как и комплексное число, кватернионы имеют осмысленное понятие «реальной части», но в отличие от них нет осмысленного понятия «воображаемой части». Вместо этого существует «нереальная часть», которая сама по себе является кватернионом, и обычно ничего более простого (в отличие от случая комплексного числа). Их возвращают первые две функции.

Individual Real Components
T R_component_1() const;
T R_component_2() const;
T R_component_3() const;
T R_component_4() const;

Кватернион, имеющий четыре действительных компонента, возвращается этими четырьмя функциями. Следовательно, реальный и R_компонент_1 возвращают одно и то же значение.

Individual Complex Components
::std::complex<T>  C_component_1() const;
::std::complex<T>  C_component_2() const;

Кватернион также имеет два сложных компонента, и, как мы видели выше, для любого кватерниона<q = α + βi + γj + δk>у нас также есть<q = (α + βi) + (γ + δi)j>. Эти функции возвращают их. Реальная часть<q.C_component_1()>такая же, как и<q.real()>.

Quaternion Member Operators

Assignment Operators
quaternion<T>& operator = (quaternion<T> const & a_affecter);
template<typename X>
quaternion<T>& operator = (quaternion<X> const& a_affecter);
quaternion<T>& operator = (T const& a_affecter);
quaternion<T>& operator = (::std::complex<T> const& a_affecter);

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

Addition Operators
quaternion<T>& operator += (T const & rhs)
quaternion<T>& operator += (::std::complex<T> const & rhs);
template<typename X>
quaternion<T>& operator += (quaternion<X> const & rhs);

Они выполняют математическую операцию<(*this)+rhs>и сохраняют результат в<*this>. Неспециализированная форма имеет защитные ограждения, которых нет в специализированных формах, чтобы обеспечить безопасность исключения. Для неспециализированной формы операторы назначения базового типа не должны бросать.

Subtraction Operators
quaternion<T>& operator -= (T const & rhs)
quaternion<T>& operator -= (::std::complex<T> const & rhs);
template<typename X>
quaternion<T>& operator -= (quaternion<X> const & rhs);

Они выполняют математическую операцию<(*this)-rhs>и сохраняют результат в<*this>. Неспециализированная форма имеет защитные ограждения, которых нет в специализированных формах, чтобы обеспечить безопасность исключения. Для неспециализированной формы операторы назначения базового типа не должны бросать.

Multiplication Operators
quaternion<T>& operator *= (T const & rhs)
quaternion<T>& operator *= (::std::complex<T> const & rhs);
template<typename X>
quaternion<T>& operator *= (quaternion<X> const & rhs);

Они выполняют математическую операцию<(*this)*rhs>в этом порядке(порядок важен, поскольку умножение не является коммутативным для кватернионов) и сохраняют результат в<*this>. Неспециализированная форма имеет защитные ограждения, которых нет в специализированных формах, чтобы обеспечить безопасность исключения. Для неспециализированной формы операторы назначения базового типа не должны бросать.

Division Operators
quaternion<T>& operator /= (T const & rhs)
quaternion<T>& operator /= (::std::complex<T> const & rhs);
template<typename X>
quaternion<T>& operator /= (quaternion<X> const & rhs);

Они выполняют математическую операцию<(*this)*inverse_of(rhs)>в этом порядке(порядок важен, поскольку умножение не является коммутативным для кватернионов) и сохраняют результат в<*this>. Неспециализированная форма имеет защитные ограждения, которых нет в специализированных формах, чтобы обеспечить безопасность исключения. Для неспециализированной формы операторы назначения базового типа не должны бросать.


PrevUpHomeNext

Статья Quaternion Member Functions раздела Math Toolkit 2.5.0 Chapter 9. Quaternions может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 9. Quaternions ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 05:26:54/0.0045831203460693/0