Project

General

Profile

« Previous | Next » 

Revision 398f2870

Added by Leszek Koltunski about 1 year ago

CU_323 solver: corrections.

View differences:

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