Project

General

Profile

« Previous | Next » 

Revision 62b9f665

Added by Leszek Koltunski 12 months ago

speedup

View differences:

src/main/java/org/distorted/objectlib/tablebases/TBCuboid323.java
10 10
package org.distorted.objectlib.tablebases;
11 11

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

  
......
202 201
// purely for speedup
203 202

  
204 203
  @Override
205
  int computeRow(float[] pos, int quat, int axisIndex)
204
  void computeRow(float[] pos, int quat, int[] output)
206 205
    {
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();
206
    float[] q = mQuats[quat];
207
    float qx = q[0];
208
    float qy = q[1];
209
    float qz = q[2];
210
    float qw = q[3];
212 211
    float rx = pos[0];
213 212
    float ry = pos[1];
214 213
    float rz = pos[2];
......
218 217
    mTmp[2] = qz + rz*qw - ry*qx + rx*qy;
219 218
    mTmp[3] = qw - rz*qz - ry*qy - rx*qx;
220 219

  
221
    switch(axisIndex)
222
      {
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;
226
              return 4;
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;
232
              return 4;
233
      }
220
    float x = qw*mTmp[0] + qz*mTmp[1] - qy*mTmp[2] - qx*mTmp[3];
221
    float y = qw*mTmp[1] - qz*mTmp[0] - qy*mTmp[3] + qx*mTmp[2];
222
    float z = qw*mTmp[2] - qz*mTmp[3] + qy*mTmp[0] - qx*mTmp[1];
234 223

  
235
    return 0;
224
    output[0] = (x<-0.5f ? 1 : (x<0.5f ? 2:4));
225
    output[1] = (y<0 ? 1:2);
226
    output[2] = (z<-0.5f ? 1 : (z<0.5f ? 2:4));
236 227
    }
237 228

  
238 229
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff