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/effects3d/Effects3DEffect.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
      {
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;
89

  
82 90
      case DISTORT: mId = object.distort(mDyn3, mCenterDyn, mRegionDyn); break;
83 91
      case DEFORM : mId = object.deform (mDyn3, mCenterDyn            ); break;
84 92
      case SINK   : mId = object.sink   (mDyn1, mCenterDyn, mRegionDyn); break;
......
107 115
    {
108 116
    switch(mName)
109 117
      {
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);
123
                              break;
124
      case QUATERNION       :
125
                              break;
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;
131
                              mSta3.set(xm,ym,zm);
132
                              break;
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;
136
                              mSta3.set(xs,ys,zs);
137
                              break;
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);
142
                              break;
110 143
      case DISTORT          :
111
      case DEFORM           : float l = mAct.get().getWidth()/50.0f;
112
                              float x = (mInter[0]-50)*l;
113
                              float y = (mInter[1]-50)*l;
114
                              float z = (mInter[2]-50)*l;
115
                              mSta3.set(x,y,z);
144
      case DEFORM           : float ld = mAct.get().getWidth()/50.0f;
145
                              float xd = (mInter[0]-50)*ld;
146
                              float yd = (mInter[1]-50)*ld;
147
                              float zd = (mInter[2]-50)*ld;
148
                              mSta3.set(xd,yd,zd);
116 149
                              break;
117 150
      case WAVE             : float l2 = mAct.get().getWidth()/50.0f;
118 151
                              float x2 = (mInter[0]-50)*l2;
......
156 189
      case 2: mInter[1] = 50;
157 190
      case 1: mInter[0] = 50;
158 191
      }
192

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

  
161 196
///////////////////////////////////////////////////////////////////////////////////////////////////
......
185 220
      text += " ("+f1+","+f2+","+f3+")";
186 221
      }
187 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

  
188 232
    if( mSta5 !=null )
189 233
      {
190 234
      float f1 = ((int)(mSta5.getX()*100))/100.0f;
......
206 250

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

  
255
    mCenterSta.set(x,y,z);
210 256
    }
211 257

  
212 258
///////////////////////////////////////////////////////////////////////////////////////////////////
......
215 261
    {
216 262
    mInterCenter[0] = 50;
217 263
    mInterCenter[1] = 50;
264
    mInterCenter[2] = 50;
218 265
    }
219 266

  
220 267
///////////////////////////////////////////////////////////////////////////////////////////////////
......
223 270
    {
224 271
    int f0 = (int)mCenterSta.getX();
225 272
    int f1 = (int)mCenterSta.getY();
273
    int f2 = (int)mCenterSta.getZ();
226 274

  
227
    mTextCenter.setText("center ("+f0+","+f1+")");
275
    mTextCenter.setText("center ("+f0+","+f1+","+f2+")");
228 276
    }
229 277

  
230 278
///////////////////////////////////////////////////////////////////////////////////////////////////
......
278 326
    mDyn1 = null;
279 327
    mDyn2 = null;
280 328
    mDyn3 = null;
329
    mDyn4 = null;
281 330
    mDyn5 = null;
282 331
    mSta1 = null;
283 332
    mSta2 = null;
284 333
    mSta3 = null;
334
    mSta4 = null;
285 335
    mSta5 = null;
286 336

  
287 337
    mDimension = mName.getDimension();
......
300 350
               mSta3 = new Static3D(0,0,0);
301 351
               mDyn3.add(mSta3);
302 352
               break;
303
      case 4 : mDyn3 = new Dynamic3D();
304
               mSta3 = new Static3D(0,0,0);
305
               mDyn3.add(mSta3);
306
               mDyn1 = new Dynamic1D();
307
               mSta1 = new Static1D(0);
308
               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
                 }
309 368
               break;
310 369
      case 5 : mDyn5 = new Dynamic5D();
311 370
               mSta5 = new Static5D(0,0,0,0,0);
......
323 382
    mRegionSta   = new Static4D(0,0,0,0);
324 383
    mRegionDyn.add(mRegionSta);
325 384

  
326
    mInterCenter = new int[2];
327
    mSeekCenterID= new int[2];
328
    mCenterDyn   = new Dynamic2D();
329
    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);
330 389
    mCenterDyn.add(mCenterSta);
331 390

  
332 391
    mButton = null;
......
395 454
               mSeekID[4] = seek[4].getId();
396 455
               mButton    = mEffect.findViewById(R.id.button5dRemove);
397 456
               break;
398
      default: android.util.Log.e("Effects3DEffect", "dimension "+mDimension+" not supported!");
457
      default: android.util.Log.e("Matrix3DEffect", "dimension "+mDimension+" not supported!");
399 458
               return null;
400 459
      }
401 460

  
......
456 515

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

  
459
    SeekBar[] seek = new SeekBar[2];
518
    SeekBar[] seek = new SeekBar[3];
460 519

  
461 520
    seek[0] = (SeekBar)mCenter.findViewById(R.id.effectCenterBarX );
462 521
    seek[1] = (SeekBar)mCenter.findViewById(R.id.effectCenterBarY );
522
    seek[2] = (SeekBar)mCenter.findViewById(R.id.effectCenterBarZ );
463 523

  
464 524
    mSeekCenterID[0] = seek[0].getId();
465 525
    mSeekCenterID[1] = seek[1].getId();
526
    mSeekCenterID[2] = seek[2].getId();
466 527

  
467 528
    mTextCenter = (TextView)mCenter.findViewById(R.id.effectCenterText);
468 529

  
469 530
    setDefaultCenterInter();
470 531

  
471
    for(int i=0; i<2; i++)
532
    for(int i=0; i<3; i++)
472 533
      {
473 534
      seek[i].setOnSeekBarChangeListener(this);
474 535
      seek[i].setProgress( mInterCenter[i] );
475 536
      }
476 537

  
477
    act.setCenter(mCenterSta.getX(),mCenterSta.getY());
538
    act.setCenter(mCenterSta.getX(),mCenterSta.getY(),mCenterSta.getZ());
478 539

  
479 540
    return mCenter;
480 541
    }
......
551 612
      fillCenterStatics();
552 613
      setCenterText();
553 614
      }
615
    if( bar.getId() == mSeekCenterID[2] )
616
      {
617
      mInterCenter[2] = progress;
618
      fillCenterStatics();
619
      setCenterText();
620
      }
554 621

  
555 622
    if( fromUser )
556 623
      {
......
559 626

  
560 627
      Effects3DActivity act = mAct.get();
561 628

  
562
      act.setCenter(mCenterSta.getX(),mCenterSta.getY());
629
      act.setCenter(mCenterSta.getX(),mCenterSta.getY(),mCenterSta.getZ());
563 630
      act.setRegion(mRegionSta.getX(),mRegionSta.getY(),mRegionSta.getZ());
564 631
      }
565 632
    }

Also available in: Unified diff