谁能帮注释一下这个程序?
// NMI's Java Code Viewer 6.0a
// www.trinnion.com/javacodeviewer
// Registered to Evaluation Copy
// Generated PGFZR; NeTB 10 2004 15:33:10
//source File Name: Diet3D.java
package Sample3D;
import com.nokia.mid.ui.DirectGraphics;
import com.nokia.mid.ui.DirectUtils;
import javax.microedition.lcdui.Graphics;
public final class Diet3D {
/*public static final int mesh_logo_nv = 10;
public static final int mesh_logo_nf = 8;
public static final int mesh_logo_vv[][] = {
{
-11585, 8689, 0
}, {
-11585, -8689, 0
}, {
-8689, 0, 0
}, {
5793, -8689, 0
}, {
0, 2896, 0
}, {
11585, -8689, 0
}, {
11585, 8689, 0
}, {
8689, 0, 0
}, {
-5793, 8689, 0
}, {
0, -2896, 0
}
};
public static final int mesh_logo_vf[][] = {
{
3, 9, 2
}, {
1, 2, 0
}, {
2, 9, 0
}, {
6, 7, 5
}, {
5, 7, 4
}, {
4, 7, 8
}, {
3, 4, 8
}, {
8, 9, 3
}
};*/
public static final int mesh_cube_nv = 8;
public static final int mesh_cube_nf = 12;
public static final int mesh_cube_vv[][] = {
{
-11585, -11585, 11585
}, {
11585, 11585, 11585
}, {
11585, -11585, 11585
}, {
-11585, 11585, 11585
}, {
11585, 11585, -11585
}, {
11585, -11585, -11585
}, {
-11585, 11585, -11585
}, {
-11585, -11585, -11585
}
};
public static final int mesh_cube_vf[][] = {
{
0, 7, 2
}, {
5, 2, 7
}, {
6, 3, 4
}, {
1, 4, 3
}, {
6, 7, 3
}, {
0, 3, 7
}, {
4, 5, 6
}, {
7, 6, 5
}, {
1, 2, 4
}, {
5, 4, 2
}, {
3, 0, 1
}, {
2, 1, 0
}
};
public static final int mesh_cube_vc[] = {
0xff0000, 0xff0000, 65280, 65280, 255, 255, 0xff00ff, 0xff00ff, 0xffff00, 0xffff00,
65535, 65535
};
/*public static final int mesh_sphere_nv = 58;
public static final int mesh_sphere_nf = 112;
public static final int mesh_sphere_vv[][] = {
{
0, 11585, 0
}, {
3135, 10703, -3135
}, {
0, 10703, -4433
}, {
-3135, 10703, -3135
}, {
-4433, 10703, 0
}, {
-3135, 10703, 3135
}, {
0, 10703, 4433
}, {
3135, 10703, 3135
}, {
4433, 10703, 0
}, {
5793, 8192, -5793
}, {
0, 8192, -8192
}, {
-5793, 8192, -5793
}, {
-8192, 8192, 0
}, {
-5793, 8192, 5793
}, {
0, 8192, 8192
}, {
5793, 8192, 5793
}, {
8192, 8192, 0
}, {
7568, 4433, -7568
}, {
0, 4433, -10703
}, {
-7568, 4433, -7568
}, {
-10703, 4433, 0
}, {
-7568, 4433, 7568
}, {
0, 4433, 10703
}, {
7568, 4433, 7568
}, {
10703, 4433, 0
}, {
8192, 0, -8192
}, {
0, 0, -11585
}, {
-8192, 0, -8192
}, {
-11585, 0, 0
}, {
-8192, 0, 8192
}, {
0, 0, 11585
}, {
8192, 0, 8192
}, {
11585, 0, 0
}, {
7568, -4433, -7568
}, {
0, -4433, -10703
}, {
-7568, -4433, -7568
}, {
-10703, -4433, 0
}, {
-7568, -4433, 7568
}, {
0, -4433, 10703
}, {
7568, -4433, 7568
}, {
10703, -4433, 0
}, {
5793, -8192, -5793
}, {
0, -8192, -8192
}, {
-5793, -8192, -5793
}, {
-8192, -8192, 0
}, {
-5793, -8192, 5793
}, {
0, -8192, 8192
}, {
5793, -8192, 5793
}, {
8192, -8192, 0
}, {
3135, -10703, -3135
}, {
0, -10703, -4433
}, {
-3135, -10703, -3135
}, {
-4433, -10703, 0
}, {
-3135, -10703, 3135
}, {
0, -10703, 4433
}, {
3135, -10703, 3135
}, {
4433, -10703, 0
}, {
0, -11585, 0
}
};
public static final int mesh_sphere_vf[][] = {
{
56, 48, 47
}, {
47, 55, 56
}, {
54, 55, 47
}, {
47, 46, 54
}, {
54, 46, 45
}, {
45, 53, 54
}, {
52, 53, 45
}, {
45, 44, 52
}, {
52, 44, 43
}, {
43, 51, 52
}, {
50, 51, 43
}, {
43, 42, 50
}, {
50, 42, 41
}, {
41, 49, 50
}, {
56, 49, 41
}, {
41, 48, 56
}, {
47, 48, 40
}, {
40, 39, 47
}, {
47, 39, 38
}, {
38, 46, 47
}, {
45, 46, 38
}, {
38, 37, 45
}, {
45, 37, 36
}, {
36, 44, 45
}, {
43, 44, 36
}, {
36, 35, 43
}, {
43, 35, 34
}, {
34, 42, 43
}, {
41, 42, 34
}, {
34, 33, 41
}, {
41, 33, 40
}, {
40, 48, 41
}, {
40, 32, 31
}, {
31, 39, 40
}, {
38, 39, 31
}, {
31, 30, 38
}, {
38, 30, 29
}, {
29, 37, 38
}, {
36, 37, 29
}, {
29, 28, 36
}, {
36, 28, 27
}, {
27, 35, 36
}, {
34, 35, 27
}, {
27, 26, 34
}, {
34, 26, 25
}, {
25, 33, 34
}, {
40, 33, 25
}, {
25, 32, 40
}, {
31, 32, 24
}, {
24, 23, 31
}, {
31, 23, 22
}, {
22, 30, 31
}, {
29, 30, 22
}, {
22, 21, 29
}, {
29, 21, 20
}, {
20, 28, 29
}, {
27, 28, 20
}, {
20, 19, 27
}, {
27, 19, 18
}, {
18, 26, 27
}, {
25, 26, 18
}, {
18, 17, 25
}, {
25, 17, 24
}, {
24, 32, 25
}, {
24, 16, 15
}, {
15, 23, 24
}, {
22, 23, 15
}, {
15, 14, 22
}, {
22, 14, 13
}, {
13, 21, 22
}, {
20, 21, 13
}, {
13, 12, 20
}, {
20, 12, 11
}, {
11, 19, 20
}, {
18, 19, 11
}, {
11, 10, 18
}, {
18, 10, 9
}, {
9, 17, 18
}, {
24, 17, 9
}, {
9, 16, 24
}, {
15, 16, 8
}, {
8, 7, 15
}, {
15, 7, 6
}, {
6, 14, 15
}, {
13, 14, 6
}, {
6, 5, 13
}, {
13, 5, 4
}, {
4, 12, 13
}, {
11, 12, 4
}, {
4, 3, 11
}, {
11, 3, 2
}, {
2, 10, 11
}, {
9, 10, 2
}, {
2, 1, 9
}, {
9, 1, 8
}, {
8, 16, 9
}, {
57, 56, 55
}, {
57, 55, 54
}, {
57, 54, 53
}, {
57, 53, 52
}, {
57, 52, 51
}, {
57, 51, 50
}, {
57, 50, 49
}, {
57, 49, 56
}, {
0, 7, 8
}, {
0, 6, 7
}, {
0, 5, 6
}, {
0, 4, 5
}, {
0, 3, 4
}, {
0, 2, 3
}, {
0, 1, 2
}, {
0, 8, 1
}
};
public static final int mesh_sphere_vc[] = {
0xed80ed, 0xed80ed, 0xa0bfdf, 0xa0bfdf, 255, 255, 65280, 65280, 0xff0000, 0xff0000,
0x82004b, 0x82004b, 0xff7700, 0xff7700, 0xffff00, 0xffff00, 0xed80ed, 0xed80ed, 0, 0xa0bfdf,
255, 0, 65280, 65280, 0xff0000, 0xff0000, 0x82004b, 0x82004b, 0xff7700, 0xff7700,
0xffff00, 0xffff00, 0xed80ed, 0xed80ed, 0xa0bfdf, 0xa0bfdf, 255, 255, 65280, 65280,
0xff0000, 0xff0000, 0x82004b, 0x82004b, 0xff7700, 0xff7700, 0xffff00, 0xffff00, 0xed80ed, 0xed80ed,
0xa0bfdf, 0xa0bfdf, 255, 255, 65280, 65280, 0xff0000, 0xff0000, 0x82004b, 0x82004b,
0xff7700, 0xff7700, 0xffff00, 0xffff00, 0xed80ed, 0xed80ed, 0, 0xa0bfdf, 255, 0,
65280, 65280, 0xff0000, 0xff0000, 0x82004b, 0x82004b, 0xff7700, 0xff7700, 0xffff00, 0xffff00,
0xed80ed, 0xed80ed, 0xa0bfdf, 0xa0bfdf, 255, 255, 65280, 65280, 0xff0000, 0xff0000,
0x82004b, 0x82004b, 0xff7700, 0xff7700, 0xffff00, 0xffff00, 0xed80ed, 0xa0bfdf, 255, 65280,
0xff0000, 0x82004b, 0xff7700, 0xffff00, 0xed80ed, 0xa0bfdf, 255, 65280, 0xff0000, 0x82004b,
0xff7700, 0xffff00
};
public static final int mesh_cross_nv = 77;
public static final int mesh_cross_nf = 132;
public static final int mesh_cross_vv[][] = {
{
0, 0, 11585
}, {
1390, 1390, 5329
}, {
-1274, 1390, 5329
}, {
-1274, -1390, 5329
}, {
1390, -1390, 5329
}, {
-463, -463, 6256
}, {
463, -463, 6256
}, {
463, 463, 6256
}, {
-463, 463, 6256
}, {
-463, 463, 463
}, {
-463, -463, 463
}, {
463, 463, 463
}, {
463, -463, 463
}, {
0, 0, -11585
}, {
-1274, 1390, -5329
}, {
1390, 1390, -5329
}, {
1390, -1390, -5329
}, {
-1274, -1390, -5329
}, {
463, -463, -6256
}, {
-463, -463, -6256
}, {
-463, 463, -6256
}, {
463, 463, -6256
}, {
463, 463, -463
}, {
463, -463, -463
}, {
-463, 463, -463
}, {
-463, -463, -463
}, {
0, 11585, 0
}, {
1390, 5329, -1390
}, {
-1274, 5329, -1390
}, {
-1274, 5329, 1390
}, {
1390, 5329, 1390
}, {
-463, 6256, 463
}, {
463, 6256, 463
}, {
463, 6256, -463
}, {
-463, 6256, -463
}, {
-463, 463, -463
}, {
-463, 463, 463
}, {
463, 463, -463
}, {
463, 463, 463
}, {
0, -11585, 0
}, {
-1274, -5329, -1390
}, {
1390, -5329, -1390
}, {
1390, -5329, 1390
}, {
-1274, -5329, 1390
}, {
463, -6256, 463
}, {
-463, -6256, 463
}, {
-463, -6256, -463
}, {
463, -6256, -463
}, {
463, -463, -463
}, {
463, -463, 463
}, {
-463, -463, -463
}, {
-463, -463, 463
}, {
-11585, 0, 0
}, {
-5329, 1390, -1390
}, {
-5329, -1390, -1390
}, {
-5329, -1390, 1390
}, {
-5329, 1390, 1390
}, {
-6256, -463, 463
}, {
-6256, 463, 463
}, {
-6256, 463, -463
}, {
-6256, -463, -463
}, {
-463, -463, -463
}, {
-463, -463, 463
}, {
-463, 463, -463
}, {
-463, 463, 463
}, {
11585, 0, 0
}, {
5329, -1390, -1390
}, {
5329, 1390, -1390
}, {
5329, 1390, 1390
}, {
5329, -1390, 1390
}, {
6256, 463, 463
}, {
6256, -463, 463
}, {
6256, -463, -463
}, {
6256, 463, -463
}, {
463, 463, -463
}, {
463, 463, 463
}, {
463, -463, 463
}
};
public static final int mesh_cross_vf[][] = {
{
75, 74, 48
}, {
75, 48, 76
}, {
75, 76, 71
}, {
71, 70, 75
}, {
74, 73, 72
}, {
72, 48, 74
}, {
71, 76, 48
}, {
71, 48, 72
}, {
74, 75, 70
}, {
70, 73, 74
}, {
73, 70, 68
}, {
73, 68, 67
}, {
67, 72, 73
}, {
72, 67, 66
}, {
72, 66, 71
}, {
71, 66, 69
}, {
70, 71, 69
}, {
70, 69, 68
}, {
65, 69, 66
}, {
68, 69, 65
}, {
65, 67, 68
}, {
65, 66, 67
}, {
62, 61, 63
}, {
62, 63, 64
}, {
62, 64, 58
}, {
58, 57, 62
}, {
61, 60, 59
}, {
59, 63, 61
}, {
58, 64, 63
}, {
58, 63, 59
}, {
61, 62, 57
}, {
57, 60, 61
}, {
60, 57, 55
}, {
60, 55, 54
}, {
54, 59, 60
}, {
59, 54, 53
}, {
59, 53, 58
}, {
58, 53, 56
}, {
57, 58, 56
}, {
57, 56, 55
}, {
52, 56, 53
}, {
55, 56, 52
}, {
52, 54, 55
}, {
52, 53, 54
}, {
49, 48, 50
}, {
49, 50, 51
}, {
49, 51, 45
}, {
45, 44, 49
}, {
48, 47, 46
}, {
46, 50, 48
}, {
45, 51, 50
}, {
45, 50, 46
}, {
48, 49, 44
}, {
44, 47, 48
}, {
47, 44, 42
}, {
47, 42, 41
}, {
41, 46, 47
}, {
46, 41, 40
}, {
46, 40, 45
}, {
45, 40, 43
}, {
44, 45, 43
}, {
44, 43, 42
}, {
39, 43, 40
}, {
42, 43, 39
}, {
39, 41, 42
}, {
39, 40, 41
}, {
36, 35, 37
}, {
36, 37, 38
}, {
36, 38, 32
}, {
32, 31, 36
}, {
35, 34, 33
}, {
33, 37, 35
}, {
32, 38, 37
}, {
32, 37, 33
}, {
35, 36, 31
}, {
31, 34, 35
}, {
34, 31, 29
}, {
34, 29, 28
}, {
28, 33, 34
}, {
33, 28, 27
}, {
33, 27, 32
}, {
32, 27, 30
}, {
31, 32, 30
}, {
31, 30, 29
}, {
26, 30, 27
}, {
29, 30, 26
}, {
26, 28, 29
}, {
26, 27, 28
}, {
23, 22, 24
}, {
23, 24, 25
}, {
23, 25, 19
}, {
19, 18, 23
}, {
22, 21, 20
}, {
20, 24, 22
}, {
19, 25, 24
}, {
19, 24, 20
}, {
22, 23, 18
}, {
18, 21, 22
}, {
21, 18, 16
}, {
21, 16, 15
}, {
15, 20, 21
}, {
20, 15, 14
}, {
20, 14, 19
}, {
19, 14, 17
}, {
18, 19, 17
}, {
18, 17, 16
}, {
13, 17, 14
}, {
16, 17, 13
}, {
13, 15, 16
}, {
13, 14, 15
}, {
10, 9, 11
}, {
10, 11, 12
}, {
10, 12, 6
}, {
6, 5, 10
}, {
9, 8, 7
}, {
7, 11, 9
}, {
6, 12, 11
}, {
6, 11, 7
}, {
9, 10, 5
}, {
5, 8, 9
}, {
8, 5, 3
}, {
8, 3, 2
}, {
2, 7, 8
}, {
7, 2, 1
}, {
7, 1, 6
}, {
6, 1, 4
}, {
5, 6, 4
}, {
5, 4, 3
}, {
0, 4, 1
}, {
3, 4, 0
}, {
0, 2, 3
}, {
0, 1, 2
}
};
public static final int mesh_tux_nv = 146;
public static final int mesh_tux_nf = 250;
public static final int mesh_tux_vv[][] = {
{
-4595, -10571, 1143
}, {
-1754, -10571, 1143
}, {
1560, -11518, 7203
}, {
-1754, -11518, 1143
}, {
-3174, -11518, 8718
}, {
-4595, -11518, 1143
}, {
-7909, -11518, 7203
}, {
2055, -10638, 1138
}, {
4895, -10638, 1138
}, {
8209, -11585, 7198
}, {
4895, -11585, 1138
}, {
3475, -11585, 8713
}, {
2055, -11585, 1138
}, {
-1259, -11585, 7198
}, {
-384, -11518, -564
}, {
-10640, -4959, -564
}, {
-8652, -1645, -2457
}, {
-8652, -1645, 1330
}, {
-6001, 1006, -2457
}, {
-6001, 1006, 1330
}, {
-4012, 1669, -2457
}, {
-4012, 1669, 1330
}, {
10640, -5325, -564
}, {
8652, -2011, -2457
}, {
8652, -2011, 1330
}, {
6001, 640, -2457
}, {
6001, 640, 1330
}, {
4012, 1303, -2457
}, {
4012, 1303, 1330
}, {
2404, -11329, 1228
}, {
993, -11329, 2451
}, {
-855, -11329, 2717
}, {
-2554, -11329, 1941
}, {
-3563, -11329, 370
}, {
-3563, -11329, -1497
}, {
-2554, -11329, -3068
}, {
-855, -11329, -3844
}, {
993, -11329, -3578
}, {
2404, -11329, -2355
}, {
2930, -11329, -564
}, {
5591, -9435, 3276
}, {
2567, -9435, 5896
}, {
-1394, -9435, 6465
}, {
-5034, -9435, 4803
}, {
-7197, -9435, 1437
}, {
-7197, -9435, -2564
}, {
-5034, -9435, -5931
}, {
-1394, -9435, -7593
}, {
2567, -9435, -7023
}, {
5591, -9435, -4403
}, {
6718, -9435, -564
}, {
6467, -5932, 3839
}, {
2999, -5932, 6843
}, {
-1542, -5932, 7496
}, {
-5716, -5932, 5590
}, {
-8197, -5932, 1730
}, {
-8197, -5932, -2858
}, {
-5716, -5932, -6718
}, {
-1542, -5932, -8624
}, {
2999, -5932, -7971
}, {
6467, -5932, -4966
}, {
7759, -5932, -564
}, {
6546, -3659, 3890
}, {
3039, -3659, 6929
}, {
-1556, -3659, 7590
}, {
-5778, -3659, 5662
}, {
-8287, -3659, 1757
}, {
-8287, -3659, -2885
}, {
-5778, -3659, -6789
}, {
-1556, -3659, -8718
}, {
3039, -3659, -8057
}, {
6546, -3659, -5017
}, {
7854, -3659, -564
}, {
5830, -1292, 3429
}, {
2685, -1292, 6154
}, {
-1435, -1292, 6747
}, {
-5220, -1292, 5018
}, {
-7470, -1292, 1517
}, {
-7470, -1292, -2644
}, {
-5220, -1292, -6145
}, {
-1435, -1292, -7874
}, {
2685, -1292, -7282
}, {
5830, -1292, -4557
}, {
7002, -1292, -564
}, {
4475, 1075, 2559
}, {
2016, 1075, 4690
}, {
-1205, 1075, 5153
}, {
-4166, 1075, 3801
}, {
-5925, 1075, 1063
}, {
-5925, 1075, -2191
}, {
-4166, 1075, -4929
}, {
-1205, 1075, -6281
}, {
2016, 1075, -5818
}, {
4475, 1075, -3686
}, {
5392, 1075, -564
}, {
3121, 3442, 1689
}, {
1347, 3442, 3226
}, {
-976, 3442, 3560
}, {
-3112, 3442, 2585
}, {
-4381, 3442, 610
}, {
-4381, 3442, -1737
}, {
-3112, 3442, -3712
}, {
-976, 3442, -4687
}, {
1347, 3442, -4353
}, {
3121, 3442, -2816
}, {
3783, 3442, -564
}, {
2882, 9029, 1535
}, {
1229, 9029, 2968
}, {
-936, 9029, 3279
}, {
-2926, 9029, 2370
}, {
-4108, 9029, 530
}, {
-4108, 9029, -1657
}, {
-2926, 9029, -3498
}, {
-936, 9029, -4406
}, {
1229, 9029, -4095
}, {
2882, 9029, -2663
}, {
3499, 9029, -564
}, {
1847, 10828, 870
}, {
718, 10828, 1848
}, {
-761, 10828, 2060
}, {
-2120, 10828, 1440
}, {
-2927, 10828, 183
}, {
-2927, 10828, -1311
}, {
-2120, 10828, -2567
}, {
-761, 10828, -3188
}, {
718, 10828, -2975
}, {
2268, 10828, -564
}, {
-384, 11585, -564
}, {
1847, 10828, -1997
}, {
1286, 3991, 2277
}, {
-857, 2931, 2277
}, {
-2999, 3991, 2277
}, {
-3887, 5052, 2277
}, {
-2999, 6112, 2277
}, {
-857, 7173, 2277
}, {
1286, 6112, 2277
}, {
2173, 5052, 2277
}, {
214, 4787, 6538
}, {
-857, 4522, 6538
}, {
-1928, 4787, 6538
}, {
-2372, 5052, 6538
}, {
-1928, 5317, 6538
}, {
-857, 5582, 6538
}, {
658, 5052, 6538
}, {
-857, 5052, 7011
}, {
214, 5317, 6538
}
};
public static final int mesh_tux_vf[][] = {
{
145, 144, 143
}, {
142, 144, 145
}, {
141, 144, 142
}, {
140, 144, 141
}, {
139, 144, 140
}, {
138, 144, 139
}, {
137, 144, 138
}, {
143, 144, 137
}, {
143, 136, 145
}, {
135, 145, 136
}, {
145, 135, 142
}, {
134, 142, 135
}, {
142, 134, 141
}, {
133, 141, 134
}, {
141, 133, 140
}, {
132, 140, 133
}, {
140, 132, 139
}, {
131, 139, 132
}, {
139, 131, 138
}, {
130, 138, 131
}, {
138, 130, 137
}, {
129, 137, 130
}, {
137, 129, 143
}, {
136, 143, 129
}, {
128, 127, 126
}, {
125, 127, 128
}, {
124, 127, 125
}, {
123, 127, 124
}, {
122, 127, 123
}, {
121, 127, 122
}, {
120, 127, 121
}, {
119, 127, 120
}, {
118, 127, 119
}, {
117, 127, 118
}, {
126, 127, 117
}, {
126, 116, 128
}, {
115, 128, 116
}, {
128, 115, 125
}, {
114, 125, 115
}, {
125, 114, 124
}, {
113, 124, 114
}, {
124, 113, 123
}, {
112, 123, 113
}, {
123, 112, 122
}, {
111, 122, 112
}, {
122, 111, 121
}, {
110, 121, 111
}, {
121, 110, 120
}, {
109, 120, 110
}, {
120, 109, 119
}, {
108, 119, 109
}, {
119, 108, 118
}, {
107, 118, 108
}, {
118, 107, 117
}, {
106, 117, 107
}, {
117, 106, 126
}, {
116, 126, 106
}, {
116, 105, 115
}, {
104, 115, 105
}, {
115, 104, 114
}, {
103, 114, 104
}, {
114, 103, 113
}, {
102, 113, 103
}, {
113, 102, 112
}, {
101, 112, 102
}, {
112, 101, 111
}, {
100, 111, 101
}, {
111, 100, 110
}, {
99, 110, 100
}, {
110, 99, 109
}, {
98, 109, 99
}, {
109, 98, 108
}, {
97, 108, 98
}, {
108, 97, 107
}, {
96, 107, 97
}, {
107, 96, 106
}, {
95, 106, 96
}, {
106, 95, 116
}, {
105, 116, 95
}, {
105, 94, 104
}, {
93, 104, 94
}, {
104, 93, 103
}, {
92, 103, 93
}, {
103, 92, 102
}, {
91, 102, 92
}, {
102, 91, 101
}, {
90, 101, 91
}, {
101, 90, 100
}, {
89, 100, 90
}, {
100, 89, 99
}, {
88, 99, 89
}, {
99, 88, 98
}, {
87, 98, 88
}, {
98, 87, 97
}, {
86, 97, 87
}, {
97, 86, 96
}, {
85, 96, 86
}, {
96, 85, 95
}, {
84, 95, 85
}, {
95, 84, 105
}, {
94, 105, 84
}, {
94, 83, 93
}, {
82, 93, 83
}, {
93, 82, 92
}, {
81, 92, 82
}, {
92, 81, 91
}, {
80, 91, 81
}, {
91, 80, 90
}, {
79, 90, 80
}, {
90, 79, 89
}, {
78, 89, 79
}, {
89, 78, 88
}, {
77, 88, 78
}, {
88, 77, 87
}, {
76, 87, 77
}, {
87, 76, 86
}, {
75, 86, 76
}, {
86, 75, 85
}, {
74, 85, 75
}, {
85, 74, 84
}, {
73, 84, 74
}, {
84, 73, 94
}, {
83, 94, 73
}, {
83, 72, 82
}, {
71, 82, 72
}, {
82, 71, 81
}, {
70, 81, 71
}, {
81, 70, 80
}, {
69, 80, 70
}, {
80, 69, 79
}, {
68, 79, 69
}, {
79, 68, 78
}, {
67, 78, 68
}, {
78, 67, 77
}, {
66, 77, 67
}, {
77, 66, 76
}, {
65, 76, 66
}, {
76, 65, 75
}, {
64, 75, 65
}, {
75, 64, 74
}, {
63, 74, 64
}, {
74, 63, 73
}, {
62, 73, 63
}, {
73, 62, 83
}, {
72, 83, 62
}, {
72, 61, 71
}, {
60, 71, 61
}, {
71, 60, 70
}, {
59, 70, 60
}, {
70, 59, 69
}, {
58, 69, 59
}, {
69, 58, 68
}, {
57, 68, 58
}, {
68, 57, 67
}, {
56, 67, 57
}, {
67, 56, 66
}, {
55, 66, 56
}, {
66, 55, 65
}, {
54, 65, 55
}, {
65, 54, 64
}, {
53, 64, 54
}, {
64, 53, 63
}, {
52, 63, 53
}, {
63, 52, 62
}, {
51, 62, 52
}, {
62, 51, 72
}, {
61, 72, 51
}, {
61, 50, 60
}, {
49, 60, 50
}, {
60, 49, 59
}, {
48, 59, 49
}, {
59, 48, 58
}, {
47, 58, 48
}, {
58, 47, 57
}, {
46, 57, 47
}, {
57, 46, 56
}, {
45, 56, 46
}, {
56, 45, 55
}, {
44, 55, 45
}, {
55, 44, 54
}, {
43, 54, 44
}, {
54, 43, 53
}, {
42, 53, 43
}, {
53, 42, 52
}, {
41, 52, 42
}, {
52, 41, 51
}, {
40, 51, 41
}, {
51, 40, 61
}, {
50, 61, 40
}, {
50, 39, 49
}, {
38, 49, 39
}, {
49, 38, 48
}, {
37, 48, 38
}, {
48, 37, 47
}, {
36, 47, 37
}, {
47, 36, 46
}, {
35, 46, 36
}, {
46, 35, 45
}, {
34, 45, 35
}, {
45, 34, 44
}, {
33, 44, 34
}, {
44, 33, 43
}, {
32, 43, 33
}, {
43, 32, 42
}, {
31, 42, 32
}, {
42, 31, 41
}, {
30, 41, 31
}, {
41, 30, 40
}, {
29, 40, 30
}, {
40, 29, 50
}, {
39, 50, 29
}, {
28, 27, 26
}, {
25, 26, 27
}, {
26, 25, 24
}, {
23, 24, 25
}, {
24, 23, 22
}, {
22, 23, 24
}, {
25, 24, 23
}, {
24, 25, 26
}, {
21, 20, 19
}, {
18, 19, 20
}, {
19, 18, 17
}, {
16, 17, 18
}, {
17, 16, 15
}, {
15, 16, 17
}, {
18, 17, 16
}, {
17, 18, 19
}, {
39, 14, 38
}, {
38, 14, 37
}, {
37, 14, 36
}, {
36, 14, 35
}, {
35, 14, 34
}, {
34, 14, 33
}, {
33, 14, 32
}, {
32, 14, 31
}, {
31, 14, 30
}, {
30, 14, 29
}, {
29, 14, 39
}, {
13, 12, 11
}, {
10, 11, 12
}, {
11, 10, 9
}, {
9, 8, 11
}, {
7, 11, 8
}, {
11, 7, 13
}, {
6, 5, 4
}, {
3, 4, 5
}, {
4, 3, 2
}, {
2, 1, 4
}, {
0, 4, 1
}, {
4, 0, 6
}
};*/
public static final int mesh_tux_vc[] = {
0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00,
0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00,
0xffff00, 0xffff00, 0xffff00, 0xffff00, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0,
0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0xe0e0e0,
0xe0e0e0, 0x444444, 0xe0e0e0, 0x444444, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0,
0xe0e0e0, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0,
0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0,
0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0xe0e0e0,
0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0xe0e0e0, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030,
0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0x303030, 0xffff00, 0xffff00,
0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00, 0xffff00
};
static int init = 0;
public int w_;
public int h_;
public int hw_;
int screen[] = {
0, 0, 0
};
static final int scale = 2;
static int screenscale = 12;
public int rx_;
public int ry_;
public int rz_;
public int updated;
public int mode;
static final String vmode[] = {
"demo", "dots", "wire", "flat", "front", "face", "light", "dynlight", "test/mixed", "test/full",
"pixel", "zsort", "zsort+light"
};
static int shape = 0;
static final String vshape[] = {
"cube", "sphere", "axis", "logo2d", "tux"
};
static final String vanim[] = {
"demo", "spin", "no"
};
public static int anim = 0;
public static int tick = 0;
public static final int offset = 10;
public static final int one = 1024;
public static final int PI = 3217;
public static final int sqrt2 = 1448;
public static final int sqrt3 = 1774;
public static final int exp = 2784;
public static final int log10 = 2358;
public static final int sinesize = 64;
public static final int sine[] = {
0, 100, 200, 297, 392, 483, 569, 650, 724, 792,
851, 903, 946, 980, 1004, 1019, 1024, 1019, 1004, 980,
946, 903, 851, 792, 724, 650, 569, 483, 392, 297,
200, 100, 0, -100, -200, -297, -392, -483, -569, -650,
-724, -792, -851, -903, -946, -980, -1004, -1019, -1024, -1019,
-1004, -980, -946, -903, -851, -792, -724, -650, -569, -483,
-392, -297, -200, -100
};
public static final int precision_sqrt = 1;
public static final int PI2 = 6434;
public static final int half = 512;
public static final int sinstep = 100;
public static final int sinoff = 48;
static int tmpint4x4a[][] = new int[4][4];
static int tmpint4x4b[][] = new int[4][4];
static int sc[] = new int[2];
static DirectGraphics dg = null;
static int tmpRaster;
static int colorbuffer[] = null;
static int bound = 16382;
static int colormap[] = null;
static final int colormapsize = 64;
int light[] = {
0, 0, -1024
};
static int m_[][] = new int[4][4];
static int va[] = {
0, 0, 0
};
static int vb[] = {
0, 0, 0
};
static int vc[] = {
0, 0, 0
};
static int vn[] = {
0, 0, 0
};
int obj_nv;
int obj_nf;
int obj_vv[][];
int obj_vf[][];
int obj_vc[];
int obj_trans[][];
int obj_norm[][];
int obj_center[][];
public int rotation_;
public static int max(int i, int j) {
return i <= j ? j : i;
}
public static int sqrt(int i) {//开平方
if(i == 0)
return 0;
int l = 0;
int j;
if(i >= 1024)
j = 1024;
else
j = 1;
do {
int k = (i << 10) / j;
j = j + k >> 1;
l = k - j;
l = l <= 0 ? -l : l;
} while(l > 1);
return j;
}
public static void initIdentity(int ai[][]) {//注销后没有图形
ai[0][0] = ai[1][1] = ai[2][2] = 1024;
ai[0][1] = ai[0][2] = ai[1][0] = ai[1][2] = ai[2][0] = ai[2][1] = 0;
ai[3][0] = ai[3][1] = ai[3][2] = 1024;
ai[0][3] = ai[1][3] = ai[2][3] = 0;
ai[3][3] = 1024;
}
/* public static void printV(int ai[]) {注销后没变化
boolean flag = false;
for(int i = 0; i < 2; i++);
}*/
/*public static void printS(int i) {注销后没变化
}
public static void printM(int ai[][]) {注销后没变化
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++);
}
}*/
public static void crossVV(int ai[], int ai1[], int ai2[]) {//注销有光影变化
ai2[0] = (ai[1] * ai1[2] + 512 >> 10) - (ai[2] * ai1[1] + 512 >> 10);
ai2[1] = (ai[2] * ai1[0] + 512 >> 10) - (ai[0] * ai1[2] + 512 >> 10);
ai2[2] = (ai[0] * ai1[1] + 512 >> 10) - (ai[1] * ai1[0] + 512 >> 10);
}
public static void normVVV(int ai[], int ai1[], int ai2[], int ai3[]) {//注销后有光影变化
int ai4[] = new int[3];
int ai5[] = new int[3];
ai4[0] = ai2[0] - ai[0];
ai4[1] = ai2[1] - ai[1];
ai4[2] = ai2[2] - ai[2];
ai5[0] = ai1[0] - ai[0];
ai5[1] = ai1[1] - ai[1];
ai5[2] = ai1[2] - ai[2];
crossVV(ai4, ai5, ai3);
}
/*ublic static void normV(int ai[], int ai1[]) {//注销后没有变化
ai1[0] = ai[0];
ai1[1] = ai[1];
ai1[2] = ai[2];
int i = sqrt((ai[0] * ai[0] + 512 >> 10) + (ai[1] * ai[1] + 512 >> 10) + (ai[2] * ai[2] + 512 >> 10));
if(i != 0)
i = 0x100000 / i;
ai1[0] = ai1[0] * i + 512 >> 10;
ai1[1] = ai1[1] * i + 512 >> 10;
ai1[2] = ai1[2] * i + 512 >> 10;
}*/
public static int dotVV(int ai[], int ai1[]) {
return (ai[0] * ai1[0] + 512 >> 10) + (ai[1] * ai1[1] + 512 >> 10) + (ai[2] * ai1[2] + 512 >> 10);
}
public static void copyMM(int ai[][], int ai1[][]) {//diao yong tu xing
ai1[0][0] = ai[0][0];
ai1[0][1] = ai[0][1];
ai1[0][2] = ai[0][2];
ai1[1][0] = ai[1][0];
ai1[1][1] = ai[1][1];
ai1[1][2] = ai[1][2];
ai1[2][0] = ai[2][0];
ai1[2][1] = ai[2][1];
ai1[2][2] = ai[2][2];
}
public static void multMM(int ai[][], int ai1[][], int ai2[][]) {
ai2[0][0] = (ai[0][0] * ai1[0][0] + 512 >> 10) + (ai[0][1] * ai1[1][0] + 512 >> 10) + (ai[0][2] * ai1[2][0] + 512 >> 10);
ai2[0][1] = (ai[0][0] * ai1[0][1] + 512 >> 10) + (ai[0][1] * ai1[1][1] + 512 >> 10) + (ai[0][2] * ai1[2][1] + 512 >> 10);
ai2[0][2] = (ai[0][0] * ai1[0][2] + 512 >> 10) + (ai[0][1] * ai1[1][2] + 512 >> 10) + (ai[0][2] * ai1[2][2] + 512 >> 10);
ai2[1][0] = (ai[1][0] * ai1[0][0] + 512 >> 10) + (ai[1][1] * ai1[1][0] + 512 >> 10) + (ai[1][2] * ai1[2][0] + 512 >> 10);
ai2[1][1] = (ai[1][0] * ai1[0][1] + 512 >> 10) + (ai[1][1] * ai1[1][1] + 512 >> 10) + (ai[1][2] * ai1[2][1] + 512 >> 10);
ai2[1][2] = (ai[1][0] * ai1[0][2] + 512 >> 10) + (ai[1][1] * ai1[1][2] + 512 >> 10) + (ai[1][2] * ai1[2][2] + 512 >> 10);
ai2[2][0] = (ai[2][0] * ai1[0][0] + 512 >> 10) + (ai[2][1] * ai1[1][0] + 512 >> 10) + (ai[2][2] * ai1[2][0] + 512 >> 10);
ai2[2][1] = (ai[2][0] * ai1[0][1] + 512 >> 10) + (ai[2][1] * ai1[1][1] + 512 >> 10) + (ai[2][2] * ai1[2][1] + 512 >> 10);
ai2[2][2] = (ai[2][0] * ai1[0][2] + 512 >> 10) + (ai[2][1] * ai1[1][2] + 512 >> 10) + (ai[2][2] * ai1[2][2] + 512 >> 10);
}//zhuxiaohou tuxing buyundong zhiyouyigemian
public static void multMV(int ai[][], int ai1[], int ai2[]) {
ai2[0] = (ai1[0] * ai[0][0] + 512 >> 10) + (ai1[1] * ai[0][1] + 512 >> 10) + (ai1[2] * ai[0][2] + 512 >> 10);
ai2[1] = (ai1[0] * ai[1][0] + 512 >> 10) + (ai1[1] * ai[1][1] + 512 >> 10) + (ai1[2] * ai[1][2] + 512 >> 10);
ai2[2] = (ai1[0] * ai[2][0] + 512 >> 10) + (ai1[1] * ai[2][1] + 512 >> 10) + (ai1[2] * ai[2][2] + 512 >> 10);
}//meiyoutuxing zhiyouyigedian
public static void rotate(int i, int j, int k, int ai[][]) {
if(k != 0) {
for(; k < 0; k += 6434);
sc[0] = ((k % 6434) * 64 + 512) / 6434;
sc[1] = sc[0] + 16;
sc[0] = sine[sc[0] % 64];
sc[1] = sine[sc[1] % 64];
tmpint4x4a[0][0] = sc[1];
tmpint4x4a[0][1] = -sc[0];
tmpint4x4a[0][2] = 0;
tmpint4x4a[1][0] = sc[0];
tmpint4x4a[1][1] = sc[1];
tmpint4x4a[1][2] = 0;
tmpint4x4a[2][0] = 0;
tmpint4x4a[2][1] = 0;
tmpint4x4a[2][2] = 1024;
copyMM(ai, tmpint4x4b);
multMM(tmpint4x4b, tmpint4x4a, ai);
}// 逆时针旋转
if(j != 0) {
for(; j < 0; j += 6434);
sc[0] = ((j % 6434) * 64 + 512) / 6434;
sc[1] = sc[0] + 16;
sc[0] = sine[sc[0] % 64];
sc[1] = sine[sc[1] % 64];
tmpint4x4a[0][0] = sc[1];
tmpint4x4a[0][1] = 0;
tmpint4x4a[0][2] = -sc[0];
tmpint4x4a[1][0] = 0;
tmpint4x4a[1][1] = 1024;
tmpint4x4a[1][2] = 0;
tmpint4x4a[2][0] = sc[0];
tmpint4x4a[2][1] = 0;
tmpint4x4a[2][2] = sc[1];
copyMM(ai, tmpint4x4b);
multMM(tmpint4x4b, tmpint4x4a, ai);
}//左右旋转
if(i != 0) {
for(; i < 0; i += 6434);
sc[0] = ((i % 6434) * 64 + 512) / 6434;
sc[1] = sc[0] + 16;
sc[0] = sine[sc[0] % 64];
sc[1] = sine[sc[1] % 64];
tmpint4x4a[0][0] = 1024;
tmpint4x4a[0][1] = 0;
tmpint4x4a[0][2] = 0;
tmpint4x4a[1][0] = 0;
tmpint4x4a[1][1] = sc[1];
tmpint4x4a[1][2] = -sc[0];
tmpint4x4a[2][0] = 0;
tmpint4x4a[2][1] = sc[0];
tmpint4x4a[2][2] = sc[1];
copyMM(ai, tmpint4x4b);
multMM(tmpint4x4b, tmpint4x4a, ai);
}//依次显示带颜色的正方形图片而为
}
public void paintInit(Graphics g) {
if(dg == null)
dg = DirectUtils.getDirectGraphics(g);
if(colorbuffer == null)
colorbuffer = new int[hw_];
for(int i = 0; i < hw_; i++)
colorbuffer[i] = 0xffffff;
}
public void paintFlush(Graphics g) {
if(colorbuffer != null) {
DirectGraphics _tmp = dg;
dg.drawPixels(colorbuffer, false, 0, w_, 0, 0, w_, h_, 0, 8888);
}
}//条纹状图形的调用
public void paintTrianglePixel(Graphics g, int i, int j, int k, int l, int i1, int j1,
int k1) {
boolean flag = false;
if(j > l) {
int l1 = l;
l = j;
j = l1;
l1 = k;
k = i;
i = l1;
}
if(j > j1) {
int i2 = j1;
j1 = j;
j = i2;
i2 = i1;
i1 = i;
i = i2;
}
if(l > j1) {
int j2 = l;
l = j1;
j1 = j2;
j2 = k;
k = i1;
i1 = j2;
}//MEIYOUBIANHUA
int i3 = j1 - j == 0 ? 0 : (i1 - i << 16) / (j1 - j << 8);
int j3 = l - j == 0 ? 0 : (k - i << 16) / (l - j << 8);
int k3 = j1 - l == 0 ? 0 : (i1 - k << 16) / (j1 - l << 8);
int l3;
int i4;
if(i1 > k) {
i4 = j3;
l3 = i3;
} else {
i4 = i3;
l3 = j3;
}
if(i4 <= l3);
int l5 = i << 8;
int i6 = l5;
for(int j5 = j; j5 < l; j5++) {
int l6 = l5 >> 8;
int j6 = i6 >> 8;
if(l6 <= j6);
if(l6 > j6) {
int k2 = l6;
l6 = j6;
j6 = k2;
}
for(int l4 = l6; l4 <= j6; l4++) {
int j4 = colormap[(2 * (j5 + l4)) % 63];
j4 &= k1;
if(j5 < h_ && j5 >= 0 && l4 < w_ && l4 >= 0)
colorbuffer[j5 * w_ + l4] = 0xff000000 | j4;
}
l5 += i4;
i6 += l3;
}
if(i < k) {
i4 = i3;
l3 = k3;
} else {
i4 = k3;
l3 = i3;
}
l5 = i1 << 8;
i6 = l5;
for(int k5 = j1; k5 >= l; k5--) {
int i7 = l5 >> 8;
int k6 = i6 >> 8;
if(i7 <= k6);
if(i7 > k6) {
int l2 = i7;
i7 = k6;
k6 = l2;
}
for(int i5 = i7; i5 <= k6; i5++) {
int k4 = colormap[(2 * (k5 + i5)) % 63];
k4 &= k1;
if(k5 < h_ && k5 >= 0 && i5 < w_ && i5 >= 0)
colorbuffer[k5 * w_ + i5] = 0xff000000 | k4;
}
l5 -= i4;
i6 -= l3;
}
}
public void coord(int i, int ai[]) {
Diet3D _tmp = this;
multMV(m_, obj_vv[i], ai);
ai[0] = ai[0] + 512 >> 10;
ai[1] = ai[1] + 512 >> 10;
ai[2] = ai[2] + 512 >> 10;
ai[0] = (ai[0] << 2) + screen[0];
ai[1] = -(ai[1] << 2) + screen[1];
ai[2] = (ai[2] << 2) + screen[2];
}
public void paintVertex(Graphics g) {
g.setColor(0);
for(int i = 0; i < obj_nv; i++) {
// coord(i, vn);
g.drawLine(vn[0], vn[1], vn[0], vn[1]);
}
}
public void paintLine(Graphics g) {
int i = 224;
for(int j = 0; j < obj_nf; j++) {
Diet3D _tmp = this;
multMV(m_, obj_vv[obj_vf[j][0]], va);
Diet3D _tmp1 = this;
multMV(m_, obj_vv[obj_vf[j][1]], vb);
Diet3D _tmp2 = this;
multMV(m_, obj_vv[obj_vf[j][2]], vc);
va[0] = va[0] + 512 >> 10;
va[1] = va[1] + 512 >> 10;
va[2] = va[2] + 512 >> 10;
va[0] = (va[0] << 2) + screen[0];
va[1] = -(va[1] << 2) + screen[1];
va[2] = (va[2] << 2) + screen[2];
vb[0] = vb[0] + 512 >> 10;
vb[1] = vb[1] + 512 >> 10;
vb[2] = vb[2] + 512 >> 10;
vb[0] = (vb[0] << 2) + screen[0];
vb[1] = -(vb[1] << 2) + screen[1];
vb[2] = (vb[2] << 2) + screen[2];
vc[0] = vc[0] + 512 >> 10;
vc[1] = vc[1] + 512 >> 10;
vc[2] = vc[2] + 512 >> 10;
vc[0] = (vc[0] << 2) + screen[0];
vc[1] = -(vc[1] << 2) + screen[1];
vc[2] = (vc[2] << 2) + screen[2];
if(obj_vc != null)
i = obj_vc[j];
g.setColor(i);
g.drawLine(va[0], va[1], vb[0], vb[1]);
g.drawLine(va[0], va[1], vc[0], vc[1]);
g.drawLine(vc[0], vc[1], vb[0], vb[1]);
}
}
public void paintFlat(Graphics g) {
char c = '/340';
for(int i = 0; i < obj_nf; i++) {
Diet3D _tmp = this;
multMV(m_, obj_vv[obj_vf[i][0]], va);
Diet3D _tmp1 = this;
multMV(m_, obj_vv[obj_vf[i][1]], vb);
Diet3D _tmp2 = this;
multMV(m_, obj_vv[obj_vf[i][2]], vc);
va[0] = va[0] + 512 >> 10;
va[1] = va[1] + 512 >> 10;
va[2] = va[2] + 512 >> 10;
va[0] = (va[0] << 2) + screen[0];
va[1] = -(va[1] << 2) + screen[1];
va[2] = (va[2] << 2) + screen[2];
vb[0] = vb[0] + 512 >> 10;
vb[1] = vb[1] + 512 >> 10;
vb[2] = vb[2] + 512 >> 10;
vb[0] = (vb[0] << 2) + screen[0];
vb[1] = -(vb[1] << 2) + screen[1];
vb[2] = (vb[2] << 2) + screen[2];
vc[0] = vc[0] + 512 >> 10;
vc[1] = vc[1] + 512 >> 10;
vc[2] = vc[2] + 512 >> 10;
vc[0] = (vc[0] << 2) + screen[0];
vc[1] = -(vc[1] << 2) + screen[1];
vc[2] = (vc[2] << 2) + screen[2];
DirectGraphics directgraphics = DirectUtils.getDirectGraphics(g);
directgraphics.setARGBColor(0xff000000 | c);
directgraphics.fillTriangle(va[0], va[1], vb[0], vb[1], vc[0], vc[1], 0xff000000 | c);
}
}
public void paintFront(Graphics g) {
for(int i = 0; i < obj_nf; i++) {
Diet3D _tmp = this;
multMV(m_, obj_vv[obj_vf[i][0]], va);
Diet3D _tmp1 = this;
multMV(m_, obj_vv[obj_vf[i][1]], vb);
Diet3D _tmp2 = this;
multMV(m_, obj_vv[obj_vf[i][2]], vc);
Diet3D _tmp3 = this;
normVVV(va, vb, vc, vn);
if(vn[2] <= 0) {
va[0] = va[0] + 512 >> 10;
va[1] = va[1] + 512 >> 10;
va[2] = va[2] + 512 >> 10;
va[0] = (va[0] << 2) + screen[0];
va[1] = -(va[1] << 2) + screen[1];
va[2] = (va[2] << 2) + screen[2];
vb[0] = vb[0] + 512 >> 10;
vb[1] = vb[1] + 512 >> 10;
vb[2] = vb[2] + 512 >> 10;
vb[0] = (vb[0] << 2) + screen[0];
vb[1] = -(vb[1] << 2) + screen[1];
vb[2] = (vb[2] << 2) + screen[2];
vc[0] = vc[0] + 512 >> 10;
vc[1] = vc[1] + 512 >> 10;
vc[2] = vc[2] + 512 >> 10;
vc[0] = (vc[0] << 2) + screen[0];
vc[1] = -(vc[1] << 2) + screen[1];
vc[2] = (vc[2] << 2) + screen[2];
g.drawLine(va[0], va[1], vb[0], vb[1]);
g.drawLine(va[0], va[1], vc[0], vc[1]);
g.drawLine(vc[0], vc[1], vb[0], vb[1]);
}
}
}
public void paintFrontFace(Graphics g) {
int i = 224;
for(int j = 0; j < obj_nf; j++) {
Diet3D _tmp = this;
multMV(m_, obj_vv[obj_vf[j][0]], va);
Diet3D _tmp1 = this;
multMV(m_, obj_vv[obj_vf[j][1]], vb);
Diet3D _tmp2 = this;
multMV(m_, obj_vv[obj_vf[j][2]], vc);
Diet3D _tmp3 = this;
normVVV(va, vb, vc, vn);
if(vn[2] > 0)
continue;
va[0] = va[0] + 512 >> 10;
va[1] = va[1] + 512 >> 10;
va[2] = va[2] + 512 >> 10;
va[0] = (va[0] << 2) + screen[0];
va[1] = -(va[1] << 2) + screen[1];
va[2] = (va[2] << 2) + screen[2];
vb[0] = vb[0] + 512 >> 10;
vb[1] = vb[1] + 512 >> 10;
vb[2] = vb[2] + 512 >> 10;
vb[0] = (vb[0] << 2) + screen[0];
vb[1] = -(vb[1] << 2) + screen[1];
vb[2] = (vb[2] << 2) + screen[2];
vc[0] = vc[0] + 512 >> 10;
vc[1] = vc[1] + 512 >> 10;
vc[2] = vc[2] + 512 >> 10;
vc[0] = (vc[0] << 2) + screen[0];
vc[1] = -(vc[1] << 2) + screen[1];
vc[2] = (vc[2] << 2) + screen[2];
if(obj_vc != null)
i = obj_vc[j];
DirectGraphics directgraphics = DirectUtils.getDirectGraphics(g);
directgraphics.setARGBColor(0xff000000 | i);
directgraphics.fillTriangle(va[0], va[1], vb[0], vb[1], vc[0], vc[1], 0xff000000 | i);
}
}
public void paintLight(Graphics g) {
boolean flag = false;
boolean flag1 = false;
boolean flag2 = false;
for(int k = 0; k < obj_nf; k++) {
Diet3D _tmp = this;
multMV(m_, obj_vv[obj_vf[k][0]], va);
Diet3D _tmp1 = this;
multMV(m_, obj_vv[obj_vf[k][1]], vb);
Diet3D _tmp2 = this;
multMV(m_, obj_vv[obj_vf[k][2]], vc);
Diet3D _tmp3 = this;
normVVV(va, vb, vc, vn);
if(vn[2] > 0)
continue;
vn[0] = vn[0] + 512 >> 10;
vn[1] = vn[1] + 512 >> 10;
vn[2] = vn[2] + 512 >> 10;
vn[0] = vn[0] << 2;
vn[1] = vn[1] << 2;
vn[2] = vn[2] << 2;
Diet3D _tmp4 = this;
///normV(vn, vn);
Diet3D _tmp5 = this;
int i = dotVV(light, vn);
i = (i * 64) / 1024;
if(i >= 64)
i = 63;
if(i < 0)
i = 0;
va[0] = va[0] + 512 >> 10;
va[1] = va[1] + 512 >> 10;
va[2] = va[2] + 512 >> 10;
va[0] = (va[0] << 2) + screen[0];
va[1] = -(va[1] << 2) + screen[1];
va[2] = (va[2] << 2) + screen[2];
vb[0] = vb[0] + 512 >> 10;
vb[1] = vb[1] + 512 >> 10;
vb[2] = vb[2] + 512 >> 10;
vb[0] = (vb[0] << 2) + screen[0];
vb[1] = -(vb[1] << 2) + screen[1];
vb[2] = (vb[2] << 2) + screen[2];
vc[0] = vc[0] + 512 >> 10;
vc[1] = vc[1] + 512 >> 10;
vc[2] = vc[2] + 512 >> 10;
vc[0] = (vc[0] << 2) + screen[0];
vc[1] = -(vc[1] << 2) + screen[1];
vc[2] = (vc[2] << 2) + screen[2];
int j = colormap[i];
if(obj_vc != null)
j &= obj_vc[k];
DirectGraphics directgraphics = DirectUtils.getDirectGraphics(g);
directgraphics.setARGBColor(0xff000000 | j);
directgraphics.fillTriangle(va[0], va[1], vb[0], vb[1], vc[0], vc[1], 0xff000000 | j);
}
}
public void paintDynLight(Graphics g) {//dong tai guangyuan
int i = updated % 64;
light[0] = sine[i % 64];
light[1] = sine[(i + 16) % 64];
Diet3D _tmp = this;
light[2] = -512;
Diet3D _tmp1 = this;
//normV(light, light);
boolean flag = false;
boolean flag1 = false;
boolean flag2 = false;
for(int l = 0; l < obj_nf; l++) {
Diet3D _tmp2 = this;
multMV(m_, obj_vv[obj_vf[l][0]], va);
Diet3D _tmp3 = this;
multMV(m_, obj_vv[obj_vf[l][1]], vb);
Diet3D _tmp4 = this;
multMV(m_, obj_vv[obj_vf[l][2]], vc);
Diet3D _tmp5 = this;
normVVV(va, vb, vc, vn);
if(vn[2] > 0)
continue;
vn[0] = vn[0] + 512 >> 10;
vn[1] = vn[1] + 512 >> 10;
vn[2] = vn[2] + 512 >> 10;
vn[0] = vn[0] << 2;
vn[1] = vn[1] << 2;
vn[2] = vn[2] << 2;
Diet3D _tmp6 = this;
// normV(vn, vn);
Diet3D _tmp7 = this;
int j = dotVV(light, vn);
j = (j * 64) / 1024;
if(j >= 64)
j = 63;
if(j < 0)
j = 0;
va[0] = va[0] + 512 >> 10;
va[1] = va[1] + 512 >> 10;
va[2] = va[2] + 512 >> 10;
va[0] = (va[0] << 2) + screen[0];
va[1] = -(va[1] << 2) + screen[1];
va[2] = (va[2] << 2) + screen[2];
vb[0] = vb[0] + 512 >> 10;
vb[1] = vb[1] + 512 >> 10;
vb[2] = vb[2] + 512 >> 10;
vb[0] = (vb[0] << 2) + screen[0];
vb[1] = -(vb[1] << 2) + screen[1];
vb[2] = (vb[2] << 2) + screen[2];
vc[0] = vc[0] + 512 >> 10;
vc[1] = vc[1] + 512 >> 10;
vc[2] = vc[2] + 512 >> 10;
vc[0] = (vc[0] << 2) + screen[0];
vc[1] = -(vc[1] << 2) + screen[1];
vc[2] = (vc[2] << 2) + screen[2];
int k = colormap[j];
DirectGraphics directgraphics = DirectUtils.getDirectGraphics(g);
directgraphics.setARGBColor(0xff000000 | k);
directgraphics.fillTriangle(va[0], va[1], vb[0], vb[1], vc[0], vc[1], 0xff000000 | k);
}
light[0] *= -(w_ >> 3);
light[1] *= -(w_ >> 3);
light[0] = light[0] + 512 >> 10;
light[1] = light[1] + 512 >> 10;
light[2] = light[2] + 512 >> 10;
light[0] = (light[0] << 2) + screen[0];
light[1] = -(light[1] << 2) + screen[1];
light[2] = (light[2] << 2) + screen[2];
g.setColor(0xffff00);
g.fillArc(light[0] - 4, light[1] - 4, 8, 8, 0, 360);
g.setColor(0);
g.drawLine(light[0] - 2, light[1], light[0] + 2, light[1]);
g.drawLine(light[0], light[1] - 2, light[0], light[1] + 2);
}
public void paintFrontFast(Graphics g) {
boolean flag = false;
for(int i = 0; i < obj_nv; i++) {
Diet3D _tmp = this;
multMV(m_, obj_vv[i], obj_trans[i]);
}
for(int j = 0; j < obj_nf; j++) {
Diet3D _tmp1 = this;
multMV(m_, obj_vv[obj_vf[j][0]], va);
Diet3D _tmp2 = this;
multMV(m_, obj_vv[obj_vf[j][1]], vb);
Diet3D _tmp3 = this;
multMV(m_, obj_vv[obj_vf[j][2]], vc);
Diet3D _tmp4 = this;
normVVV(va, vb, vc, vn);
va[0] = va[0] + 512 >> 10;
va[1] = va[1] + 512 >> 10;
va[2] = va[2] + 512 >> 10;
va[0] = (va[0] << 2) + screen[0];
va[1] = -(va[1] << 2) + screen[1];
va[2] = (va[2] << 2) + screen[2];
vb[0] = vb[0] + 512 >> 10;
vb[1] = vb[1] + 512 >> 10;
vb[2] = vb[2] + 512 >> 10;
vb[0] = (vb[0] << 2) + screen[0];
vb[1] = -(vb[1] << 2) + screen[1];
vb[2] = (vb[2] << 2) + screen[2];
vc[0] = vc[0] + 512 >> 10;
vc[1] = vc[1] + 512 >> 10;
vc[2] = vc[2] + 512 >> 10;
vc[0] = (vc[0] << 2) + screen[0];
vc[1] = -(vc[1] << 2) + screen[1];
vc[2] = (vc[2] << 2) + screen[2];
g.drawLine(va[0], va[1], vb[0], vb[1]);
g.drawLine(va[0], va[1], vc[0], vc[1]);
g.drawLine(vc[0], vc[1], vb[0], vb[1]);
}
}
public void paintPixelFiller(Graphics g) {
paintInit(g);
int i = 0;
g.setColor(i);
for(int j = 0; j < obj_nf; j++) {
Diet3D _tmp = this;
multMV(m_, obj_vv[obj_vf[j][0]], va);
Diet3D _tmp1 = this;
multMV(m_, obj_vv[obj_vf[j][1]], vb);
Diet3D _tmp2 = this;
multMV(m_, obj_vv[obj_vf[j][2]], vc);
Diet3D _tmp3 = this;
normVVV(va, vb, vc, vn);
if(vn[2] < 0)
continue;
va[0] = va[0] + 512 >> 10;
va[1] = va[1] + 512 >> 10;
va[2] = va[2] + 512 >> 10;
va[0] = (va[0] << 2) + screen[0];
va[1] = -(va[1] << 2) + screen[1];
va[2] = (va[2] << 2) + screen[2];
vb[0] = vb[0] + 512 >> 10;
vb[1] = vb[1] + 512 >> 10;
vb[2] = vb[2] + 512 >> 10;
vb[0] = (vb[0] << 2) + screen[0];
vb[1] = -(vb[1] << 2) + screen[1];
vb[2] = (vb[2] << 2) + screen[2];
vc[0] = vc[0] + 512 >> 10;
vc[1] = vc[1] + 512 >> 10;
vc[2] = vc[2] + 512 >> 10;
vc[0] = (vc[0] << 2) + screen[0];
vc[1] = -(vc[1] << 2) + screen[1];
vc[2] = (vc[2] << 2) + screen[2];
if(obj_vc != null)
i = obj_vc[j];
// paintTrianglePixel(g, va[0], va[1], vb[0], vb[1], vc[0], vc[1], i);
}
paintFlush(g);
}
public void paintSort(Graphics g) {
boolean flag = false;
boolean flag1 = false;
if(obj_trans == null || obj_center == null) {
paintString(g, "ZSort : Err");
return;
}
char c = '/340';
g.setColor(c);
for(int i = 0; i < obj_nv; i++) {
Diet3D _tmp = this;
multMV(m_, obj_vv[i], obj_trans[i]);
}
for(int j = 0; j < obj_nf; j++) {
va[0] = obj_trans[obj_vf[j][0]][0];
va[1] = obj_trans[obj_vf[j][0]][1];
va[2] = obj_trans[obj_vf[j][0]][2];
vb[0] = obj_trans[obj_vf[j][1]][0];
vb[1] = obj_trans[obj_vf[j][1]][1];
vb[2] = obj_trans[obj_vf[j][1]][2];
vc[0] = obj_trans[obj_vf[j][2]][0];
vc[1] = obj_trans[obj_vf[j][2]][1];
vc[2] = obj_trans[obj_vf[j][2]][2];
obj_center[j][2] = va[2] + vb[2] + vc[2];
}
quickSort(obj_center, 0, obj_nf - 1);
for(int k = 0; k < obj_nf; k++) {
va[0] = obj_trans[obj_vf[k][0]][0];
va[1] = obj_trans[obj_vf[k][0]][1];
va[2] = obj_trans[obj_vf[k][0]][2];
vb[0] = obj_trans[obj_vf[k][1]][0];
vb[1] = obj_trans[obj_vf[k][1]][1];
vb[2] = obj_trans[obj_vf[k][1]][2];
vc[0] = obj_trans[obj_vf[k][2]][0];
vc[1] = obj_trans[obj_vf[k][2]][1];
vc[2] = obj_trans[obj_vf[k][2]][2];
Diet3D _tmp1 = this;
normVVV(va, vb, vc, vn);
if(vn[2] > 0)
continue;
vn[0] = vn[0] + 512 >> 10;
vn[1] = vn[1] + 512 >> 10;
vn[2] = vn[2] + 512 >> 10;
vn[0] = vn[0] << 2;
vn[1] = vn[1] << 2;
vn[2] = vn[2] << 2;
Diet3D _tmp2 = this;
// normV(vn, vn);
Diet3D _tmp3 = this;
int l = dotVV(light, vn);
l = (l * 64) / 1024;
if(l >= 64)
l = 63;
if(l < 0)
l = 0;
va[0] = va[0] + 512 >> 10;
va[1] = va[1] + 512 >> 10;
va[2] = va[2] + 512 >> 10;
va[0] = (va[0] << 2) + screen[0];
va[1] = -(va[1] << 2) + screen[1];
va[2] = (va[2] << 2) + screen[2];
vb[0] = vb[0] + 512 >> 10;
vb[1] = vb[1] + 512 >> 10;
vb[2] = vb[2] + 512 >> 10;
vb[0] = (vb[0] << 2) + screen[0];
vb[1] = -(vb[1] << 2) + screen[1];
vb[2] = (vb[2] << 2) + screen[2];
vc[0] = vc[0] + 512 >> 10;
vc[1] = vc[1] + 512 >> 10;
vc[2] = vc[2] + 512 >> 10;
vc[0] = (vc[0] << 2) + screen[0];
vc[1] = -(vc[1] << 2) + screen[1];
vc[2] = (vc[2] << 2) + screen[2];
int i1 = colormap[l];
if(obj_vc != null)
i1 &= obj_vc[k];
DirectGraphics directgraphics = DirectUtils.getDirectGraphics(g);
directgraphics.setARGBColor(0xff000000 | i1);
directgraphics.fillTriangle(va[0], va[1], vb[0], vb[1], vc[0], vc[1], 0xff000000 | i1);
}
}
public void paintSortFlat(Graphics g) {
boolean flag = false;
if(obj_trans == null || obj_center == null) {
paintString(g, "ZSort : Err");
return;
}
int l = 224;
g.setColor(l);
for(int i = 0; i < obj_nv; i++) {
Diet3D _tmp = this;
multMV(m_, obj_vv[i], obj_trans[i]);
}
for(int j = 0; j < obj_nf; j++) {
va[0] = obj_trans[obj_vf[j][0]][0];
va[1] = obj_trans[obj_vf[j][0]][1];
va[2] = obj_trans[obj_vf[j][0]][2];
vb[0] = obj_trans[obj_vf[j][1]][0];
vb[1] = obj_trans[obj_vf[j][1]][1];
vb[2] = obj_trans[obj_vf[j][1]][2];
vc[0] = obj_trans[obj_vf[j][2]][0];
vc[1] = obj_trans[obj_vf[j][2]][1];
vc[2] = obj_trans[obj_vf[j][2]][2];
obj_center[j][2] = va[2] + vb[2] + vc[2];
}
quickSort(obj_center, 0, obj_nf - 1);
for(int k = 0; k < obj_nf; k++) {
va[0] = obj_trans[obj_vf[k][0]][0];
va[1] = obj_trans[obj_vf[k][0]][1];
va[2] = obj_trans[obj_vf[k][0]][2];
vb[0] = obj_trans[obj_vf[k][1]][0];
vb[1] = obj_trans[obj_vf[k][1]][1];
vb[2] = obj_trans[obj_vf[k][1]][2];
vc[0] = obj_trans[obj_vf[k][2]][0];
vc[1] = obj_trans[obj_vf[k][2]][1];
vc[2] = obj_trans[obj_vf[k][2]][2];
va[0] = va[0] + 512 >> 10;
va[1] = va[1] + 512 >> 10;
va[2] = va[2] + 512 >> 10;
va[0] = (va[0] << 2) + screen[0];
va[1] = -(va[1] << 2) + screen[1];
va[2] = (va[2] << 2) + screen[2];
vb[0] = vb[0] + 512 >> 10;
vb[1] = vb[1] + 512 >> 10;
vb[2] = vb[2] + 512 >> 10;
vb[0] = (vb[0] << 2) + screen[0];
vb[1] = -(vb[1] << 2) + screen[1];
vb[2] = (vb[2] << 2) + screen[2];
vc[0] = vc[0] + 512 >> 10;
vc[1] = vc[1] + 512 >> 10;
vc[2] = vc[2] + 512 >> 10;
vc[0] = (vc[0] << 2) + screen[0];
vc[1] = -(vc[1] << 2) + screen[1];
vc[2] = (vc[2] << 2) + screen[2];
if(obj_vc != null)
l = obj_vc[k];
DirectGraphics directgraphics = DirectUtils.getDirectGraphics(g);
directgraphics.setARGBColor(0xff000000 | l);
directgraphics.fillTriangle(va[0], va[1], vb[0], vb[1], vc[0], vc[1], 0xff000000 | l);
}
}
private void swapArray(int ai[][], int i, int j) {
int ai1[] = ai[i];
ai[i] = ai[j];
ai[j] = ai1;
int k = obj_vf[i][0];
obj_vf[i][0] = obj_vf[j][0];
obj_vf[j][0] = k;
k = obj_vf[i][1];
obj_vf[i][1] = obj_vf[j][1];
obj_vf[j][1] = k;
k = obj_vf[i][2];
obj_vf[i][2] = obj_vf[j][2];
obj_vf[j][2] = k;
if(obj_vc != null) {
int l = obj_vc[i];
obj_vc[i] = obj_vc[j];
obj_vc[j] = l;
}
}
protected void quickSort(int ai[][], int i, int j) {
int k = i;
int l = j;
if(j > i) {
int ai1[] = ai[i + j >> 1];
do {
if(k > l)
break;
for(; k < j && ai[k][2] < ai1[2]; k++);
for(; l > i && ai1[2] < ai[l][2]; l--);
if(k <= l) {
swapArray(ai, k, l);
k++;
l--;
}
} while(true);
if(i < l)
quickSort(ai, i, l);
if(k < j)
quickSort(ai, k, j);
}
}
public void paintString(Graphics g, String s) {
Graphics _tmp = g;
Graphics _tmp1 = g;
g.drawString(s, w_ >> 1, h_ >> 1, 0x40 | 1);
}
public Diet3D() {
w_ = 160;
h_ = w_;
hw_ = h_ * w_;
rx_ = -1;
ry_ = -1;
rz_ = 0;
updated = 0;
mode = 0;
Diet3D _tmp = this;
obj_nv = 8;
obj_nf = 12;
// obj_vv = mesh_cube_vv;
//obj_vf = mesh_cube_vf;
//obj_vc = mesh_cube_vc;
obj_trans = (int[][])null;
obj_norm = (int[][])null;
obj_center = (int[][])null;
rotation_ = 100;
init();
}
public Diet3D(int i, int j) {
w_ = 160;
h_ = w_;
hw_ = h_ * w_;
rx_ = -1;
ry_ = -1;
rz_ = 0;
updated = 0;
mode = 0;
Diet3D _tmp = this;
obj_nv = 8;
obj_nf = 12;
// obj_vv = mesh_cube_vv;
//obj_vf = mesh_cube_vf;
//obj_vc = mesh_cube_vc;
obj_trans = (int[][])null;
obj_norm = (int[][])null;
obj_center = (int[][])null;
rotation_ = 100;
init(i, j);
}
public void init(int i, int j) {
w_ = i;
h_ = j;
init();
toggleAnim(0);
toggleShape(3);
toggleMode(0);
tick++;
}
public void init() {
screen[0] = w_ / 2;
screen[1] = h_ / 2;
screen[2] = h_;
colormap = new int[64];
byte byte0 = 3;
int i = 0;
for(int j = 0; j < 64; j++) {
i += byte0;
colormap[j] = i + (i << 8) + (i << 16);
}
reset();
rz_ = ry_ = 1;
}
public void reset() {
Diet3D _tmp = this;
initIdentity(m_);
rx_ = ry_ = rz_ = 0;
}
public void toggleShape(int i) {
Diet3D _tmp = this;
initIdentity(m_);
shape = i;
switch(i) {
case 1: // '/001'
obj_nv = 58;
obj_nf = 112;
// obj_vv = mesh_sphere_vv;
//obj_vf = mesh_sphere_vf;
//obj_vc = mesh_sphere_vc;
obj_trans = (int[][])null;
obj_center = (int[][])null;
break;
case 3: // '/003'
obj_nv = 10;
obj_nf = 8;
//obj_vv = mesh_logo_vv;
// obj_vf = mesh_logo_vf;
obj_vc = null;
obj_trans = (int[][])null;
obj_center = (int[][])null;
break;
case 2: // '/002'
obj_nv = 77;
obj_nf = 132;
// obj_vv = mesh_cross_vv;
// obj_vf = mesh_cross_vf;
obj_vc = null;
obj_trans = (int[][])null;
obj_center = (int[][])null;
break;
case 4: // '/004'
obj_nv = 146;
obj_nf = 250;
// obj_vv = mesh_tux_vv;
// obj_vf = mesh_tux_vf;
obj_vc = mesh_tux_vc;
obj_trans = (int[][])null;
obj_center = (int[][])null;
break;
default://立方体
obj_nv = 8;
obj_nf = 12;
obj_vv = mesh_cube_vv;
obj_vf = mesh_cube_vf;
obj_vc = mesh_cube_vc;
obj_trans = (int[][])null;
obj_center = (int[][])null;
shape = 0;
break;
}
recalc();
}
public void toggleShape() {
toggleShape(1 + shape);
}
public void toggleAnim(int i) {
anim = i % vanim.length;
Diet3D _tmp = this;
initIdentity(m_);
}
public void toggleAnim() {
toggleAnim(1 + anim);
}
public void toggleMode() {
toggleMode(mode + 1);
}
public void recalc() {
System.gc();
obj_trans = new int[obj_nv][3];
obj_center = new int[obj_nf][3];
}
public void toggleMode(int i) {
light[0] = 0;
light[1] = 0;
light[2] = -1024;
mode = i;
if(mode >= vmode.length) {
toggleShape();
mode = 0;
}
recalc();
}
public void update() {
rx_ = rx_ % 64;
ry_ = ry_ % 64;
rz_ = rz_ % 64;
if(anim >= 2) {
Diet3D _tmp = this;
//initIdentity(m_);
}
Diet3D _tmp1 = this;
rotate(rx_ * rotation_, ry_ * rotation_, rz_ * rotation_, m_);
updated++;
}
public void tick() {
if(anim <= 0)
switch(tick) {
case 1: // '/001'
toggleShape(1);
toggleMode(1);
break;
case 2: // '/002'
toggleShape(2);
toggleMode(2);
break;
case 3: // '/003'
toggleShape(3);
toggleMode(3);
break;
case 4: // '/004'
toggleShape(0);
toggleMode(4);
break;
case 5: // '/005'
toggleShape(1);
toggleMode(5);
break;
case 6: // '/006'
toggleShape(0);
toggleMode(6);
break;
case 7: // '/007'
toggleShape(1);
toggleMode(7);
break;
case 8: // '/b'
toggleShape(0);
toggleMode(9);
break;
case 9: // '/t'
toggleShape(4);
toggleMode(11);
break;
case 10: // '/n'
toggleShape(0);
toggleMode(10);
break;
case 11: // '/013'
toggleShape(4);
toggleMode(12);
break;
case 12: // '/f'
toggleShape(0);
toggleMode(0);
break;
default:
toggleMode();
break;
case 0: // '/0'
break;
}
tick++;
}
protected void paint(Graphics g) {
g.setColor(0xffffff);
g.fillRect(0, 0, w_, h_);
switch(mode) {
case 1: // '/001'
g.setColor(0);
paintVertex(g);
break;
case 2: // '/002'
g.setColor(0);
paintLine(g);
break;
case 3: // '/003'
g.setColor(224);
paintFlat(g);
break;
case 4: // '/004'
g.setColor(224);
paintFront(g);
break;
case 5: // '/005'
g.setColor(224);
paintFrontFace(g);
break;
case 6: // '/006'
g.setColor(224);
paintLight(g);
break;
case 7: // '/007'
g.setColor(224);
paintDynLight(g);
break;
case 8: // '/b'
g.setColor(224);
paintFront(g);
g.setColor(0);
paintVertex(g);
break;
case 9: // '/t'
paintLight(g);
g.setColor(0);
paintVertex(g);
g.setColor(0);
paintFront(g);
break;
case 10: // '/n'
paintPixelFiller(g);
break;
case 11: // '/013'
paintSortFlat(g);
break;
case 12: // '/f'
paintSort(g);
break;
default:
g.setColor(0);
paintLine(g);
g.setColor(0);
paintString(g, "Shape " + vshape[shape] + " # " + obj_nf);
break;
}
g.setColor(0);
Graphics _tmp = g;
Graphics _tmp1 = g;
g.drawString("" + vmode[mode], w_ >> 1, h_ - (h_ >> 2), 0x40 | 1);
}
}