@@ -78,29 +78,33 @@ PMQuaternion class >> zero [
7878]
7979
8080{ #category : #arithmetic }
81- PMQuaternion >> * multiplier [
81+ PMQuaternion >> * multiplier [
82+
8283 " Answer the result of multiplying self with aQuaternion.
8384 Distribute the product (qr + qi i +qj j + qk k)*(tr+ti i + tj j + tk k)
8485 with rules i*i=j*j=k*k=-1 and i*j=-k, j*k=-i, k*i=-j"
86+
8587 ^ multiplier isQuaternion
86- ifTrue: [| tr ti tj tk |
87- tr := multiplier qr.
88- ti := multiplier qi.
89- tj := multiplier qj.
90- tk := multiplier qk.
91- ^ self species
92- qr: qr * tr - (qi * ti) - (qj * tj) - (qk * tk)
93- qi: qr * ti + (qi * tr) + (qj * tk) - (qk * tj)
94- qj: qr * tj + (qj * tr) + (qk * ti) - (qi * tk)
95- qk: qr * tk + (qk * tr) + (qi * tj) - (qj * ti)]
96- ifFalse: [(multiplier isNumber and : [multiplier isComplexNumber not ])
97- ifTrue: [" handle case much faster than adapt..."
98- self species
99- qr: qr * multiplier
100- qi: qi * multiplier
101- qj: qj * multiplier
102- qk: qk * multiplier]
103- ifFalse: [multiplier adaptToQuaternion: self andSend: #* ]]
88+ ifTrue: [
89+ | tr ti tj tk |
90+ tr := multiplier qr.
91+ ti := multiplier qi.
92+ tj := multiplier qj.
93+ tk := multiplier qk.
94+ ^ self species
95+ qr: qr * tr - (qi * ti) - (qj * tj) - (qk * tk)
96+ qi: qr * ti + (qi * tr) + (qj * tk) - (qk * tj)
97+ qj: qr * tj + (qj * tr) + (qk * ti) - (qi * tk)
98+ qk: qr * tk + (qk * tr) + (qi * tj) - (qj * ti) ]
99+ ifFalse: [
100+ (multiplier isNumber and : [ multiplier isComplexNumber not ])
101+ ifTrue: [ " handle case much faster than adapt..."
102+ self species
103+ qr: qr * multiplier
104+ qi: qi * multiplier
105+ qj: qj * multiplier
106+ qk: qk * multiplier ]
107+ ifFalse: [ multiplier adaptToQuaternion: self andSend: #* ] ]
104108]
105109
106110{ #category : #arithmetic }
0 commit comments