Revision 334c13fa
Added by Leszek Koltunski over 7 years ago
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
Make the effect Center be always 3D.