From d906c8a8aefe71e4aff0246c84a456b68f2a437d Mon Sep 17 00:00:00 2001 From: Andrey Pokidov Date: Mon, 25 Nov 2024 15:41:10 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D1=8F:=20=D0=BA=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D1=80=D0=BD=D0=B8=D0=BE=D0=BD=D1=8B=20=D0=B8=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=BE=D1=80=D1=8B=20/=20Documentation:=20qua?= =?UTF-8?q?ternions=20and=20versors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/documentation-eng.odt | Bin 0 -> 64728 bytes docs/quaternion-eng.md | 94 +++++++++++++++++++++++++++++++++++++ docs/quaternion-rus.md | 81 +++++++++++++------------------- 3 files changed, 126 insertions(+), 49 deletions(-) create mode 100644 docs/documentation-eng.odt create mode 100644 docs/quaternion-eng.md diff --git a/docs/documentation-eng.odt b/docs/documentation-eng.odt new file mode 100644 index 0000000000000000000000000000000000000000..01749e2ce2ed578e67e5be4ff9dc0a2322249ca3 GIT binary patch literal 64728 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 L8lm*w_1^yj*BcZI literal 0 HcmV?d00001 diff --git a/docs/quaternion-eng.md b/docs/quaternion-eng.md new file mode 100644 index 0000000..4d2db25 --- /dev/null +++ b/docs/quaternion-eng.md @@ -0,0 +1,94 @@ +# Quaternions + +If brief, quaternions are hypercompex numbers with one real component and three +complex components. Quaternions can be represented with formulas: + +![Definition of quaternions](./media/quaternion_definition.png) + +Where *q* is a quaternion, *w*, *x*, *y* and *z* are real numbers and *i*, *j* +and *k* are imaginary units. + +Quaternions can be represented with several ways. For example, a quaternion can +be represented as a tuple of four real numbers: + +![Quaternion as a tuple](./media/quaternion_vector4_form.png) + +In that case a quaternion reminds a four-dimensional vector. And quaternions do +have many similar features as four-dimensional vectors do. For example: + +* summation and subtraction of quaternions are same as for four-dimensional +vectors; +* multiplication and division of a quaternion at a real number are same +as for a four-dimensional vector; +* modulus of a quaternion is calculated the same way as for four-dimensional +vector. + +But the product of two quaternions is comletely different result than the dot +product of two four-dimensional vectors. + +Another way to represent a quaternion is a pair of a real number and +a three-dimensional vector: + +![Quaternion as a pair of a number and a vector](./media/quaternion_mixed_form.png) + +Quaternions have many interesting features. In geometry, quaternions are used +to represent and combine rotations in three-dimensional Euclidean space. + +Usually quaternions with unit modulus are used to represent rotations. Such +quaterions are named as [versors](./versor-eng.md). + +## Implementation of quaternions in the library + +There are two varians of implementation of quaternions in the library: +* quaternions +* versors + +The main difference implementation of quaternions and versors is that +the versors are designed for representation of rotations in +the three-dimensional Euclidean space while quaternions are implemented in +a more general sense. + +Versors are not possible to add and subtract. Versors cannot be mutiplied +or divided with a real number. But quaternions can be added and subtracted, +multiplied and divided with a number. + +But versors can be combined. It is the same operation as multiplication of +two quaternions but the function of combination of two versors watches that +the resulting versor has modulus equal to 1. + +All the functions which change the state of a versor keep the modulus of +a versor close to 1. + +There two structural types for quaternions: + + typedef struct { + float s0, x1, x2, x3; + } BgFP32Quaternion; + + typedef struct { + double s0, x1, x2, x3; + } BgFP64Quaternion; + + +And there are two strucutral types for versors: + + typedef struct { + const float s0, x1, x2, x3; + } BgFP32Versor; + + typedef struct { + const double s0, x1, x2, x3; + } BgFP64Versor; + +As you can see there is a difference in the definision of quaternions and +versors: the fields of versors are const while the fields of quaternions +are not const. + +This was done intensionally to make a developer to use special functions for +versors to set the state of a versor instead of direct setting of +the field values because versor functions keep the modulus of a versor equal +to 1. + +At the same time a developer can read the fields of a versor for his|her own +needs, for example, for saving a versor in a file or pass it via a network. + diff --git a/docs/quaternion-rus.md b/docs/quaternion-rus.md index f99be83..539738a 100644 --- a/docs/quaternion-rus.md +++ b/docs/quaternion-rus.md @@ -5,60 +5,36 @@ ![Определение кватерниона](./media/quaternion_definition.png) +Где *q* - это кватернион, *w*, *x*, *y* и *z* - это действительные числа, а *i*, +*j* и *k* - это мнимые единицы. + Кватернион можно представлять по-разному, например, в виде кортежа -(последовательности) из четырёх чисел также как четырёхмерный вектор: +(последовательности) из четырёх чисел: ![Кватернион-кортеж](./media/quaternion_vector4_form.png) -Можно представлять как пару из числа и трёхмерного вектора: +В такой форме кватернион напоминает четырёхмерный вектор. И кватернионы +действительно имеют ряд сходств с четрырёхмерными векторами, например: + +* сложение и вычитание кватернионов такие же, как и у четырёхмерных векторов; +* умножение и деление кватериона на действительное число такие же как и для +четырёхмерного вектора; +* взятие модуля кватерниона вычисляется также как и для четырёхмерного вектора. + +Но произведение кватернионов совершенно иное, чем скалярное произведение двух +четырёхмерных векторов. + +Ещё одним способом представления кватерниона является пара из действительного +числа и трёхмерного вектора: ![Кватернион как число и вектор](./media/quaternion_mixed_form.png) -Кватернионы можно легко вывести из обычных комплексных чисел. Обычные -комлексные числа в качестве в качестве компонент имеют вещественные -числа *a* и *b*: - -![Определение комплексного числа](./media/compex_number_000.png) - -Но, что если представить, что компоненты *a* и *b* тоже комплексные -числа, но с другой мнимой единицей *j* вместо *i*, при этом -мнимая единица *j* имеет такие же свойства, что и *i*: - -![Комплексная единица j](./media/imaginary_j.png) - -Тогда компоненты *a* и *b* можно представить следующим образом: - -![Комплексные компоненты](./media/compex_number_001.png) - -Если подставить их в формулу комплексного числа, то получается: - -![Гиперкомплексное число](./media/compex_number_002.png) - -В этом выражении наиболее интересно произведение мнимых единиц *ij*. Если -представить, что произведение антикоммутативно, то у произведения -получаются интересные свойства. - -![Антикоммутативность](./media/imaginary_anticommutative.png) - -Например, если взять квадрат произведения, то получается, что оно ведёт себя -как мнимая единица: - -![Квадрат произведения](./media/imaginary_anticommutative2.png) - -Таким образом, произведение мнимых единиц *ij* можно обозначить новой мнимой -единицей: - -![Новая мнимая единица](./media/imaginary_k.png) - -И тогда получается полноценный кватернион: - -![Кватернион](./media/quaternion_result.png) - Кватернионы обладают массой интересных свойств и применений. В геометрии -основным применением является описание поворотов в трёхмерном пространстве. +основным применением является описание поворотов в трёхмерном евклидовом +пространстве. -Кватернионы, которые описывают поворот в трёхмерном пространстве называются -[версорами](./versor-rus.md). +Обычно для представления поворотов используются кватернионы с модулем, равным +единице. Такие кватернионы называются [версорами](./versor-rus.md). ## Реализация кватернионов в библиотеке @@ -98,7 +74,14 @@ } BgFP64Versor; Уже в определении структур можно заметить разницу между в реализации -кватернионов и версоров: поля версоров объявлены как константы. -Это сделано намеренно, чтобы разработчик, использующий библиотеку мог считывать -данные из полей, но для изменения состояния версора прибегал к использованию -специальных функций, которые обеспечивают, чтобы модуль версора был равен 1. \ No newline at end of file +кватернионов и версоров: поля версоров объявлены как константы, в то время как +поля кватерниона не являются константами. + +Это сделано намеренно, чтобы побудить разработчика использовать функции для +версоров, вместо того, чтобы задавать значения полей напрямую, потому что +функции версоров обеспечивают, чтобы модуль версора был равен единице. + +В то же время, разработчик может обращаться к полям версора, чтобы получить +значения этих полей для своих целей, например, чтобы сохранить значение +версора в файле или передать по сети. +