Subversion Repository Public Repository

Nextrek

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package min3d.vos;

/**
 * Simple VO holding x,y, and z values. Plus helper math functions.
 * Care should be taken to avoid creating Number3d instances unnecessarily. 
 * Its use is not required for the construction of vertices.
 */
public class Number3d 
{
	public float x;
	public float y;
	public float z;
	
	private static Number3d _temp = new Number3d();
	
	
	public Number3d()
	{
		x = 0;
		y = 0;
		z = 0;
	}
	
	public Number3d(float $x, float $y, float $z)
	{
		x = $x;
		y = $y;
		z = $z;
	}
	
	//
	
	public void setAll(float $x, float $y, float $z)
	{
		x = $x;
		y = $y;
		z = $z;
	}
	
	public void setAllFrom(Number3d $n)
	{
		x = $n.x;
		y = $n.y;
		z = $n.z;
	}
	
	public void normalize()
	{
		float mod = (float) Math.sqrt( this.x*this.x + this.y*this.y + this.z*this.z );

		if( mod != 0 && mod != 1)
		{
			mod = 1 / mod; 
			this.x *= mod;
			this.y *= mod;
			this.z *= mod;
		}
	}

	public void add(Number3d n)
	{
		this.x += n.x;
		this.y += n.y;
		this.z += n.z;
	}
	
	public void subtract(Number3d n)
	{
		this.x -= n.x;
		this.y -= n.y;
		this.z -= n.z;
	}
	
	public void multiply(Float f)
	{
		this.x *= f;
		this.y *= f;
		this.z *= f;
	}
	
	public float length()
	{
		return (float) Math.sqrt( this.x*this.x + this.y*this.y + this.z*this.z );
	}
	
	public Number3d clone()
	{
		return new Number3d(x,y,z);
	}
	
	public void rotateX(float angle)
	{
		float cosRY = (float) Math.cos(angle);
		float sinRY = (float) Math.sin(angle);

		_temp.setAll(this.x, this.y, this.z); 

		this.y = (_temp.y*cosRY)-(_temp.z*sinRY);
		this.z = (_temp.y*sinRY)+(_temp.z*cosRY);
	}
	
	public void rotateY(float angle)
	{
		float cosRY = (float) Math.cos(angle);
		float sinRY = (float) Math.sin(angle);

		_temp.setAll(this.x, this.y, this.z); 
		
		this.x = (_temp.x*cosRY)+(_temp.z*sinRY);
		this.z = (_temp.x*-sinRY)+(_temp.z*cosRY);
	}
	
	public void rotateZ(float angle)
	{
		float cosRY = (float) Math.cos(angle);
		float sinRY = (float) Math.sin(angle);

		_temp.setAll(this.x, this.y, this.z); 		

		this.x = (_temp.x*cosRY)-(_temp.y*sinRY);
		this.y = (_temp.x*sinRY)+(_temp.y*cosRY);
	}
	
	
	@Override
	public String toString()
	{
		return x + "," + y + "," + z; 
	}
	
	//

	public static Number3d add(Number3d a, Number3d b)
	{
		return new Number3d(a.x + b.x, a.y + b.y, a.z + b.z);
	}

	public static Number3d subtract(Number3d a, Number3d b)
	{
		return new Number3d(a.x - b.x, a.y - b.y, a.z - b.z);
	}
	
	public static Number3d multiply(Number3d a, Number3d b)
	{
		return new Number3d(a.x * b.x, a.y * b.y, a.z * b.z);
	}
	
	public static Number3d cross(Number3d v, Number3d w)
	{
		return new Number3d((w.y * v.z) - (w.z * v.y), (w.z * v.x) - (w.x * v.z), (w.x * v.y) - (w.y * v.x));
	}
	
	public static float dot(Number3d v, Number3d w)
	{
		return ( v.x * w.x + v.y * w.y + w.z * v.z );
	}
	
	// * 	Math functions thanks to Papervision3D AS3 library
	// 		http://code.google.com/p/papervision3d/
}

Commits for Nextrek/Android/LibrerieNextrek/src/min3d/vos/Number3d.java

Diff revisions: vs.
Revision Author Commited Message
4 FMMortaroli picture FMMortaroli Fri 19 Apr, 2013 16:54:38 +0000