Revision 23246 trunk/libraries/libAnimation3D/src/main/java/com/iver/cit/gvsig/animation/interpolator/Interpolator3DSpherical.java

View differences:

Interpolator3DSpherical.java
17 17
public class Interpolator3DSpherical implements IInterpolator {
18 18

  
19 19
	private IInterpolatorTimeFuntion function;
20
	private String description = "Interpolaci?n basada en encuadres";
20
	private String description = "Interpolacin basada en encuadres";
21 21
	private String name = "Interpolator3DSpherical";
22 22
	
23 23
	public IKeyFrame interpolate(List kfList, int index, double time) {
......
27 27
			return null;
28 28

  
29 29
				
30
		/*Interpolaci?n por cuaterniones.*/
30
		/*Interpolacin por cuaterniones.*/
31 31
		
32 32
		double newTime = this.getFuntion().interpolate(time);
33 33
		
......
57 57
			
58 58
			newTime = (newTime-time1)/(time2-time1);//normalize time 0..1
59 59
			
60
			Quat from = cam1.getInverseViewMatrix().getRotate();
61
			Quat to = cam2.getInverseViewMatrix().getRotate();
62 60
			
63
			// p1 eye
64
			Vec3 vec_eye1 = cam1.getEye();
65
		//	System.err.println("EYE 1 inicial " + vec_eye1.toString());
66
			double module_vec_eye1 = vec_eye1.normalize();
61
			Quat from = cam1.getViewMatrix().getRotate();
62
			Quat to = cam2.getViewMatrix().getRotate();
67 63

  
68
			// p2 eye
69
			Vec3 vec_eye2 = cam2.getEye();
70
		//	System.err.println("EYE 2 inicial " + vec_eye2.toString());
71
			double module_vec_eye2 = vec_eye2.normalize();
72
			
64
			Vec3 trans1 = cam1.getViewMatrix().getTrans();
65
			Vec3 trans2 = cam2.getViewMatrix().getTrans();
66

  
67
			Vec3 new_trans = vec3LinearInterpolate(trans1, trans2, newTime);
68
			Matrix m1 = Matrix.translate(new_trans);
73 69
			Quat q = sphericalInterpolate(from, to, newTime);
74 70
			Matrix m = Matrix.rotate(q);
75
			Vec3 new_eye = Matrix.transform3x3(new Vec3(0,0,1), m);
76
			new_eye = new_eye.escalarProduct(
77
					doubleInterpolate(module_vec_eye1, module_vec_eye2, newTime));
78
		//	System.err.println("NEW EYE " + new_eye.toString());
71
			Matrix m2 = m.prod(m1);
79 72
			
80
			m.invert(m);
81 73
			
82
			Camera c = new Camera();
83
			c.setViewMatrix(m);
84
			c.setEye(new_eye);
85 74
			
75
			
76
			
77
			
78
			
79
			
80
			Camera c = new Camera();
81
			c.setViewMatrix(m2);
82
		
86 83
			ProjectCamera pe = new ProjectCamera();
87 84
			pe.setCamera(c);
88 85
			KF.setName("temporal_keyframe");
......
114 111
			return new Vec3(from);
115 112
		return from.sum(to.sub(from).escalarProduct(time));
116 113
	}
117

  
114
	
118 115
	public IInterpolatorTimeFuntion getFuntion() {
119 116
		return this.function;
120 117
	}

Also available in: Unified diff