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