Project

General

Profile

« Previous | Next » 

Revision 7c8012ee

Added by Leszek Koltunski over 7 years ago

Matrix3D: implement quaternion effect

View differences:

src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java
83 83
      {
84 84
      case ROTATE           : mId = object.rotate    (mDyn4, mCenterDyn); break;
85 85
      case QUATERNION       : mId = object.quaternion(mDyn4, mCenterDyn); break;
86
      case MOVE             : mId = object.move      (mDyn3)             ; break;
87
      case SCALE            : mId = object.scale     (mDyn3)             ; break;
86
      case MOVE             : mId = object.move      (mDyn3)            ; break;
87
      case SCALE            : mId = object.scale     (mDyn3)            ; break;
88 88
      case SHEAR            : mId = object.shear     (mDyn3, mCenterDyn); break;
89 89

  
90
      case DISTORT: mId = object.distort(mDyn3, mCenterDyn, mRegionDyn); break;
91
      case DEFORM : mId = object.deform (mDyn3, mCenterDyn            ); break;
92
      case SINK   : mId = object.sink   (mDyn1, mCenterDyn, mRegionDyn); break;
93
      case PINCH  : mId = object.pinch  (mDyn2, mCenterDyn, mRegionDyn); break;
94
      case SWIRL  : mId = object.swirl  (mDyn1, mCenterDyn, mRegionDyn); break;
95
      case WAVE   : mId = object.wave   (mDyn5, mCenterDyn, mRegionDyn); break;
90
      case DISTORT          : mId = object.distort   (mDyn3, mCenterDyn, mRegionDyn); break;
91
      case DEFORM           : mId = object.deform    (mDyn3, mCenterDyn            ); break;
92
      case SINK             : mId = object.sink      (mDyn1, mCenterDyn, mRegionDyn); break;
93
      case PINCH            : mId = object.pinch     (mDyn2, mCenterDyn, mRegionDyn); break;
94
      case SWIRL            : mId = object.swirl     (mDyn1, mCenterDyn, mRegionDyn); break;
95
      case WAVE             : mId = object.wave      (mDyn5, mCenterDyn, mRegionDyn); break;
96 96

  
97 97
      case ALPHA            : mId = object.alpha     (mDyn1,        mRegionDyn, false); break;
98 98
      case SMOOTH_ALPHA     : mId = object.alpha     (mDyn1,        mRegionDyn, true ); break;
......
122 122
                              float rz = (mInter[3]-50)/ 50.0f;
123 123
                              mSta4.set(an,rx,ry,rz);
124 124
                              break;
125
      case QUATERNION       :
125
      case QUATERNION       : float qx = (mInter[0]-50)/ 50.0f;
126
                              float qy = (mInter[1]-50)/ 50.0f;
127
                              float qz = (mInter[2]-50)/ 50.0f;
128
                              float qa = (mInter[3]-50)*3.1415f/50;
129
                              float cosA = (float)Math.cos(qa/2);
130
                              float len = (float)Math.sqrt(qx*qx+qy*qy+qz*qz);
131
                              float sinAnorm = (float)Math.sin(qa/2)/len;
132
                              mSta4.set(sinAnorm*qx,sinAnorm*qy,sinAnorm*qz, cosA);
126 133
                              break;
127 134
      case MOVE             : float sw = mAct.get().getScreenWidth()/50.0f;
128 135
                              float sh = mAct.get().getScreenWidth()/50.0f;
......
141 148
                              float zsh = (mInter[2]-50)/25.0f;
142 149
                              mSta3.set(xsh,ysh,zsh);
143 150
                              break;
151

  
144 152
      case DISTORT          :
145 153
      case DEFORM           : float ld = mAct.get().getWidth()/50.0f;
146 154
                              float xd = (mInter[0]-50)*ld;
......
197 205
      case 1: mInter[0] = 50;
198 206
      }
199 207

  
200
    if( mName==EffectNames.ROTATE ) mInter[1]= 100;
208
    if( mName==EffectNames.ROTATE || mName==EffectNames.QUATERNION ) mInter[1]= 100;
201 209
    }
202 210

  
203 211
///////////////////////////////////////////////////////////////////////////////////////////////////
......
357 365
               mSta3 = new Static3D(0,0,0);
358 366
               mDyn3.add(mSta3);
359 367
               break;
360
      case 4 : if( mName == EffectNames.QUATERNION || mName == EffectNames.ROTATE )
368
      case 4 : if( mName == EffectNames.ROTATE || mName == EffectNames.QUATERNION )
361 369
                 {
362 370
                 mDyn4 = new Dynamic4D();
363 371
                 mSta4 = new Static4D(0,0,0,0);

Also available in: Unified diff