Skip to content

Commit f2db3b7

Browse files
committed
move out functions
1 parent 901c95b commit f2db3b7

File tree

1 file changed

+118
-117
lines changed

1 file changed

+118
-117
lines changed

SunSpider/3d-cube.js

Lines changed: 118 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,124 @@
22
// http://www.speich.net/computer/moztesting/3d.htm
33
// Created by Simon Speich
44

5+
6+
function CalcCross(V0, V1) {
7+
var Cross = new Array();
8+
Cross[0] = V0[1]*V1[2] - V0[2]*V1[1];
9+
Cross[1] = V0[2]*V1[0] - V0[0]*V1[2];
10+
Cross[2] = V0[0]*V1[1] - V0[1]*V1[0];
11+
return Cross;
12+
}
13+
14+
function CalcNormal(V0, V1, V2) {
15+
var A = new Array();
16+
var B = new Array();
17+
for (var i = 0; i < 3; i++) {
18+
A[i] = V0[i] - V1[i];
19+
B[i] = V2[i] - V1[i];
20+
}
21+
A = CalcCross(A, B);
22+
var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
23+
for (var i = 0; i < 3; i++) A[i] = A[i] / Length;
24+
A[3] = 1;
25+
return A;
26+
}
27+
28+
function CreateP(X,Y,Z) {
29+
this.V = [X,Y,Z,1];
30+
}
31+
32+
// multiplies two matrices
33+
function MMulti(M1, M2) {
34+
var M = [[],[],[],[]];
35+
var i = 0;
36+
var j = 0;
37+
for (; i < 4; i++) {
38+
j = 0;
39+
for (; j < 4; j++) M[i][j] = M1[i][0] * M2[0][j] + M1[i][1] * M2[1][j] + M1[i][2] * M2[2][j] + M1[i][3] * M2[3][j];
40+
}
41+
return M;
42+
}
43+
44+
//multiplies matrix with vector
45+
function VMulti(M, V) {
46+
var Vect = new Array();
47+
var i = 0;
48+
for (;i < 4; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2] + M[i][3] * V[3];
49+
return Vect;
50+
}
51+
52+
function VMulti2(M, V) {
53+
var Vect = new Array();
54+
var i = 0;
55+
for (;i < 3; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2];
56+
return Vect;
57+
}
58+
59+
// add to matrices
60+
function MAdd(M1, M2) {
61+
var M = [[],[],[],[]];
62+
var i = 0;
63+
var j = 0;
64+
for (; i < 4; i++) {
65+
j = 0;
66+
for (; j < 4; j++) M[i][j] = M1[i][j] + M2[i][j];
67+
}
68+
return M;
69+
}
70+
71+
function Translate(M, Dx, Dy, Dz) {
72+
var T = [
73+
[1,0,0,Dx],
74+
[0,1,0,Dy],
75+
[0,0,1,Dz],
76+
[0,0,0,1]
77+
];
78+
return MMulti(T, M);
79+
}
80+
81+
function RotateX(M, Phi) {
82+
var a = Phi;
83+
a *= Math.PI / 180;
84+
var Cos = Math.cos(a);
85+
var Sin = Math.sin(a);
86+
var R = [
87+
[1,0,0,0],
88+
[0,Cos,-Sin,0],
89+
[0,Sin,Cos,0],
90+
[0,0,0,1]
91+
];
92+
return MMulti(R, M);
93+
}
94+
95+
function RotateY(M, Phi) {
96+
var a = Phi;
97+
a *= Math.PI / 180;
98+
var Cos = Math.cos(a);
99+
var Sin = Math.sin(a);
100+
var R = [
101+
[Cos,0,Sin,0],
102+
[0,1,0,0],
103+
[-Sin,0,Cos,0],
104+
[0,0,0,1]
105+
];
106+
return MMulti(R, M);
107+
}
108+
109+
function RotateZ(M, Phi) {
110+
var a = Phi;
111+
a *= Math.PI / 180;
112+
var Cos = Math.cos(a);
113+
var Sin = Math.sin(a);
114+
var R = [
115+
[Cos,-Sin,0,0],
116+
[Sin,Cos,0,0],
117+
[0,0,1,0],
118+
[0,0,0,1]
119+
];
120+
return MMulti(R, M);
121+
}
122+
5123
function run() {
6124
var Q = new Array();
7125
var MTrans = new Array(); // transformation matrix
@@ -74,123 +192,6 @@ function run() {
74192
Q.LastPx = NumPix;
75193
}
76194

77-
function CalcCross(V0, V1) {
78-
var Cross = new Array();
79-
Cross[0] = V0[1]*V1[2] - V0[2]*V1[1];
80-
Cross[1] = V0[2]*V1[0] - V0[0]*V1[2];
81-
Cross[2] = V0[0]*V1[1] - V0[1]*V1[0];
82-
return Cross;
83-
}
84-
85-
function CalcNormal(V0, V1, V2) {
86-
var A = new Array();
87-
var B = new Array();
88-
for (var i = 0; i < 3; i++) {
89-
A[i] = V0[i] - V1[i];
90-
B[i] = V2[i] - V1[i];
91-
}
92-
A = CalcCross(A, B);
93-
var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
94-
for (var i = 0; i < 3; i++) A[i] = A[i] / Length;
95-
A[3] = 1;
96-
return A;
97-
}
98-
99-
function CreateP(X,Y,Z) {
100-
this.V = [X,Y,Z,1];
101-
}
102-
103-
// multiplies two matrices
104-
function MMulti(M1, M2) {
105-
var M = [[],[],[],[]];
106-
var i = 0;
107-
var j = 0;
108-
for (; i < 4; i++) {
109-
j = 0;
110-
for (; j < 4; j++) M[i][j] = M1[i][0] * M2[0][j] + M1[i][1] * M2[1][j] + M1[i][2] * M2[2][j] + M1[i][3] * M2[3][j];
111-
}
112-
return M;
113-
}
114-
115-
//multiplies matrix with vector
116-
function VMulti(M, V) {
117-
var Vect = new Array();
118-
var i = 0;
119-
for (;i < 4; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2] + M[i][3] * V[3];
120-
return Vect;
121-
}
122-
123-
function VMulti2(M, V) {
124-
var Vect = new Array();
125-
var i = 0;
126-
for (;i < 3; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2];
127-
return Vect;
128-
}
129-
130-
// add to matrices
131-
function MAdd(M1, M2) {
132-
var M = [[],[],[],[]];
133-
var i = 0;
134-
var j = 0;
135-
for (; i < 4; i++) {
136-
j = 0;
137-
for (; j < 4; j++) M[i][j] = M1[i][j] + M2[i][j];
138-
}
139-
return M;
140-
}
141-
142-
function Translate(M, Dx, Dy, Dz) {
143-
var T = [
144-
[1,0,0,Dx],
145-
[0,1,0,Dy],
146-
[0,0,1,Dz],
147-
[0,0,0,1]
148-
];
149-
return MMulti(T, M);
150-
}
151-
152-
function RotateX(M, Phi) {
153-
var a = Phi;
154-
a *= Math.PI / 180;
155-
var Cos = Math.cos(a);
156-
var Sin = Math.sin(a);
157-
var R = [
158-
[1,0,0,0],
159-
[0,Cos,-Sin,0],
160-
[0,Sin,Cos,0],
161-
[0,0,0,1]
162-
];
163-
return MMulti(R, M);
164-
}
165-
166-
function RotateY(M, Phi) {
167-
var a = Phi;
168-
a *= Math.PI / 180;
169-
var Cos = Math.cos(a);
170-
var Sin = Math.sin(a);
171-
var R = [
172-
[Cos,0,Sin,0],
173-
[0,1,0,0],
174-
[-Sin,0,Cos,0],
175-
[0,0,0,1]
176-
];
177-
return MMulti(R, M);
178-
}
179-
180-
function RotateZ(M, Phi) {
181-
var a = Phi;
182-
a *= Math.PI / 180;
183-
var Cos = Math.cos(a);
184-
var Sin = Math.sin(a);
185-
var R = [
186-
[Cos,-Sin,0,0],
187-
[Sin,Cos,0,0],
188-
[0,0,1,0],
189-
[0,0,0,1]
190-
];
191-
return MMulti(R, M);
192-
}
193-
194195
function DrawQube() {
195196
// calc current normals
196197
var CurN = new Array();

0 commit comments

Comments
 (0)