Project

General

Profile

« Previous | Next » 

Revision dfa988f2

Added by Leszek Koltunski 12 months ago

speedup

View differences:

src/main/java/org/distorted/objectlib/tablebases/TBCuboid323.java
9 9

  
10 10
package org.distorted.objectlib.tablebases;
11 11

  
12
import org.distorted.library.helpers.QuatHelper;
13 12
import org.distorted.library.type.Static3D;
13
import org.distorted.library.type.Static4D;
14 14
import org.distorted.objectlib.R;
15 15
import org.distorted.objectlib.helpers.OperatingSystemInterface;
16 16

  
......
204 204
  @Override
205 205
  int computeRow(float[] pos, int quat, int axisIndex)
206 206
    {
207
    QuatHelper.rotateVectorByQuat(mTmp,pos[0],pos[1],pos[2],1.0f,mQuats[quat]);
207
    Static4D q = mQuats[quat];
208
    float qx = q.get0();
209
    float qy = q.get1();
210
    float qz = q.get2();
211
    float qw = q.get3();
212
    float rx = pos[0];
213
    float ry = pos[1];
214
    float rz = pos[2];
215

  
216
    mTmp[0] = qx - rz*qy + ry*qz + rx*qw;
217
    mTmp[1] = qy + rz*qx + ry*qw - rx*qz;
218
    mTmp[2] = qz + rz*qw - ry*qx + rx*qy;
219
    mTmp[3] = qw - rz*qz - ry*qy - rx*qx;
208 220

  
209 221
    switch(axisIndex)
210 222
      {
211
      case 0: if( mTmp[0]<-0.5f ) return 1;
212
              if( mTmp[0]< 0.5f ) return 2;
223
      case 0: float res0 = qw*mTmp[0] + qz*mTmp[1] - qy*mTmp[2] - qx*mTmp[3];
224
              if( res0<-0.5f ) return 1;
225
              if( res0< 0.5f ) return 2;
213 226
              return 4;
214
      case 1: return (mTmp[1]<0 ? 1:2);
215
      case 2: if( mTmp[2]<-0.5f ) return 1;
216
              if( mTmp[2]< 0.5f ) return 2;
227
      case 1: float res1 = qw*mTmp[1] - qz*mTmp[0] - qy*mTmp[3] + qx*mTmp[2];
228
              return (res1<0 ? 1:2);
229
      case 2: float res2 = qw*mTmp[2] - qz*mTmp[3] + qy*mTmp[0] - qx*mTmp[1];
230
              if( res2<-0.5f ) return 1;
231
              if( res2< 0.5f ) return 2;
217 232
              return 4;
218 233
      }
219 234

  

Also available in: Unified diff