Skip to content

Commit b449109

Browse files
authored
Merge pull request #4 from camillobruni/2024-11-22_3dcube_fix
Fix and cleanup 3d-cube
2 parents 7f314b1 + 1cb248c commit b449109

File tree

2 files changed

+92
-90
lines changed

2 files changed

+92
-90
lines changed

SunSpider/3d-cube.js

Lines changed: 44 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ function run() {
99
var I = new Array(); // entity matrix
1010
var Origin = new Object();
1111
var Testing = new Object();
12-
var LoopTimer;
1312

1413
var validation = {
1514
20: 2889.0000000000045,
@@ -32,7 +31,7 @@ function run() {
3231
var x = x1;
3332
var y = y1;
3433
var IncX1, IncY1;
35-
var IncX2, IncY2;
34+
var IncX2, IncY2;
3635
var Den;
3736
var Num;
3837
var NumAdd;
@@ -84,13 +83,14 @@ function run() {
8483
}
8584

8685
function CalcNormal(V0, V1, V2) {
87-
var A = new Array(); var B = new Array();
86+
var A = new Array();
87+
var B = new Array();
8888
for (var i = 0; i < 3; i++) {
8989
A[i] = V0[i] - V1[i];
9090
B[i] = V2[i] - V1[i];
9191
}
9292
A = CalcCross(A, B);
93-
var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
93+
var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
9494
for (var i = 0; i < 3; i++) A[i] = A[i] / Length;
9595
A[3] = 1;
9696
return A;
@@ -141,10 +141,10 @@ function run() {
141141

142142
function Translate(M, Dx, Dy, Dz) {
143143
var T = [
144-
[1,0,0,Dx],
145-
[0,1,0,Dy],
146-
[0,0,1,Dz],
147-
[0,0,0,1]
144+
[1,0,0,Dx],
145+
[0,1,0,Dy],
146+
[0,0,1,Dz],
147+
[0,0,0,1]
148148
];
149149
return MMulti(T, M);
150150
}
@@ -155,10 +155,10 @@ function run() {
155155
var Cos = Math.cos(a);
156156
var Sin = Math.sin(a);
157157
var R = [
158-
[1,0,0,0],
159-
[0,Cos,-Sin,0],
160-
[0,Sin,Cos,0],
161-
[0,0,0,1]
158+
[1,0,0,0],
159+
[0,Cos,-Sin,0],
160+
[0,Sin,Cos,0],
161+
[0,0,0,1]
162162
];
163163
return MMulti(R, M);
164164
}
@@ -169,10 +169,10 @@ function run() {
169169
var Cos = Math.cos(a);
170170
var Sin = Math.sin(a);
171171
var R = [
172-
[Cos,0,Sin,0],
173-
[0,1,0,0],
174-
[-Sin,0,Cos,0],
175-
[0,0,0,1]
172+
[Cos,0,Sin,0],
173+
[0,1,0,0],
174+
[-Sin,0,Cos,0],
175+
[0,0,0,1]
176176
];
177177
return MMulti(R, M);
178178
}
@@ -183,10 +183,10 @@ function run() {
183183
var Cos = Math.cos(a);
184184
var Sin = Math.sin(a);
185185
var R = [
186-
[Cos,-Sin,0,0],
187-
[Sin,Cos,0,0],
188-
[0,0,1,0],
189-
[0,0,0,1]
186+
[Cos,-Sin,0,0],
187+
[Sin,Cos,0,0],
188+
[0,0,1,0],
189+
[0,0,0,1]
190190
];
191191
return MMulti(R, M);
192192
}
@@ -270,28 +270,28 @@ function run() {
270270

271271
// transformation matrix
272272
MTrans = [
273-
[1,0,0,0],
274-
[0,1,0,0],
275-
[0,0,1,0],
276-
[0,0,0,1]
273+
[1,0,0,0],
274+
[0,1,0,0],
275+
[0,0,1,0],
276+
[0,0,0,1]
277277
];
278-
278+
279279
// position information of qube
280280
MQube = [
281-
[1,0,0,0],
282-
[0,1,0,0],
283-
[0,0,1,0],
284-
[0,0,0,1]
281+
[1,0,0,0],
282+
[0,1,0,0],
283+
[0,0,1,0],
284+
[0,0,0,1]
285285
];
286-
286+
287287
// entity matrix
288288
I = [
289-
[1,0,0,0],
290-
[0,1,0,0],
291-
[0,0,1,0],
292-
[0,0,0,1]
289+
[1,0,0,0],
290+
[0,1,0,0],
291+
[0,0,1,0],
292+
[0,0,0,1]
293293
];
294-
294+
295295
// create qube
296296
Q[0] = new CreateP(-CubeSize,-CubeSize, CubeSize);
297297
Q[1] = new CreateP(-CubeSize, CubeSize, CubeSize);
@@ -301,24 +301,25 @@ function run() {
301301
Q[5] = new CreateP(-CubeSize, CubeSize,-CubeSize);
302302
Q[6] = new CreateP( CubeSize, CubeSize,-CubeSize);
303303
Q[7] = new CreateP( CubeSize,-CubeSize,-CubeSize);
304-
304+
305305
// center of gravity
306306
Q[8] = new CreateP(0, 0, 0);
307-
307+
308308
// anti-clockwise edge check
309309
Q.Edge = [[0,1,2],[3,2,6],[7,6,5],[4,5,1],[4,0,3],[1,5,6]];
310-
310+
311311
// calculate squad normals
312312
Q.Normal = new Array();
313313
for (var i = 0; i < Q.Edge.length; i++) Q.Normal[i] = CalcNormal(Q[Q.Edge[i][0]].V, Q[Q.Edge[i][1]].V, Q[Q.Edge[i][2]].V);
314-
314+
315315
// line drawn ?
316316
Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
317-
317+
318318
// create line pixels
319319
Q.NumPx = 9 * 2 * CubeSize;
320-
for (var i = 0; i < Q.NumPx; i++) CreateP(0,0,0);
321-
320+
Q.LinePixels = new Array()
321+
for (var i = 0; i < Q.NumPx; i++) Q.LinePixels.push(new CreateP(0,0,0));
322+
322323
MTrans = Translate(MTrans, Origin.V[0], Origin.V[1], Origin.V[2]);
323324
MQube = MMulti(MTrans, MQube);
324325

@@ -329,7 +330,7 @@ function run() {
329330
DrawQube();
330331
Testing.Init = true;
331332
Loop();
332-
333+
333334
// Perform a simple sum-based verification.
334335
var sum = 0;
335336
for (var i = 0; i < Q.length; ++i) {

worker/bomb-subtests/3d-cube.js

Lines changed: 48 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@ var MQube = new Array(); // position information of qube
88
var I = new Array(); // entity matrix
99
var Origin = new Object();
1010
var Testing = new Object();
11-
var LoopTimer;
1211

1312
var validation = {
14-
20: 2889.0000000000045,
15-
40: 2889.0000000000055,
16-
80: 2889.000000000005,
17-
160: 2889.0000000000055
13+
20: 2889.0000000000045,
14+
40: 2889.0000000000055,
15+
80: 2889.000000000005,
16+
160: 2889.0000000000055
1817
};
1918

2019
var DisplArea = new Object();
@@ -31,7 +30,7 @@ function DrawLine(From, To) {
3130
var x = x1;
3231
var y = y1;
3332
var IncX1, IncY1;
34-
var IncX2, IncY2;
33+
var IncX2, IncY2;
3534
var Den;
3635
var Num;
3736
var NumAdd;
@@ -83,13 +82,14 @@ function CalcCross(V0, V1) {
8382
}
8483

8584
function CalcNormal(V0, V1, V2) {
86-
var A = new Array(); var B = new Array();
85+
var A = new Array();
86+
var B = new Array();
8787
for (var i = 0; i < 3; i++) {
8888
A[i] = V0[i] - V1[i];
8989
B[i] = V2[i] - V1[i];
9090
}
9191
A = CalcCross(A, B);
92-
var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
92+
var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
9393
for (var i = 0; i < 3; i++) A[i] = A[i] / Length;
9494
A[3] = 1;
9595
return A;
@@ -140,10 +140,10 @@ function MAdd(M1, M2) {
140140

141141
function Translate(M, Dx, Dy, Dz) {
142142
var T = [
143-
[1,0,0,Dx],
144-
[0,1,0,Dy],
145-
[0,0,1,Dz],
146-
[0,0,0,1]
143+
[1,0,0,Dx],
144+
[0,1,0,Dy],
145+
[0,0,1,Dz],
146+
[0,0,0,1]
147147
];
148148
return MMulti(T, M);
149149
}
@@ -154,10 +154,10 @@ function RotateX(M, Phi) {
154154
var Cos = Math.cos(a);
155155
var Sin = Math.sin(a);
156156
var R = [
157-
[1,0,0,0],
158-
[0,Cos,-Sin,0],
159-
[0,Sin,Cos,0],
160-
[0,0,0,1]
157+
[1,0,0,0],
158+
[0,Cos,-Sin,0],
159+
[0,Sin,Cos,0],
160+
[0,0,0,1]
161161
];
162162
return MMulti(R, M);
163163
}
@@ -168,10 +168,10 @@ function RotateY(M, Phi) {
168168
var Cos = Math.cos(a);
169169
var Sin = Math.sin(a);
170170
var R = [
171-
[Cos,0,Sin,0],
172-
[0,1,0,0],
173-
[-Sin,0,Cos,0],
174-
[0,0,0,1]
171+
[Cos,0,Sin,0],
172+
[0,1,0,0],
173+
[-Sin,0,Cos,0],
174+
[0,0,0,1]
175175
];
176176
return MMulti(R, M);
177177
}
@@ -182,10 +182,10 @@ function RotateZ(M, Phi) {
182182
var Cos = Math.cos(a);
183183
var Sin = Math.sin(a);
184184
var R = [
185-
[Cos,-Sin,0,0],
186-
[Sin,Cos,0,0],
187-
[0,0,1,0],
188-
[0,0,0,1]
185+
[Cos,-Sin,0,0],
186+
[Sin,Cos,0,0],
187+
[0,0,1,0],
188+
[0,0,0,1]
189189
];
190190
return MMulti(R, M);
191191
}
@@ -269,28 +269,28 @@ function Init(CubeSize) {
269269

270270
// transformation matrix
271271
MTrans = [
272-
[1,0,0,0],
273-
[0,1,0,0],
274-
[0,0,1,0],
275-
[0,0,0,1]
272+
[1,0,0,0],
273+
[0,1,0,0],
274+
[0,0,1,0],
275+
[0,0,0,1]
276276
];
277-
277+
278278
// position information of qube
279279
MQube = [
280-
[1,0,0,0],
281-
[0,1,0,0],
282-
[0,0,1,0],
283-
[0,0,0,1]
280+
[1,0,0,0],
281+
[0,1,0,0],
282+
[0,0,1,0],
283+
[0,0,0,1]
284284
];
285-
285+
286286
// entity matrix
287287
I = [
288-
[1,0,0,0],
289-
[0,1,0,0],
290-
[0,0,1,0],
291-
[0,0,0,1]
288+
[1,0,0,0],
289+
[0,1,0,0],
290+
[0,0,1,0],
291+
[0,0,0,1]
292292
];
293-
293+
294294
// create qube
295295
Q[0] = new CreateP(-CubeSize,-CubeSize, CubeSize);
296296
Q[1] = new CreateP(-CubeSize, CubeSize, CubeSize);
@@ -300,24 +300,25 @@ function Init(CubeSize) {
300300
Q[5] = new CreateP(-CubeSize, CubeSize,-CubeSize);
301301
Q[6] = new CreateP( CubeSize, CubeSize,-CubeSize);
302302
Q[7] = new CreateP( CubeSize,-CubeSize,-CubeSize);
303-
303+
304304
// center of gravity
305305
Q[8] = new CreateP(0, 0, 0);
306-
306+
307307
// anti-clockwise edge check
308308
Q.Edge = [[0,1,2],[3,2,6],[7,6,5],[4,5,1],[4,0,3],[1,5,6]];
309-
309+
310310
// calculate squad normals
311311
Q.Normal = new Array();
312312
for (var i = 0; i < Q.Edge.length; i++) Q.Normal[i] = CalcNormal(Q[Q.Edge[i][0]].V, Q[Q.Edge[i][1]].V, Q[Q.Edge[i][2]].V);
313-
313+
314314
// line drawn ?
315315
Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
316-
316+
317317
// create line pixels
318318
Q.NumPx = 9 * 2 * CubeSize;
319-
for (var i = 0; i < Q.NumPx; i++) CreateP(0,0,0);
320-
319+
Q.LinePixels = new Array()
320+
for (var i = 0; i < Q.NumPx; i++) Q.LinePixels.push(new CreateP(0,0,0));
321+
321322
MTrans = Translate(MTrans, Origin.V[0], Origin.V[1], Origin.V[2]);
322323
MQube = MMulti(MTrans, MQube);
323324

@@ -328,7 +329,7 @@ function Init(CubeSize) {
328329
DrawQube();
329330
Testing.Init = true;
330331
Loop();
331-
332+
332333
// Perform a simple sum-based verification.
333334
var sum = 0;
334335
for (var i = 0; i < Q.length; ++i) {

0 commit comments

Comments
 (0)