рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА quaternions рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирддреЗ рд╣реИрдВ, рдФрд░ рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдбрд┐рдЬрд╛рдЗрдиреЛрдВ рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдЙрдардиреЗ рдХрд╛ рд╕рдордп рд╣реИ - рджреНрд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдПред
рдпрд╣ рд▓реЗрдЦ рдЙрдирдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдзреЛрдВ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдЕрд╡рдзрд╛рд░рдгрд╛ рджреЗрддрд╛ рд╣реИред рджреНрд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдХреИрдирд╡рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдирд┐рд░реНрдзрд╛рд░рдг biquaternion
Biquaternion рдПрдХ
рд╣рд╛рдЗрдкрд░рдХрдореНрдкрд▓реЗрдХреНрд╕ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЖрдпрд╛рдо 8. рд╣реИред рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХреЗ рд▓реЗрдЦреЛрдВ рдФрд░ рд╕рд╛рд╣рд┐рддреНрдп рдореЗрдВ рдЙрдиреНрд╣реЗрдВ "рджреЛрд╣рд░реА рдЪрддреБрд░реНрднреБрдЬ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд░реВрд╕реА-рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рд╣рд┐рддреНрдп рдореЗрдВ "рджреЛрд╣рд░реА рдЪрддреБрд░реНрднреБрдЬ" рдпрд╛ "рдЬрдЯрд┐рд▓ рдкреИрддреГрдХ" рдирд╛рдо рднреА рд╣реИрдВред
рдЪрддреБрд░реНрднреБрдЬ рд╕реЗ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЪрддреБрд░реНрдзрд╛рддреБрдХ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБ рдХреЗ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреНрд╡рд┐рдЕрд░реНрдереА рднреА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
Bateraternion рдХреЛ рджреЛ рдЙрджреНрдзрд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдбрдмреНрд▓реНрдпреВ рдореИрдВ d рдИ рдЯреА рдореИрдВ рдПрд▓ рдбреА рдИ рдЯреА рдИ рдПрдХреНрд╕ рдЯреА рдЦ рдЪ q = рд░реЛрдВ рдЯреА рдПрдХ рдЖрд░ рдЯреА рдмреА рдПрдо рдПрдХ рдЯреА рдЖрд░ рдореИрдВ рдПрдХреНрд╕ рдЯреА рдИ рдПрдХреНрд╕ рдЯреА рдЦ рдЪ рдХреНрд╖ 1 t e x t b f q q 2 e n d b m a t r i x ,
рдЯреА рдИ рдПрдХреНрд╕ рдЯреА рдЦ рдЪ рдХреНрд╖ 1 - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рдЧ, рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБ рдХреЗ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ;
textbfq2 - рджреЛрд╣рд░реЗ рднрд╛рдЧ, рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рджреНрд╡рд┐рд╡рдЪрди рдХреЛ рдЬрдЯрд┐рд▓ рдЪрддреБрд░реНрднреБрдЬ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕реЗ рдПрдХ рдЪрддреБрд░реНрднреБрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдПрдХ рджреЛрд╣рд░реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ (рдЬрдЯрд┐рд▓ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛)ред рджреЛрд╣рд░реА рд╕рдВрдЦреНрдпрд╛
A=a1+ epsilona2 рдЬрд╣рд╛рдБ
a1 рдФрд░
a2 рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВ, рдФрд░
epsilon - рдХреНрд▓рд┐рдлрд░реНрдб рдкреНрд░рддреАрдХ (рдЬрдЯрд┐рд▓рддрд╛), рд╕рдВрдкрддреНрддрд┐ рд░рдЦрдиреЗ
epsilon2=0 ред рд╣рдо рдЧрдгрд┐рдд рдореЗрдВ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд▓рд╛рдЧреВ рднрд╛рдЧ рдореЗрдВ рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдЖрдЧреЗ рд╣рдо рджреНрд╡рд┐рднреБрдЬ рдХреЛ рджреЛ рдЪрддреБрд░реНрднреБрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреЗрдВрдЧреЗред
рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдХреА рдЬреНрдпрд╛рдорд┐рддреАрдп рд╡реНрдпрд╛рдЦреНрдпрд╛
рдЪрддреБрд░реНрдзрд╛рддреБрдХ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╛рдЗрдХреЗрдЯрд░рд┐рдпрди рднреА рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдиреА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ - рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ред рдпрджрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЧрддрд┐рдХреА рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рджреНрд╡рд┐рднрд╛рдЬрди рджреЛ рдорд╛рддреНрд░рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЧрддрд┐ рдХрд╛ рд░реИрдЦрд┐рдХ рд╡реЗрдЧ рдФрд░ рд╡рд╕реНрддреБ рдХреЗ рд░реЛрдЯреЗрд╢рди рдХрд╛ рдХреЛрдгреАрдп рд╡реЗрдЧред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдВрдХрдбрд╝рд╛ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдХреЗ рдЬреНрдпрд╛рдорд┐рддреАрдп рдЕрд░реНрде рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рдЧреЗрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреНрд▓реЗрдЗрдВрдЧ рд╕реНрдкреЗрд╕ рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реЛрдЯреЗрд╢рди рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдФрд░ рд╡рд┐рд╕реНрдерд╛рдкрди рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░, рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдВрджреЛрд▓рди рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЖрджреА рд╣реИрдВ, рд╡реЗ рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ: рдкрд╣рд▓реЗ рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рдШреБрдорд╛рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдЗрди рджреЛ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рдПрдХ рдПрдХрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдПрдХ рдЬрдЯрд┐рд▓ рд╣рд╛рдЗрдкрд░рдкреНрд▓реЛрдордХреНрд╕ рд╣реЛред
рд╕реНрдХреЗрд▓рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ
рдореБрдЦреНрдп рдЕрджрд┐рд╢ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣рд╛рдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╡реЗ рд╕рд╛рдзрд╛рд░рдг рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдВ рдирд╣реАрдВ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рджреЛрд╣рд░реЗред
1. рдмрд╛рдЗрдХрд░рдиреЗрд╢рди рдХрд╛ рдорд╛рдирджрдВрдб
ред nрдЪреМрдбрд╝реА textbfq |= | textbfq1 |+ epsilon(q10q20+ textbfqT1 textbfq2)
2. рджреНрд╡рд┐рднрд╛рдЬрди рдореЙрдбреНрдпреВрд▓
| widetilde textbfq|=| textbfq1|+ epsilon fracq10q20+ textbfqT1 textbfq2| textbfq1
рдореВрд▓ рд╕рдВрдЪрд╛рд▓рди
рд╡рд┐рдЪрд┐рддреНрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ quaternions рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рдорд╛рди рд╣реИрдВред
1. рджреНрд╡рд┐рдЕрд░реНрдереА рдпреБрдЧреНрдорди
wideetilde textbfqтИЧ= startbmatrix textbfqтИЧ1 textbfqтИЧ2 endbmatrix
2. рджреНрд╡рд┐рднрд╛рдЬрди рдЬреЛрдбрд╝ рдФрд░ рдШрдЯрд╛рд╡
\ widetilde {\ textbf {q}} \ pm \ widetilde {\ textbf {p}} = \ start {bmatrix} \ textbf {q} _1 \ pm \ textbf {p} _1 \\ \ textbf {q} _2 \ _ \ _ pm \ textbf {p} _2 \ end {bmatrix}
рдЬреБрджрд╛рдИ рдФрд░ рдЬреЛрдбрд╝-рдШрдЯрд╛рд╡ рдХрдореНрдпреВрдЯреЗрдЯрд┐рд╡ рд╣реИ (рд╢рдмреНрджреЛрдВ рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
3. рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдмрд╣реБрд╡рдЪрди рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛
a widetilde textbfq= widetilde textbfqa= startbmatrixa textbfq1a textbfq2 endbmatrix
4. рджреНрд╡рд┐рдЕрд░реНрдереА рдЧреБрдгрди
\ wideetilde {\ textbf {q}} \ otimes \ widetilde {\ textbf {p}} = \ start {bmatrix} \ textbf {q} _1 \ otimes \ textbf (p) _1 \\ \ textbf {q} _1 \ _ \ _ otimes \ textbf {p} _2 + \ textbf {q} _2 \ otimes \ textbf {p} _1 \ end {bmatrix}
Biquaternion рдЧреБрдгрд╛ рдЧреИрд░-рдХрдореНрдпреВрдЯреЗрдЯрд┐рд╡ рд╣реИ (рдХрд╛рд░рдХреЛрдВ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде, biquaternion рдЧреБрдгрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ рд╣реИ)ред
рдпрд╣ рдСрдкрд░реЗрд╢рди рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╣реИ рдЬрдм рдмрд╛рдЗрдХреЗрдЯрд░рдирд┐рдпрдиреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рднреМрддрд┐рдХ рдЕрд░реНрде рдХреЛ рд╡рд╣рди рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рджреНрд╡рд┐рднрд╛рдЬрдХ рдЧреБрдгрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЛ рджреНрд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЗ рдШреБрдорд╛рд╡ рдФрд░ рд░реИрдЦрд┐рдХ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд╣реИред5. рд╡рд┐рдЪрд┐рддреНрд░рддрд╛ рдХрд╛ рдЙрд▓рдЯрд╛
\ Widetilde {\ textbf {q}} ^ {- 1} = \ frac {\ widetilde {\ textbf {q}} ^ *}} \ {| \ wideetilde {\ textbf {q}}
рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛрдгреЛрдВ рдФрд░ рд╕реНрдерд┐рддрд┐ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреНрд╡рд┐рдмреАрдЬрдкрддреНрд░реА рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБ рдХреЗ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рджреНрд╡рд┐рднреБрдЬ (рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдХреНрд╡рд╛рдЯрд░реНрдиреЗрд╢рди) рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд░реЛрдЯреЗрд╢рди рдХреНрд░рдо рдЬрд┐рд╕рдореЗрдВ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛрдгреЛрдВ рд╕реЗ рдкрд░рд┐рдгрд╛рдореА рдЪрддреБрд░реНрдзрд╛рддреБрдХрддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдо рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдХреЗ рдХреЛрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрдВрдЧреЗ - рдЬрдореН
psi , рдкрд┐рдЪ
рд╡рд░реНрддрддреЗ рдФрд░ рд░реЛрд▓ рдХрд░реЗрдВ
рдЧрд╛рдорд╛ ред
рдЖрдзрд╛рд░ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдк рдкреГрдереНрд╡реА рдХреА рд╕рддрд╣ рдкрд░ рдЦрдбрд╝реЗ рд╣реИрдВ рдФрд░ рдЙрддреНрддрд░ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред
рдмрд┐рдВрджреБ
O o - рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреА рдЙрддреНрдкрддреНрддрд┐, рд╡рд╕реНрддреБ рдХреА рдЙрддреНрдкрддреНрддрд┐ рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред
рдзреБрд░реА
O o Y g - рдЙрд░реНрдзреНрд╡рд╛рдзрд░ рдКрдкрд░ рдХреА рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реИ, рдФрд░ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рд╡реЗрдХреНрдЯрд░ рдХреА рджрд┐рд╢рд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред
рдЕрдХреНрд╖
O o X g - рд╕реНрдерд╛рдиреАрдп рдореЗрд░рд┐рдбрд┐рдпрди рдХреЗ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рдХреА рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реИред
рдПрдХреНрд╕рд┐рд╕
рдУ рдУ рдЬреЗрдб рдЬреА - рд╕рд┐рд╕реНрдЯрдо рдХреЛ рджрд╛рдИрдВ рдУрд░ рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реНрд╡ рдХреА рдУрд░ рджрд╛рдИрдВ рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдпрд╛ рдЕрдиреНрдп рд╡рд╕реНрддреБ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред
рдмрд┐рдВрджреБ
рдУ - рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреА рдЙрддреНрдкрддреНрддрд┐, рд╡рд╕реНрддреБ рдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред
рдУрдП рдЕрдХреНрд╖ - рд╡рд╕реНрддреБ рдХреЗ рдХреНрд╖реИрддрд┐рдЬ рддрд▓ рдкрд░ рд▓рдВрдмрд╡рдд рдКрдкрд░ рдХреА рдУрд░ рдФрд░ рд▓рдВрдмрд╡рдд рдирд┐рд░реНрджреЗрд╢рд┐рддред
рдПрдХреНрд╕рд┐рд╕
рдУрдПрдХреНрд╕ - рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рдордиреЗ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдирд┐рд░реНрджреЗрд╢рд┐рддред
рдУрдЬреЗрдб рдЕрдХреНрд╖ - рд╕рд┐рд╕реНрдЯрдо рдХреЛ рджрд╛рдИрдВ рдУрд░ рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реИред
рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЖрдзрд╛рд░ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдВрдмрджреНрдз рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреА рдЙрддреНрдкрддреНрддрд┐ (рдмрд┐рдВрджреБ
O ) рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рд╡реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рддреАрди рдХреНрд░рдорд┐рдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдпрд╡ рдХреЛрдг
psi - рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрд░реНрдгрди
рдУрдП ,
рдкрд┐рдЪ рдХреЛрдг
рд╡рд░реНрддрддреЗ - рдзреБрд░реА
OZ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░реЛрдЯреЗрд╢рди,
рд░реЛрд▓ рдХреЛрдг
рдЧрд╛рдорд╛ - рдЕрдХреНрд╖
OX рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордирд╛ред
рдмрд╛рдЗрдХрд░рдиреЗрд╢рди рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╛рдЗрдХреЗрдЯрд░рд┐рдпрди рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рджреЛрд╣рд░реЗ рднрд╛рдЧреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╕реНрдерд┐рддрд┐ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдзрд╛рд░ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
psi, vartheta, gamma рдФрд░ рджреНрд░рд╡реНрдпрдорд╛рди рдХреЗ рдХреЗрдВрджреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рд╡реЗрдХреНрдЯрд░
r=(rx,ry,rz)T ред
рдЕрд╕рд▓реА рд╣рд┐рд╕реНрд╕рд╛
textbfq1 рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
\ textbf {q} _1 = \ start {bmatrix} \ cos \ frac {\ psi} {2} \ cos \ frac {\ _ vartheta} {2} \ cos \ frac {\ _ \ _ рдЧрд╛рдорд╛} [2} & - & \ _ sin \ frac {\ psi} {2} \ sin \ frac {\ vartheta} {2} \ sin \ frac {\ gamma} {2} \\ \ cos \ frac {\ psi} {2} / cos \ frac { \ vartheta} {2} \ sin \ frac {\ gamma} {2} рдФрд░ + рдФрд░ \ sin \ frac {\ psi} {2} \ sin \ frac {\ vartheta} {2} \ cos \ frac {\ _ gma} {2} \\ \ cos \ frac {\ psi} {2} \ sin \ frac {\ vartheta} {2} \ sin \ frac {\ _ рдЧрд╛рдорд╛} {2} & + \ _ \ _ рдкрд╛рдк \ _ \ _} {psi} { 2} \ cos \ frac {\ vartheta} {2} \ cos \ frac {\ gamma} {2} \\ \ cos \ frac {\ psi} {2} \ sin \ frac {\ _ vartheta {2} \ cos \ frac {\ gamma} {2} & - & \ sin \ frac {\ _ psi} {2} \ cos \ frac {\ vartheta} {2} \ sin \ frac {\ gamma} {2} рдЕрдВрдд {bmatrix}
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рд░реЛрдЯреЗрд╢рди рдЕрдиреБрдХреНрд░рдо рд╣реИ, рддреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдВ рднреА рдЕрд▓рдЧ рд╣реЛрдВрдЧреАред
рджреЛрд╣рд░рд╛ рд╣рд┐рд╕реНрд╕рд╛
textbfq2 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд:
textbfq2= frac12 textbfr otimes textbfq1
рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛрдгреЛрдВ рдХреА рдЧрдгрдирд╛ рдФрд░ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕реЗ рд╕реНрдерд┐рддрд┐ рд╡реЗрдХреНрдЯрд░ред рдЙрд▓рдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди
рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдХреЛрдгреЛрдВ рдХреА рдЧрдгрдирд╛ рдЬреАрд╡рдордВрдбрд▓ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рдЧ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ
textbfq1 :
psi= arctan frac2(q0q2тИТq1q3)q20+q21тИТq22тИТq23
\ vartheta = \ arcsin {(2 (q_1 q_2 + q_0 q_3)) 2
Gamma= arctan frac2(q0q1тИТq2q3)q20тИТq21+q22тИТq23
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ:
textbfr=2 textbfq2 otimes textbfqтИТ11
рдкрд░рд┐рдгрд╛рдо рдЪрддреБрд░реНрдзрд╛рддреБрдХ рд░реВрдк рдореЗрдВ рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╣реИ
textbfr=(0,rx,ry,rz)$рд╕рджрд┐рд╢ рджреНрд╡рд┐рдЕрд░реНрдереА рдШреБрдорд╛рдПрдБ рдФрд░ рдШреБрдорд╛рдПрдБ
рджреНрд╡рд┐рдмреАрдЬрдкрддреНрд░реА рдХреЗ рдорд╣рд╛рди рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдФрд░ рдПрдХ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдШреБрдорд╛рд╡ рдФрд░ рдЖрдВрджреЛрд▓рди рд╣реИред
O o X X G Y G Z рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдзрд╛рд░ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рдФрд░
OXYZ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдХрдиреЗрдХреНрдЯреЗрдб рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рд╣реИред рддрдм рдЖрдзрд╛рд░ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд╕реНрддреБ рдХрд╛ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╕реНрдерд┐рддрд┐ рджреНрд╡рд┐рднреБрдЬ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
widetilde textbfq ред рдпрджрд┐ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ
textbfr рдПрдХ рдЬреБрдбрд╝реЗ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рдлрд┐рд░ рдЖрдк рдПрдХ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
textbfr0 рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЖрдзрд╛рд░ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ:
\ textbf {r} _0 = \ widetilde {\ textbf {q}} \ otimes \ textbf {r} \ otimes \ widetilde {\ textbf {q}} ^ {- 1 -
рдФрд░ рдкреАрдЫреЗ:
\ textbf {r} = \ widetilde {\ textbf {q}} ^ {- 1} \ otimes \ textbf {r} _0 \ otimes \ widetilde {\ textbf {q}:
рдЬрд╣рд╛рдБ
textbfr рд╡рд┐рдЪрд┐рддреНрд░ рд░реВрдк рдореЗрдВ рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╣реИ,
textbfr=(1,0,0,0,0,0,rx,ry,rz)Biquaternion рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде biquaternions рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕реЗ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреАрд╡рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп:
рд╕рдорд╛рд░реЛрд╣ | рд╡рд┐рд╡рд░рдг |
---|
DualQuaternion.dq | 8 рдирдВрдмрд░ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ Biquaternion рд╢рд░реАрд░ |
DualQuaternion(dq0, dq1, dq2, dq3, dq4, dq5, dq6, dq7) | рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЬреЛ рд╕рднреА рдЖрда рдирдВрдмрд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдПрдХ biquaternion рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ |
DualQuaternion.fromEulerVector(psi, theta, gamma, v) | рдпреВрд▓рд░ рдПрдВрдЧрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреЛрдЬреАрд╢рди рд╡реЗрдХреНрдЯрд░ рдХреЛ рд╕реЗрдЯ рдХрд░рдХреЗ рдмрд╛рдЗрдХреЗрдЯрд░рдирд┐рдпрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ |
DualQuaternion.getEulerVector() | рдИрдпреВрд▓рд░ рдПрдВрдЧрд▓ рдФрд░ рдкреЛрдЬрд╝рд┐рд╢рди рд╡реЗрдХреНрдЯрд░ рдХреЛ рдмрд╛рдЗрдХреЗрдЯрд░рд┐рдпрди рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ |
DualQuaternion.getVector() | рдмрд╛рдЗрдХрд░рдиреЗрд╢рди рд╕реЗ рд╕реНрдерд┐рддрд┐ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ |
DualQuaternion.getReal() | рдмрд╛рдЗрдХреЗрдЯрд░рд┐рдпрди рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБ рдХреЗ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ) |
DualQuaternion.getDual() | рджреНрд╡рд┐рд╡рд┐рднрд╛рдЬрди рдХрд╛ рджреЛрд╣рд░рд╛ рднрд╛рдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ) |
DualQuaternion.norm() | рджреНрд╡рд┐рдЕрд░реНрдереА рдорд╛рдирджрдВрдб рдХреЛ рдПрдХ рджреЛрд╣рд░реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ |
DualQuaternion.mod() | рджреНрд╡рд┐рдЕрд░реНрдереА рдореЙрдбреНрдпреВрд▓ рдХреЛ рджреЛрд╣рд░реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ |
DualQuaternion.conjugate() | рд╕рдВрдпреБрдЧреНрдорд┐рдд рджреНрд╡рд┐рд╡рд┐рднрд╛рдЬрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ |
DualQuaternion.inverse() | рдЙрд▓реНрдЯрд╛ Biquaternion рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ |
DualQuaternion.mul(DQ2) | рджреНрд╡рд┐рдмреАрдЬрдкрддреНрд░реА рдЧреБрдгрди |
DualQuaternion.toString() | рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд┐рдмрдЧ рдХрдВрд╕реЛрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдХрд░рдиреЗрдЯрд┐рдпрди рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓реЗрдВ |
рдлрд╝рд╛рдЗрд▓ dual_quaternion.js рджреНрд╡рд┐рд╡рд┐рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ biquaternions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЫреЛрдЯреЗ рдЦреЗрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЖрдпрддрд╛рдХрд╛рд░ рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рд╣реИ - рдирдХреНрд╢рд╛ред рдирдХреНрд╢реЗ рдкрд░ рддреИрд░рдиреЗ рд╡рд╛рд▓реА рд░реЛрдЯрд░реА рдмрдВрджреВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╣рд╛рдЬ рддреИрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЬрд╣рд╛рдЬ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдирдХреНрд╢реЗ рдХреА рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рдФрд░ рдмрдВрджреВрдХ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдЬрд╣рд╛рдЬ рд╣реИред рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдореИрдк рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдмреИрдХреБрдВрда рдЧреБрдгрди рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрди рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдореИрдк рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд╣рд╛рдЬ рдХреА рдЪрд╛рд▓ рдХреЛ рдбрдмреНрд▓реНрдпреВ, рдП, рдПрд╕, рдбреА рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдВрджреВрдХ рдХреА рджрд┐рд╢рд╛ рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред

рдЬрд╣рд╛рдЬ рдФрд░ рдмрдВрджреВрдХ рджреЛ рд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ:
Ship
рдФрд░
Gun
ред рд╢рд┐рдк рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдмрд╛рдЗрдХреЗрдЯрд░рдирд┐рдпрди рдкреЙрдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░, рдЗрд╕.
this.dq_pos
рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдк рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдФрд░ рд╕реНрдерд┐рддрд┐
this.dq_pos
ред
рдЬрд╣рд╛рдЬ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рджреНрд╡рд┐рдЕрд░реНрдереА рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рднреА рджреА рдЬрд╛рддреА рд╣реИред рдЬрдм рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдХреА (рдХреАрдЬрд╝ W, S) рдЪрд▓рддреА рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рджреНрд╡рд┐рднреБрдЬ рдХрд╛ рджреЛрд╣рд░рд╛ рднрд╛рдЧ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЬрдм рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ (рдХреБрдВрдЬрд┐рдпрд╛рдБ A, D) рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рджреНрд╡рд┐рднреБрдЬ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рджреЛрд╣рд░рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдШреВрд░реНрдгрди рдХреЛрдг рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
function Ship(ctx, v) { this.ctx = ctx; this.dq_pos = new DualQuaternion.fromEulerVector(0*Math.PI/180, 0, 0, v);
рдХрдХреНрд╖рд╛ рдореЗрдВ рд╣реА,
Ship.draw()
рдЬрд╣рд╛рдЬ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдп рд╣реИред рдЬрд╣рд╛рдЬ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ biquaternion рдФрд░ рдЬрд╣рд╛рдЬ рдХреЗ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ biquaternion рдСрдкрд░реЗрд╢рди рдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
Ship.prototype = { 'ctx': 0, 'dq_pos': new DualQuaternion.fromEulerVector(0, 0, 0, 0, 0, 0), 'draw': function() {
рдЧрди рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдмрд╛рдЗрдХреЗрдЯрд░рдирд┐рдпрди рдкреЙрдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рдмрдВрджреВрдХ рдХреЛ рдПрдХ рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрд╣рд╛рдЬ рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╕реНрдерд┐рддрд┐ рдЗрд╕.
this.dq_pos
рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЧрдИ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд┐рд╕ рдЬрд╣рд╛рдЬ рдкрд░ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рднреА рд╕реЗрдЯ рд╣реИред рдЬрд╣рд╛рдЬ рдкрд░ рд▓рдЧреА рдмрдВрджреВрдХ рдХреЗрд╡рд▓ рдШреВрдо рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрдВрджреВрдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рджреНрд╡рд┐рднрд╛рдЬрд┐рдд рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗрд╡рд▓ рдмрд╛рдЗрдХреЗрдЯрд░рдирд┐рдпрди рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдмрджрд▓ рджреЗрдЧреА, рдЬреЛ рд░реЛрдЯреЗрд╢рди рдХреЗ рдХреЛрдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрдВрджреВрдХ рдХрд╛ рд░реЛрдЯреЗрд╢рди рддреБрд░рдиреНрдд рд╣реЛрдЧрд╛ред
function Gun(ctx, ship, v) { this.ctx = ctx; this.ship = ship;
рдмрдВрджреВрдХ рд╡рд░реНрдЧ рдореЗрдВ, рдЗрд╕рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдп
Ship.draw()
рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдВрджреВрдХ рдХреЛ рдПрдХ рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рджреЛ рдмрд┐рдВрджреБрдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
this.dq_backward
рдФрд░
this.dq_forward
ред рдмрдВрджреВрдХ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреНрд╡рд┐рдмреАрдЬрдкрддреНрд░реА рдЧреБрдгрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Gun.prototype = { 'ctx': 0, 'ship': 0, 'dq_pos': new DualQuaternion.fromEulerVector(0, 0, 0, [0, 0, 0]), 'draw': function() {
рдШрдЯрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╣рд╛рдЬ рдФрд░ рдмрдВрджреВрдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪрд╛рд░ рдЪрд░
leftPressed, upPressed, rightPressed, downPressed
, рдЬреЛ рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдЬ рдирд┐рдпрдВрддреНрд░рдг рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдиреЗ рдФрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред
leftPressed = false; rightPressed = false; upPressed = false; downPressed = false; dq_mouse_pos = new DualQuaternion.fromEulerVector(0, 0, 0, [0, 0, 0]); document.addEventListener("keydown", keyDownHandler, false); document.addEventListener("keyup", keyUpHandler, false); document.addEventListener("mousemove", mouseMoveHandler, false);
рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдмрд╛рдЗрдХреЗрдЯрд░рдирд┐рдпрди рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдорд╛рдЙрд╕ рдкреЙрдЗрдВрдЯрд░ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╣рд╛рдЬ рдХреА рдмрдВрджреВрдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдорд╛рдЙрд╕ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ
dq_mouse_pos
рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдлрд┐рд░, рдЬрд╣рд╛рдЬ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдорд╛рдЙрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рджреНрд╡рд┐рднрд╛рдЬрдХ рдХреА рдЧрдгрдирд╛ рджреНрд╡рд┐рднрд╛рдЬрди рдЧреБрдгрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЬрд╛рддреА рд╣реИред рдЬрд╣рд╛рдЬ рдХрд╛
dq_mouse_pos_about_ship = ship_1.dq_pos.inverse().mul(dq_mouse_pos);
рдорд╛рдЙрд╕
dq_mouse_pos_about_ship = ship_1.dq_pos.inverse().mul(dq_mouse_pos);
(рдиреЛрдЯ: рдЕрдиреБрдХреНрд░рдорд┐рдХ рджреНрд╡рд┐рдмреАрдЬрдкрддреНрд░реА рдЧреБрдгрди рд╕рдВрдЪрд╛рд▓рдиреЛрдВ рдХреЛ рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рдкрдврд╝рд╛ рдЧрдпрд╛)ред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЙрдкрдХрд░рдг рдФрд░ рдорд╛рдЙрд╕ рдХреЗ рд╡реИрдХреНрдЯрд░ рдХреЗ рдмреАрдЪ рдХрд╛ рдХреЛрдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдВрджреВрдХ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ
gun_1.dq_backward
рдкреНрд░рд╛рдкреНрдд рдорд╛рди рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
function mouseMoveHandler(e) { var relativeX = e.clientX - canvas.offsetLeft; var relativeY = e.clientY - canvas.offsetTop;
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдореБрдЦреНрдп рдирд┐рдХрд╛рдп рдореЗрдВ, рдЬрд╣рд╛рдЬ рдФрд░ рдмрдВрджреВрдХреЗрдВ
ship_1
рдФрд░
gun_1
, рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЬрд╣рд╛рдЬ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); ship_1 = new Ship(ctx, [100, 0, 100]); gun_1 = new Gun(ctx, ship_1, [0, 0, 0]); function draw() { ctx.clearRect(0, 0, canvas.width, canvas.height); ship_1.draw(); gun_1.draw();
рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдВрдХ рдореЗрдВ quaternions рдФрд░ biquaternions, рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реА рдФрд░ index.html рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рд╣реИ, рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рджреНрд╡рд┐рд╡рд┐рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгрдирд┐рд╖реНрдХрд░реНрд╖
рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╢реНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдЬрдм рдЖрдк рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рдФрд░ рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдРрд╕реЗ рдЬрдЯрд┐рд▓ рдЧрдгрд┐рддреАрдп рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ? рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЗрдЦрди рдХрд╛ рджреНрд╡рд┐рднрд╛рдЬрд┐рдд рд░реВрдк рдЕрдзрд┐рдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд░реВрдк рд╕реЗ рдХреБрд╢рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рднрд╛рд╡реЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рд╕рдВрдЪрд╛рд▓рди рд░реИрдЦрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рд╡реАрдбрд┐рдпреЛ,
рдЬрд┐рдпреЛрдореЗрдЯреНрд░рд┐рдХ рд╕реНрдХрд┐рдирд┐рдВрдЧ рд╡рд┐рде рдПрдкреНрд░реЛрдХреНрд╕рд┐рдореЗрдЯ рдбреНрдпреВрд▓ рдХреНрд╡рд╛рдЯрд░реНрдирд┐рдпрди рдмреНрд▓реЗрдВрдбрд┐рдВрдЧ, рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ рджреНрд╡рд┐рднрд╛рдЬрди рдЧрдгрдирд╛ред
рдореИрдВрдиреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реНрд░реЛрддреЛрдВ рд╕реЗ biquaternions рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реАред
рдШрд░реЗрд▓реВ рд╕рд╛рд╣рд┐рддреНрдп рд╕реЗ, рдореИрдВ рджреЛ рдкреБрд╕реНрддрдХреЛрдВ рдХреА рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ:
- рдЪреЗрд▓рдиреЛрдХреЛрд╡ рдпреВрд░реА рдирд┐рдХреЛрд▓рд╛рдЗрд╡рд┐рдЪред рдЪрддреБрд░реНрдзрд╛рддреБрдХ рдФрд░ рджреНрд╡рд┐рд╡рд╛рд░реНрд╖рд┐рдХ рдореЙрдбрд▓ рдФрд░ рдареЛрд╕ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рддрд░реАрдХреЗ рдФрд░ рдЙрдирдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧред рдЧрддрд┐ рдХреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдФрд░ рдХреАрдиреЗрдореЗрдЯреАрдХреНрд╕ред - рд╕реНрдорд╛рд░рдХреАрдп рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдХрд╛рд░реНрдпред
- рдЧреЛрд░реНрдбреАрд╡ рд╡рд╛рджрд┐рдо рдирд┐рдХреЛрд▓рд╛рдЗрд╡рд┐рдЪред рдЬреНрдпрд╛рдорд┐рддрд┐ рдФрд░ рдпрд╛рдВрддреНрд░рд┐рдХреА рдореЗрдВ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдЪрддреБрд░реНрдзрд╛рддреБрдХ рдФрд░ рджреНрд╡рд┐рд╡рдЪрдиред - рдпрд╣ рдПрдХ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдШреБрдорд╛рд╡рджрд╛рд░ рд╕реНрдерд╛рдирд┐рдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред