Revision dfa988f2
Added by Leszek Koltunski 12 months ago
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
speedup