图形图像学在j2me上的应用程序。寻找高手帮注释!

谁能帮注释一下这个程序?

// 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);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值