Project

General

Profile

« Previous | Next » 

Revision ab31cf6f

Added by Leszek Koltunski over 2 years ago

Cuboids: movement.

View differences:

src/main/java/org/distorted/objectlib/main/Movement.java
41 41
  private final float[] mPoint, mCamera, mTouch;
42 42
  private final float[] mPoint2D, mMove2D;
43 43
  private final int[] mEnabledRotAxis;
44
  private final float mDistanceCenterFace3D;
44
  private final float[] mDistanceCenterFace3D;
45 45
  private final Static3D[] mFaceAxis;
46 46

  
47 47
  private int mLastTouchedFace;
......
61 61
///////////////////////////////////////////////////////////////////////////////////////////////////
62 62

  
63 63
  Movement(Static3D[] rotAxis, Static3D[] faceAxis, float[][] cuts, boolean[][] rotatable,
64
           float distance3D, float size, int type, int[][][] enabled)
64
           float[] distance3D, float size, int type, int[][][] enabled)
65 65
    {
66 66
    mPoint = new float[3];
67 67
    mCamera= new float[3];
......
82 82

  
83 83
    computeCastedAxis(rotAxis);
84 84
    computeBorders(cuts,rotatable,size);
85
    computeLinear(distance3D,rotAxis,faceAxis);
85
    computeLinear(rotAxis,faceAxis);
86 86
    }
87 87

  
88 88
///////////////////////////////////////////////////////////////////////////////////////////////////
......
180 180
    {
181 181
    Static3D faceAxis = mFaceAxis[index];
182 182
    float castCameraOnAxis = mCamera[0]*faceAxis.get0() + mCamera[1]*faceAxis.get1() + mCamera[2]*faceAxis.get2();
183
    return castCameraOnAxis > mDistanceCenterFace3D;
183
    return castCameraOnAxis > mDistanceCenterFace3D[index];
184 184
    }
185 185

  
186 186
///////////////////////////////////////////////////////////////////////////////////////////////////
......
207 207
    if( denom != 0.0f )
208 208
      {
209 209
      float axisCam = a0*mCamera[0] + a1*mCamera[1] + a2*mCamera[2];
210
      float alpha = (mDistanceCenterFace3D-axisCam)/denom;
210
      float alpha = (mDistanceCenterFace3D[index]-axisCam)/denom;
211 211

  
212 212
      output[0] = mCamera[0] + d0*alpha;
213 213
      output[1] = mCamera[1] + d1*alpha;
......
356 356
// the 3D 'cuts' to translate it from 3D (i.e. with respect to the rotAxis) to 2D in-face (i.e. with
357 357
// respect to the 2D rotAxis cast into a particular face)
358 358

  
359
  private void computeLinear(float distance3D, Static3D[] rotAxis, Static3D[] faceAxis)
359
  private void computeLinear(Static3D[] rotAxis, Static3D[] faceAxis)
360 360
    {
361 361
    int numFaces = faceAxis.length;
362 362
    int numRot   = rotAxis.length;
......
373 373
          {
374 374
          float coeff = (float)Math.sqrt(1/(mA[i][j]*mA[i][j]) -1);
375 375
          int sign = computeSign(faceAxis[i],rotAxis[j]);
376
          mB[i][j] = sign*distance3D*coeff;
376
          mB[i][j] = sign*coeff*mDistanceCenterFace3D[i];
377 377
          }
378 378
        else mB[i][j] = 0.0f;
379 379
        }

Also available in: Unified diff