3.5.7 · D3 · Physics › Guidance, Navigation & Control (GNC) › Quaternion product — Hamilton product
Intuition Yeh page kya hai
Parent note ne rule banaya tha. Yahan hum usse drill karte hain. Har quaternion product jo tum GNC (Guidance, Navigation & Control — woh on-board maths jo spacecraft ya drone ko sahi direction mein rakhti hai) mein kabhi bhi dekhoge, woh kuch giney-chune case classes mein se ek hoga — parallel axes, perpendicular axes, identity, pure vectors, non-commuting pairs, sandwich rotation, aur woh limiting "tiny angle" case jisme gyro integrators rehte hain. Hum har class ka ek fully-solved example karte hain taaki jab tumhara filter raat ke 3 baje koi case de, tumne uski shape pehle se dekhi ho.
Notation reminder (kuch naya nahi assume kiya): ek quaternion hai q = ( w , v ) jahan w ek plain number hai (scalar part ) aur v = ( x , y , z ) 3D mein ek arrow hai (vector part ). Ek hi quaternion likhne ke do tarike neeche aate hain — hamesha same component order mein:
paired form q = ( w , ( x , y , z )) — pehle scalar, phir arrow ke teen components brackets mein;
flat form q = ( w , x , y , z ) — wahi chaar numbers bina inner brackets ke.
Ye same object hain; ( w , x , y , z ) ka matlab bas ( w , ( x , y , z )) hai. Scalar hamesha pehli slot mein hota hai, aur vector components hamesha x , y , z order mein hote hain. Kisi letter par hat , jaise n ^ , ka matlab hai "is arrow ki length exactly 1 hai" — ek pure direction bina kisi size ke; coordinate directions x ^ = ( 1 , 0 , 0 ) , y ^ = ( 0 , 1 , 0 ) , z ^ = ( 0 , 0 , 1 ) axes ke saath standard unit arrows hain. Product rule, jise hum neeche baar baar USE karte hain, hai
pq = ( scalar w 1 w 2 − v 1 ⋅ v 2 , vector w 1 v 2 + w 2 v 1 + v 1 × v 2 )
Har Hamilton-product situation is table ki ek row hai. Neeche ke examples har cell ko cover karte hain. (q ˉ = conjugate ( w , − v ) jo neeche wale box mein define hai.)
#
Case class
Kya special hai
Example
A
Identity element
ek factor 1 = ( 1 , 0 ) hai
Ex 1
B
Pure imaginary × pure imaginary, perpendicular
dono scalars 0 , axes ⊥ → dot = 0
Ex 2
C
Pure imaginary, parallel/equal axes
dono scalars 0 , axes parallel → cross = 0
Ex 3
D
Order swap (non-commutativity)
pq aur q p compute karo, compare karo
Ex 4
E
Do real rotations, general axes
full formula, teeno terms nonzero
Ex 5
F
Sandwich (rotate a vector) q u q ˉ
conjugate q ˉ neeche wale box se; do products, length preserved
Ex 6
G
Sign / negative-scalar (half-angle > 18 0 ∘ )
cos 2 θ < 0 ; double-cover q ≡ − q
Ex 7
H
Limiting case: infinitesimal rotation
θ → 0 , gyro integration se link
Ex 8
I
Exam twist: unknown factor solve karo
diya q p = r , inverse se p nikalo
Ex 9
Do building blocks jo hum baar baar use karte hain:
1 se multiply karo (dono sides par)
q ⋅ 1 aur 1 ⋅ q compute karo jahan q = ( w , v ) arbitrary hai aur 1 = ( 1 , ( 0 , 0 , 0 )) .
Forecast: guess karo — kya "number one" se multiply karne par kuch change hoga, aur kya side matter karti hai?
q ⋅ 1 scalar part = w ⋅ 1 − v ⋅ 0 = w .
Yeh step kyun? Kisi bhi arrow ko zero arrow ke saath dot karne par 0 milta hai, toh koi scalar andar nahi aata.
q ⋅ 1 vector part = w 0 + 1 v + v × 0 = v .
Yeh step kyun? Zero arrow ke saath cross zero hota hai; ek hi survivor hai 1 ⋅ v . Toh q ⋅ 1 = ( w , v ) = q .
1 ⋅ q scalar part = 1 ⋅ w − 0 ⋅ v = w .
Yeh step kyun? Ab 1 pehla factor hai; uska vector part 0 hai, toh dot term phir bhi 0 hai. Dot ka order matter nahi karta (dot symmetric hai).
1 ⋅ q vector part = 1 v + w 0 + 0 × v = v .
Yeh step kyun? Cross term hai 0 × v = 0 — yahi ek term tha jo symmetry tod sakti thi, aur woh vanish ho gayi. Toh 1 ⋅ q = ( w , v ) = q bhi.
Verify: q ⋅ 1 = 1 ⋅ q = q . Identity 1 woh ek factor hai jo sab kuch ke saath commute karta hai — isliye nahi ki non-commutativity band ho gayi, balki isliye ki iska cross term hamesha zero hota hai. Baaki har pair mein order-dependence rehti hai jo hum Ex 4 mein exploit karte hain.
Worked example Ex 2 — formula se
i j
p = i = ( 0 , ( 1 , 0 , 0 )) , q = j = ( 0 , ( 0 , 1 , 0 )) .
Forecast: parent kehta hai ij = k . Formula ka kaunsa term ise produce karta hai — dot ya cross?
Scalar = 0 ⋅ 0 − ( 1 , 0 , 0 ) ⋅ ( 0 , 1 , 0 ) = 0 − 0 = 0 .
Yeh step kyun? Dono axes 9 0 ∘ par hain; perpendicular arrows ka dot product zero hota hai, toh koi scalar nahi aata.
Vector = 0 ⋅ ( 0 , 1 , 0 ) + 0 ⋅ ( 1 , 0 , 0 ) + ( 1 , 0 , 0 ) × ( 0 , 1 , 0 ) .
Yeh step kyun? Dono scalars 0 hain, toh do weighting terms vanish ho jaate hain; bas cross bachta hai.
( 1 , 0 , 0 ) × ( 0 , 1 , 0 ) = ( 0 , 0 , 1 ) right-hand rule se (x ^ × y ^ = z ^ ).
Result = ( 0 , ( 0 , 0 , 1 )) = k . ✅
Figure — kya dekh rahe ho: x ke saath black arrow i hai, y ke saath black arrow j hai. Jahan ye milte hain wahan ek small right-angle mark hai jis par "9 0 ∘ (dot = 0 )" likha hai. Red arrow result k = i × j hai, x –y plane se bahar right-hand rule se point kar raha hai. Red = woh answer jo humne banaya.
Verify: multiplication table ij = k se match karta hai. Length: ∣ k ∣ = 1 , aur ∣ i ∣∣ j ∣ = 1 , toh length preserved hai — ek healthy sign.
i ⋅ i (same axis)
p = q = i = ( 0 , ( 1 , 0 , 0 )) .
Forecast: do identical pure vectors — ek vector ko khud se cross karne par kya milta hai?
Scalar = 0 − ( 1 , 0 , 0 ) ⋅ ( 1 , 0 , 0 ) = − 1 .
Yeh step kyun? Ek arrow ko khud se dot karne par uska length-squared milta hai = 1 ; formula isse subtract karta hai, giving − 1 . Yahaan se i 2 = − 1 geometry se paida hota hai.
Vector = 0 + 0 + ( 1 , 0 , 0 ) × ( 1 , 0 , 0 ) = ( 0 , 0 , 0 ) .
Yeh step kyun? Koi bhi vector khud se cross karne par zero deta hai (jo parallelogram ye banate hain uska area zero hai). Toh koi vector part nahi.
Result = ( − 1 , 0 ) = − 1 . ✅ (i 2 = − 1 .)
Verify: yeh Hamilton ka rule i 2 = − 1 purely "dot of self = 1 , cross of self = 0 " se reproduce karta hai. Wahi j 2 aur k 2 ke liye bhi kaam karta hai. Parallel axes → cross term marta hai, dot term dominate karta hai .
ij aur j i compare karo
Dono products compute karo aur subtract karo.
Forecast: kya ij equal hoga j i ke? Agar nahi, toh farq kahaan se aayega?
ij = ( 0 , ( 0 , 0 , 1 )) = k (Ex 2 se).
j i : scalar = 0 − ( 0 , 1 , 0 ) ⋅ ( 1 , 0 , 0 ) = 0 (abhi bhi perpendicular).
Yeh step kyun? Dot symmetric hai, toh order swap karne par badlta nahi — scalar part kabhi disagreement cause nahi kar sakta.
j i ka vector = ( 0 , 1 , 0 ) × ( 1 , 0 , 0 ) = ( 0 , 0 , − 1 ) .
Yeh step kyun? Cross product anti-symmetric hai: b × a = − ( a × b ) . Swap karne par sign flip ho jaati hai.
j i = ( 0 , ( 0 , 0 , − 1 )) = − k .
ij − j i = k − ( − k ) = 2 k = 0 . Non-commutative. ✅
Figure — kya dekh rahe ho: black arrows a (x ke saath) aur b (y ke saath) do factors hain. Red arrow upar ki taraf ij = + k hai; red arrow neeche ki taraf j i = − k hai. Same do black inputs, opposite red outputs — jab tum order swap karte ho toh red arrow literally reverse ho jaata hai. Red = (order-dependent) answer.
Verify: ij = − j i , exactly parent se match karta hai. Cross term akela culprit hai — dot term dono taraf identical tha. Yeh algebraic pedantry nahi hai: yeh kehta hai "yaw-then-roll ≠ roll-then-yaw," 3D orientation ke baare mein ek physical fact.
z ke baare mein 9 0 ∘ , phir x ke baare mein 9 0 ∘
Angle θ ke liye unit axis n ^ ke baare mein unit quaternion (hat ka matlab ∣ n ^ ∣ = 1 ): q = ( cos 2 θ , sin 2 θ n ^ ) .
q z = ( 2 1 , 0 , 0 , 2 1 ) , q x = ( 2 1 , 2 1 , 0 , 0 ) (flat form: scalar, phir x , y , z ). q x q z compute karo ("pehle z , phir x ").
Forecast: yahaan teeno formula terms nonzero hain — genuinely "mixed" quaternion expect karo.
Scalar = 2 1 ⋅ 2 1 − ( 2 1 , 0 , 0 ) ⋅ ( 0 , 0 , 2 1 ) = 2 1 − 0 = 2 1 .
Yeh step kyun? Dono axes x ^ aur z ^ perpendicular hain → unka dot 0 hai, toh bas w 1 w 2 half-angle product bachta hai.
Vector = w 1 v 2 2 1 ( 0 , 0 , 2 1 ) + w 2 v 1 2 1 ( 2 1 , 0 , 0 ) + v 1 × v 2 ( 2 1 , 0 , 0 ) × ( 0 , 0 , 2 1 ) .
Yeh step kyun? Dono scalars ab nonzero hain, toh do weighting terms cross ke saath survive karte hain.
= ( 0 , 0 , 2 1 ) + ( 2 1 , 0 , 0 ) + ( 0 , − 2 1 , 0 ) — note x ^ × z ^ = − y ^ .
Sum = ( 2 1 , − 2 1 , 2 1 ) . Toh q x q z = ( 2 1 , 2 1 , − 2 1 , 2 1 ) flat form mein.
Verify: norm = 4 ⋅ 4 1 = 1 ✅ — unit quaternions ka product ek unit quaternion hota hai, toh yeh valid rotation hai. Yeh woh workhorse case hai jo ek filter har millisecond run karta hai.
u = ( 1 , 0 , 0 ) ko z ke baare mein 9 0 ∘ rotate karo
u = ( 0 , ( 1 , 0 , 0 )) embed karo. q z = ( 2 1 , 0 , 0 , 2 1 ) aur uska conjugate q ˉ z = ( 2 1 , 0 , 0 , − 2 1 ) use karo (Conjugate box se: same scalar, negated vector). u ′ = q z u q ˉ z compute karo.
Forecast: x -axis ko z ke baare mein 9 0 ∘ rotate karne par y -axis par land karna chahiye. Dekho length 1 rahe.
Pehla product a = q z u . Scalar = 2 1 ⋅ 0 − ( 0 , 0 , 2 1 ) ⋅ ( 1 , 0 , 0 ) = 0 .
Yeh step kyun? Hum do half-steps mein rotate karte hain; q u pehla squeeze hai. Axis z ^ ⊥ x ^ toh dot = 0 .
a ka vector = 2 1 ( 1 , 0 , 0 ) + 0 + ( 0 , 0 , 2 1 ) × ( 1 , 0 , 0 ) = ( 2 1 , 0 , 0 ) + ( 0 , 2 1 , 0 ) = ( 2 1 , 2 1 , 0 ) .
Toh a = ( 0 , ( 2 1 , 2 1 , 0 )) .
Doosra product u ′ = a q ˉ z . Scalar = 0 ⋅ 2 1 − ( 2 1 , 2 1 , 0 ) ⋅ ( 0 , 0 , − 2 1 ) = 0 .
Yeh step kyun? Result ka scalar 0 hona chahiye ek pure vector ke liye — ek built-in sanity check.
u ′ ka vector = 0 + 2 1 ( 2 1 , 2 1 , 0 ) + ( 2 1 , 2 1 , 0 ) × ( 0 , 0 , − 2 1 ) .
Yeh step kyun? Yeh doosra half-turn hai: w 2 v 1 a ke arrow ko q ˉ z ke scalar se scale karta hai, aur cross term woh sideways twist add karta hai jo q ˉ z contribute karta hai. Saath mein do half-turns poore 9 0 ∘ mein compose ho jaate hain.
Cross = ( 2 1 ⋅ ( − 2 1 ) − 0 , 0 − 2 1 ⋅ ( − 2 1 ) , 0 ) = ( − 2 1 , 2 1 , 0 ) .
Sum = ( 2 1 , 2 1 , 0 ) + ( − 2 1 , 2 1 , 0 ) = ( 0 , 1 , 0 ) .
u ′ = ( 0 , ( 0 , 1 , 0 )) ⇒ u ′ = ( 0 , 1 , 0 ) = y ^ . ✅
Figure — kya dekh rahe ho: x ke saath black arrow input u = ( 1 , 0 , 0 ) hai; dashed black arc z ke baare mein + 9 0 ∘ sweep hai; red arrow y ke saath output u ′ = ( 0 , 1 , 0 ) hai. Same length, quarter turn — red = jahan vector land karta hai.
Verify: ∣ u ′ ∣ = 1 = ∣ u ∣ (length preserved), aur x ^ , y ^ par gaya exactly jaise ek + 9 0 ∘ turn z ke baare mein hona chahiye. q ke andar half-angle wahi hai jo do half-turns ko ek full rotation mein compose karta hai.
z ke baare mein 27 0 ∘ rotation
θ = 27 0 ∘ ⇒ 2 θ = 13 5 ∘ , cos 13 5 ∘ = − 2 1 , sin 13 5 ∘ = + 2 1 .
Toh q = ( − 2 1 , 0 , 0 , 2 1 ) (flat form).
Forecast: z ke baare mein 27 0 ∘ turn wahi physical orientation hai jaise − 9 0 ∘ z ke baare mein. Kya dono quaternions equal dikhenge — ya opposite?
− 9 0 ∘ z ke baare mein quaternion: 2 θ = − 4 5 ∘ , giving q ′ = ( 2 1 , 0 , 0 , − 2 1 ) .
Yeh step kyun? Hum ek hi physical turn ke do naamon ko compare kar rahe hain.
Compare karo: q = ( − 2 1 , 0 , 0 , 2 1 ) aur − q ′ = ( − 2 1 , 0 , 0 , 2 1 ) . Ye equal hain, yaani q = − q ′ .
Yeh step kyun? Har rotation ke do quaternions hote hain, q aur − q — yeh double cover hai. Ek negative scalar bas matlab hai ki half-angle 9 0 ∘ se aage gaya.
Prove karo ki ye identically act karte hain x ^ = ( 1 , 0 , 0 ) ko q se sandwich karke. Pehle a = q x jahan x = ( 0 , ( 1 , 0 , 0 )) : scalar = 0 − ( 0 , 0 , 2 1 ) ⋅ ( 1 , 0 , 0 ) = 0 ; vector = − 2 1 ( 1 , 0 , 0 ) + 0 + ( 0 , 0 , 2 1 ) × ( 1 , 0 , 0 ) = ( − 2 1 , 2 1 , 0 ) , toh a = ( 0 , ( − 2 1 , 2 1 , 0 )) .
Yeh step kyun? "Same rotation" ka sabse honest test yeh hai: kya ye ek basis vector ko same tarike se move karte hain?
Phir x ′ = a q ˉ with q ˉ = ( − 2 1 , 0 , 0 , − 2 1 ) : scalar = 0 − ( − 2 1 , 2 1 , 0 ) ⋅ ( 0 , 0 , − 2 1 ) = 0 ; vector = − 2 1 ( − 2 1 , 2 1 , 0 ) + ( − 2 1 , 2 1 , 0 ) × ( 0 , 0 , − 2 1 ) = ( 2 1 , − 2 1 , 0 ) + ( − 2 1 , − 2 1 , 0 ) = ( 0 , − 1 , 0 ) .
Toh x ^ ↦ ( 0 , − 1 , 0 ) = − y ^ . z ke baare mein 27 0 ∘ (equivalently − 9 0 ∘ ) turn x ^ ko − y ^ par bhejta hai. ✅
Verify: ∣ q ∣ = 2 1 + 2 1 = 1 ✅, aur dono q aur q ′ = − q x ^ → − y ^ bhejte hain (tum identical vector paate ho kyunki ( − q ) u ( − q ) = q u q − 1 — do minus signs cancel ho jaate hain). Negative w kabhi "galat" nahi hota; yeh do valid labels mein se ek hai. Filters q → − q flip karte hain jab w < 0 ho, shortest-path representation rakhne ke liye.
Worked example Ex 8 — infinitesimal update,
θ → 0
Ek gyro angular velocity ω report karta hai ek tiny time Δ t par, giving ek small rotation of angle θ = ∣ ω ∣Δ t axis n ^ ke baare mein. θ = 0.01 rad lao n ^ = ( 0 , 0 , 1 ) ke baare mein aur ise q 0 = 1 = ( 1 , 0 ) par multiply karo.
Forecast: ek tiny angle ke liye, cos 2 θ aur sin 2 θ ka kya hota hai? Approximate quaternion guess karo.
Taylor-expand karo: cos 2 θ = 1 − 2 1 ( 2 θ ) 2 + O ( θ 4 ) aur sin 2 θ = 2 θ − 6 1 ( 2 θ ) 3 + O ( θ 5 ) . Hum bas leading terms rakhte hain: cos 2 θ ≈ 1 (error ∼ θ 2 /8 ) aur sin 2 θ ≈ 2 θ (error ∼ θ 3 /48 ).
Yeh step kyun? Jo terms neglect kiye hain woh O ( θ 2 ) aur chote hain; θ ≲ 0.1 rad (≈ 6 ∘ , ek typical gyro step) ke liye relative error 8 0. 1 2 ≈ 0.13% se kam hai, sensor noise se safely neeche — toh linearization exactly us regime mein trustworthy hai jahan use hoti hai.
Small quaternion banao. n ^ = ( 0 , 0 , 1 ) aur 2 θ = 0.005 ke saath:
δ q = ( cos 2 θ , sin 2 θ n ^ ) ≈ ( 1 , ( 0 , 0 , 0.005 ) ) , δ q = ( 1 , 0 , 0 , 0.005 ) (flat form).
Numerically cos 0.005 ≈ 0.99998750 aur sin 0.005 ≈ 0.00499998 , dono rakhe gaye values par round ho jaate hain.
Yeh step kyun? Yeh linear approximation hai jo gyro integrators actually store karte hain: scalar ≈ 1 , vector ≈ 2 1 ω Δ t .
Current attitude q 0 = 1 par update apply karo: q 1 = δ q q 0 = δ q ⋅ 1 = δ q = ( 1 , 0 , 0 , 0.005 ) .
Yeh step kyun? Case A (Ex 1) se, identity 1 se multiply karne par δ q unchanged rehta hai — toh naya attitude bas δ q hi hai. "No rotation" se shuru karke, ek tiny step hai woh tiny rotation.
Renormalize karo: ∣ δ q ∣ = 1 2 + 0.00 5 2 = 1.000025 ≈ 1.0000125 , toh q 1 ← q 1 /∣ q 1 ∣ ≈ ( 0.99998750 , 0 , 0 , 0.00499994 ) .
Yeh step kyun? O ( θ 2 ) term drop karne se δ q thoda off-unit rah gaya (norm > 1 by ∼ 1.25 × 1 0 − 5 ); norm se divide karne par ek valid rotation restore hoti hai (parent ki "renormalize" warning in action).
Verify: stored vector part 2 1 θ = 0.005 , 2 1 ∣ ω ∣Δ t se exactly match karta hai — yeh kinematics $\dot q=\tfrac12 q\,\omega$ recover karta hai. Jab θ → 0 : cos 2 θ → 1 , sin 2 θ → 0 , toh δ q → ( 1 , 0 ) = 1 — no rotation, no change. Smooth limiting behaviour ✅.
Worked example Ex 9 — diya
q p = r , p nikalo
Tumhe total rotation r = k = ( 0 , ( 0 , 0 , 1 )) aur last-applied factor q = i = ( 0 , ( 1 , 0 , 0 )) pata hai, jabki first-applied factor p unknown hai. p nikalo.
Forecast: q ke left multiplication ko "undo" karne ke liye, hum kya multiply karte hain, aur kis side par?
q p = r se, dono sides ko left-multiply karo q − 1 se: q − 1 q p = q − 1 r ⇒ p = q − 1 r .
Yeh step kyun? Multiplication non-commutative hai, toh hume q ko usi side cancel karna hai jis par woh baitha hai — left. Order discipline poora point hai.
q = i unit hai, toh q − 1 = q ˉ = ( 0 , ( − 1 , 0 , 0 )) = − i (conjugate: same scalar 0 , negated vector).
Yeh step kyun? Unit quaternions ke liye inverse = conjugate; vector part flip karo.
p = ( − i ) ( k ) . Scalar = 0 − ( − 1 , 0 , 0 ) ⋅ ( 0 , 0 , 1 ) = 0 . Vector = 0 + 0 + ( − 1 , 0 , 0 ) × ( 0 , 0 , 1 ) = ( 0 , 1 , 0 ) = y ^ .
Toh p = ( 0 , ( 0 , 1 , 0 )) = j .
Yeh step kyun? Hamilton formula ek baar phir use kiya; ( − x ^ ) × z ^ = + y ^ .
Answer: p = j .
Verify: check karo q p = i j = k = r ✅ (Ex 2 se). Unknown factor exactly recover ho gaya — yeh exactly woh hai jaise ek MEKF ek measured vs. predicted attitude se error quaternion back out karta hai. Dekho Multiplicative EKF (MEKF) .
Recall Har degenerate case mein kaunsa term marta hai?
Perpendicular axes ::: dot term = 0 (Ex 2).
Parallel/equal axes ::: cross term = 0 (Ex 3).
Ek factor 1 hai ::: v ke siwa sab marta hai; identity, dono sides commute karta hai (Ex 1).
Tiny angle θ → 0 ::: quaternion → ( 1 , 0 ) , koi change nahi (Ex 8).
Recall Khud test karo
ij − j i = ? ::: 2 k — doubled cross term (Ex 4).
q p = r mein left factor undo kaise karo? ::: p = q − 1 r , left par multiply karo (Ex 9).
Ek rotation ke liye do quaternions? ::: q aur − q (double cover, Ex 7).
δ q ka small-angle vector part? ::: 2 1 ω Δ t (Ex 8).
"Perp kills Dot, Parallel kills Cross, One keeps All, Tiny keeps None." — chaar degenerate cells ek nazar mein.
Quaternion product — Hamilton product — woh rule jo yeh examples drill karte hain.
Cross Product & Right-Hand Rule — Ex 2, 4, 5 mein har sign flip ka source.
Axis-Angle & Euler Rodrigues — jahan se Ex 5–8 mein half-angle 2 θ aata hai.
Quaternion Kinematics — $\dot q = \tfrac12 q\,\omega$ — woh limit jo Ex 8 recover karta hai.
Multiplicative EKF (MEKF) — Ex 9 ka error-quaternion trick.
Rotation Matrices — SO(3) — Ex 6 ko rotation matrix ke against cross-check karo.
#flashcards/physics