Project

General

Profile

« Previous | Next » 

Revision 334c13fa

Added by Leszek Koltunski over 7 years ago

Make the effect Center be always 3D.

View differences:

src/main/java/org/distorted/examples/matrix3d/Matrix3DEffect.java
59 59
  private Dynamic1D mDyn1;
60 60
  private Dynamic2D mDyn2;
61 61
  private Dynamic3D mDyn3;
62
  private Dynamic4D mDyn4;
62 63
  private Dynamic5D mDyn5;
63 64
  private Static1D  mSta1;
64 65
  private Static2D  mSta2;
65 66
  private Static3D  mSta3;
67
  private Static4D  mSta4;
66 68
  private Static5D  mSta5;
67 69
  private Dynamic4D mRegionDyn;
68 70
  private Static4D  mRegionSta;
69
  private Dynamic2D mCenterDyn;
70
  private Static2D  mCenterSta;
71
  private Dynamic3D mCenterDyn;
72
  private Static3D  mCenterSta;
71 73

  
72 74
  private View mButton, mEffect, mCenter, mRegion;
73 75
  private long mId;
......
79 81
    {
80 82
    switch(mName)
81 83
      {
82
      case ROTATE           : break;//object.rotate    (mDyn4, mCenterDyn); break;
83
      case QUATERNION       : break;//object.quaternion(mDyn4, mCenterDyn); break;
84
      case MOVE             : object.move      (mDyn3)            ; break;
85
      case SCALE            : object.scale     (mDyn3)            ; break;
86
      case SHEAR            : break;//object.shear     (mDyn3, mCenterDyn); break;
84
      case ROTATE           : mId = object.rotate    (mDyn4, mCenterDyn); break;
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;
88
      case SHEAR            : mId = object.shear     (mDyn3, mCenterDyn); break;
87 89

  
88 90
      case DISTORT: mId = object.distort(mDyn3, mCenterDyn, mRegionDyn); break;
89 91
      case DEFORM : mId = object.deform (mDyn3, mCenterDyn            ); break;
......
113 115
    {
114 116
    switch(mName)
115 117
      {
116
      case ROTATE           :
118
      case ROTATE           : float an = (mInter[0]-50)*180/50;
119
                              float rx = (mInter[1]-50)/ 50.0f;
120
                              float ry = (mInter[2]-50)/ 50.0f;
121
                              float rz = (mInter[3]-50)/ 50.0f;
122
                              mSta4.set(an,rx,ry,rz);
117 123
                              break;
118 124
      case QUATERNION       :
119 125
                              break;
120
      case MOVE             : float lm = mAct.get().getWidth()/50.0f;
121
                              float xm = (mInter[0]-50)*lm;
122
                              float ym = (mInter[1]-50)*lm;
123
                              float zm = (mInter[2]-50)*lm;
126
      case MOVE             : float sw = mAct.get().getScreenWidth()/50.0f;
127
                              float sh = mAct.get().getScreenWidth()/50.0f;
128
                              float xm = (mInter[0]-50)*sw;
129
                              float ym = (mInter[1]-50)*sh;
130
                              float zm = (mInter[2]-50)*(sw+sh)/2;
124 131
                              mSta3.set(xm,ym,zm);
125 132
                              break;
126
      case SCALE            : float xs = (mInter[0])/50.0f;
127
                              float ys = (mInter[1])/50.0f;
128
                              float zs = (mInter[2])/50.0f;
133
      case SCALE            : float xs = (mInter[0]>50 ? 0.18f : 0.018f)*(mInter[0]-50) + 1;
134
                              float ys = (mInter[1]>50 ? 0.18f : 0.018f)*(mInter[1]-50) + 1;
135
                              float zs = (mInter[2]>50 ? 0.18f : 0.018f)*(mInter[2]-50) + 1;
129 136
                              mSta3.set(xs,ys,zs);
130 137
                              break;
131
      case SHEAR            :
138
      case SHEAR            : float xsh = (mInter[0]-50)/25.0f;
139
                              float ysh = (mInter[1]-50)/25.0f;
140
                              float zsh = (mInter[2]-50)/25.0f;
141
                              mSta3.set(xsh,ysh,zsh);
132 142
                              break;
133 143
      case DISTORT          :
134 144
      case DEFORM           : float ld = mAct.get().getWidth()/50.0f;
......
179 189
      case 2: mInter[1] = 50;
180 190
      case 1: mInter[0] = 50;
181 191
      }
192

  
193
    if( mName==EffectNames.ROTATE ) mInter[1]= 100;
182 194
    }
183 195

  
184 196
///////////////////////////////////////////////////////////////////////////////////////////////////
......
208 220
      text += " ("+f1+","+f2+","+f3+")";
209 221
      }
210 222

  
223
    if( mSta4 !=null )
224
      {
225
      float f1 = ((int)(mSta4.getX()*100))/100.0f;
226
      float f2 = ((int)(mSta4.getY()*100))/100.0f;
227
      float f3 = ((int)(mSta4.getZ()*100))/100.0f;
228
      float f4 = ((int)(mSta4.getW()*100))/100.0f;
229
      text += " ("+f1+","+f2+","+f3+","+f4+")";
230
      }
231

  
211 232
    if( mSta5 !=null )
212 233
      {
213 234
      float f1 = ((int)(mSta5.getX()*100))/100.0f;
......
229 250

  
230 251
    float x = (mInterCenter[0]*0.012f - 0.1f)*act.getWidth();
231 252
    float y = (mInterCenter[1]*0.012f - 0.1f)*act.getHeight();
232
    mCenterSta.set(x,y);
253
    float z = (mInterCenter[2]*0.012f - 0.1f)*act.getDepth();
254

  
255
    mCenterSta.set(x,y,z);
233 256
    }
234 257

  
235 258
///////////////////////////////////////////////////////////////////////////////////////////////////
......
238 261
    {
239 262
    mInterCenter[0] = 50;
240 263
    mInterCenter[1] = 50;
264
    mInterCenter[2] = 50;
241 265
    }
242 266

  
243 267
///////////////////////////////////////////////////////////////////////////////////////////////////
......
246 270
    {
247 271
    int f0 = (int)mCenterSta.getX();
248 272
    int f1 = (int)mCenterSta.getY();
273
    int f2 = (int)mCenterSta.getZ();
249 274

  
250
    mTextCenter.setText("center ("+f0+","+f1+")");
275
    mTextCenter.setText("center ("+f0+","+f1+","+f2+")");
251 276
    }
252 277

  
253 278
///////////////////////////////////////////////////////////////////////////////////////////////////
......
301 326
    mDyn1 = null;
302 327
    mDyn2 = null;
303 328
    mDyn3 = null;
329
    mDyn4 = null;
304 330
    mDyn5 = null;
305 331
    mSta1 = null;
306 332
    mSta2 = null;
307 333
    mSta3 = null;
334
    mSta4 = null;
308 335
    mSta5 = null;
309 336

  
310 337
    mDimension = mName.getDimension();
......
323 350
               mSta3 = new Static3D(0,0,0);
324 351
               mDyn3.add(mSta3);
325 352
               break;
326
      case 4 : mDyn3 = new Dynamic3D();
327
               mSta3 = new Static3D(0,0,0);
328
               mDyn3.add(mSta3);
329
               mDyn1 = new Dynamic1D();
330
               mSta1 = new Static1D(0);
331
               mDyn1.add(mSta1);
353
      case 4 : if( mName == EffectNames.QUATERNION || mName == EffectNames.ROTATE )
354
                 {
355
                 mDyn4 = new Dynamic4D();
356
                 mSta4 = new Static4D(0,0,0,0);
357
                 mDyn4.add(mSta4);
358
                 }
359
               else
360
                 {
361
                 mDyn3 = new Dynamic3D();
362
                 mSta3 = new Static3D(0,0,0);
363
                 mDyn3.add(mSta3);
364
                 mDyn1 = new Dynamic1D();
365
                 mSta1 = new Static1D(0);
366
                 mDyn1.add(mSta1);
367
                 }
332 368
               break;
333 369
      case 5 : mDyn5 = new Dynamic5D();
334 370
               mSta5 = new Static5D(0,0,0,0,0);
......
346 382
    mRegionSta   = new Static4D(0,0,0,0);
347 383
    mRegionDyn.add(mRegionSta);
348 384

  
349
    mInterCenter = new int[2];
350
    mSeekCenterID= new int[2];
351
    mCenterDyn   = new Dynamic2D();
352
    mCenterSta   = new Static2D(0,0);
385
    mInterCenter = new int[3];
386
    mSeekCenterID= new int[3];
387
    mCenterDyn   = new Dynamic3D();
388
    mCenterSta   = new Static3D(0,0,0);
353 389
    mCenterDyn.add(mCenterSta);
354 390

  
355 391
    mButton = null;
......
479 515

  
480 516
    mCenter = act.getLayoutInflater().inflate(R.layout.effectcenter, null);
481 517

  
482
    SeekBar[] seek = new SeekBar[2];
518
    SeekBar[] seek = new SeekBar[3];
483 519

  
484 520
    seek[0] = (SeekBar)mCenter.findViewById(R.id.effectCenterBarX );
485 521
    seek[1] = (SeekBar)mCenter.findViewById(R.id.effectCenterBarY );
522
    seek[2] = (SeekBar)mCenter.findViewById(R.id.effectCenterBarZ );
486 523

  
487 524
    mSeekCenterID[0] = seek[0].getId();
488 525
    mSeekCenterID[1] = seek[1].getId();
526
    mSeekCenterID[2] = seek[2].getId();
489 527

  
490 528
    mTextCenter = (TextView)mCenter.findViewById(R.id.effectCenterText);
491 529

  
492 530
    setDefaultCenterInter();
493 531

  
494
    for(int i=0; i<2; i++)
532
    for(int i=0; i<3; i++)
495 533
      {
496 534
      seek[i].setOnSeekBarChangeListener(this);
497 535
      seek[i].setProgress( mInterCenter[i] );
498 536
      }
499 537

  
500
    act.setCenter(mCenterSta.getX(),mCenterSta.getY());
538
    act.setCenter(mCenterSta.getX(),mCenterSta.getY(),mCenterSta.getZ());
501 539

  
502 540
    return mCenter;
503 541
    }
......
574 612
      fillCenterStatics();
575 613
      setCenterText();
576 614
      }
615
    if( bar.getId() == mSeekCenterID[2] )
616
      {
617
      mInterCenter[2] = progress;
618
      fillCenterStatics();
619
      setCenterText();
620
      }
577 621

  
578 622
    if( fromUser )
579 623
      {
......
582 626

  
583 627
      Matrix3DActivity act = mAct.get();
584 628

  
585
      act.setCenter(mCenterSta.getX(),mCenterSta.getY());
629
      act.setCenter(mCenterSta.getX(),mCenterSta.getY(),mCenterSta.getZ());
586 630
      act.setRegion(mRegionSta.getX(),mRegionSta.getY(),mRegionSta.getZ());
587 631
      }
588 632
    }

Also available in: Unified diff