Revision 398f2870
Added by Leszek Koltunski about 1 year ago
src/main/java/org/distorted/objectlib/tablebases/TablebasesAbstract.java | ||
---|---|---|
166 | 166 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
167 | 167 |
// remember about the double cover or unit quaternions! |
168 | 168 |
|
169 |
private int mulQuat(int q1, int q2)
|
|
169 |
public static int mulQuat(int q1, int q2, Static4D[] quats)
|
|
170 | 170 |
{ |
171 |
Static4D result = QuatHelper.quatMultiply(mQuats[q1],mQuats[q2]); |
|
171 |
int numQuats = quats.length; |
|
172 |
Static4D result = QuatHelper.quatMultiply(quats[q1],quats[q2]); |
|
172 | 173 |
|
173 | 174 |
float rX = result.get0(); |
174 | 175 |
float rY = result.get1(); |
... | ... | |
178 | 179 |
final float MAX_ERROR = 0.1f; |
179 | 180 |
float dX,dY,dZ,dW; |
180 | 181 |
|
181 |
for(int i=0; i<mNumQuats; i++)
|
|
182 |
for(int i=0; i<numQuats; i++)
|
|
182 | 183 |
{ |
183 |
dX = mQuats[i].get0() - rX;
|
|
184 |
dY = mQuats[i].get1() - rY;
|
|
185 |
dZ = mQuats[i].get2() - rZ;
|
|
186 |
dW = mQuats[i].get3() - rW;
|
|
184 |
dX = quats[i].get0() - rX;
|
|
185 |
dY = quats[i].get1() - rY;
|
|
186 |
dZ = quats[i].get2() - rZ;
|
|
187 |
dW = quats[i].get3() - rW;
|
|
187 | 188 |
|
188 | 189 |
if( dX<MAX_ERROR && dX>-MAX_ERROR && |
189 | 190 |
dY<MAX_ERROR && dY>-MAX_ERROR && |
190 | 191 |
dZ<MAX_ERROR && dZ>-MAX_ERROR && |
191 | 192 |
dW<MAX_ERROR && dW>-MAX_ERROR ) return i; |
192 | 193 |
|
193 |
dX = mQuats[i].get0() + rX;
|
|
194 |
dY = mQuats[i].get1() + rY;
|
|
195 |
dZ = mQuats[i].get2() + rZ;
|
|
196 |
dW = mQuats[i].get3() + rW;
|
|
194 |
dX = quats[i].get0() + rX;
|
|
195 |
dY = quats[i].get1() + rY;
|
|
196 |
dZ = quats[i].get2() + rZ;
|
|
197 |
dW = quats[i].get3() + rW;
|
|
197 | 198 |
|
198 | 199 |
if( dX<MAX_ERROR && dX>-MAX_ERROR && |
199 | 200 |
dY<MAX_ERROR && dY>-MAX_ERROR && |
... | ... | |
218 | 219 |
|
219 | 220 |
if( index1<mNumQuats && index2<mNumQuats ) |
220 | 221 |
{ |
221 |
if( mQuatMult[index1][index2]==-1 ) mQuatMult[index1][index2] = mulQuat(index1,index2); |
|
222 |
if( mQuatMult[index1][index2]==-1 ) mQuatMult[index1][index2] = mulQuat(index1,index2, mQuats);
|
|
222 | 223 |
return mQuatMult[index1][index2]; |
223 | 224 |
} |
224 | 225 |
|
Also available in: Unified diff
CU_323 solver: corrections.