javalogo.gif

Ce cube est codé en JAVA 3D...

Il est possible de faire pivoter ce cube. Vous pourrez alors apercevoir toutes ses faces...Pensez à changer d'image si vous voulez..
import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.awt.image.MemoryImageSource;
import java.awt.image.PixelGrabber;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.URL;

public class image3dcube extends Applet implements Runnable
{
    private AppletContext _0;
    private Graphics _1;
    private Graphics _2;
    private Thread _3;
    private Image _4;
    private Image _5;
    private Image _6;
    private String _7;
    private Dimension _8;
    private int _9;
    private int _10;
    private int _11;
    private int _12;
    private String _13[];
    private long _14;
    private long _15;
    private int _16[];
    private int _17[];
    private int _18[];
    private int _19[];
    private int _20[];
    private int _21[];
    private int _22[];
    private int _23[];
    private int _24[] = {
        3, 2, 1, 0, -1, 4, 5, 6, 7, -1, 
        0, 1, 5, 4, -1, 2, 3, 7, 6, -1, 
        1, 2, 6, 5, -1, 0, 4, 7, 3, -1, 
        -1
    };
    private double _25[];
    private double _26[];
    private int _27;
    private int _28;
    private int _29;
    private int _30;
    private int _31;
    private int _32;
    private int _33;
    private int _34;
    private int _35;
    private double _36;
    private double _37;
    private double _38;
    private double _39;
    private double _40;
    private double _41;
    private double _42;
    private double _43;
    private double _44;
    private double _45;
    private double _46;
    private double _47;
    private double _48;
    private double _49;
    private double _50;
    private double _51;
    private double _52;
    private double _53;
    private double _54;
    private double _55;
    private double _56;
    private double _57;
    private double _58;
    private double _59;
    private double _60;
    private double _61;
    private double _62;
    private double _63;
    private double _64;
    private double _65;
    private double _66;
    private double _67;
    private double _68;
    private double _69;
    private double _70;
    private int _71;
    private int _72;
    private int _73;
    private int _74;
    private int _75;
    private int _76;
    private int _77;
    private int _78;
    private int _79;
    private int _80;
    private int _81[];
    private int _82[];
    private boolean _83;
    private boolean _84;
    private boolean _85;
    private boolean _86;
    private boolean _87;
    private boolean _88;
    private boolean _89;
    private boolean _90;
    private boolean _91;
    private boolean _92;

    public void init()
    {
        super.init();
        setLayout(null);
        _12();
        _8 = size();
        _75 = _8.width >= _8.height ? _8.height : _8.width;
        _76 = _75 / 2;
        double d = _76;
        double ad[] = {
            -d, -d, -d, d, -d, -d, d, d, -d, -d, 
            d, -d, -d, -d, d, d, -d, d, d, d, 
            d, -d, d, d
        };
        _26 = ad;
        _9 = _8.width / 2;
        _10 = _8.height / 2;
        _50 = 1.0D;
        _51 = -1D;
        _18 = new int[_8.height];
        _19 = new int[_8.height];
        _16 = new int[_8.width * _8.height];
        _22 = new int[_8.width * _8.height];
        _23 = new int[_8.width * _8.height];
        _82 = new int[_8.width];
        for(int i = 0; i < _8.width; i++)
        {
            _82[i] = 0xff000000 + _73;
        }

        _21 = new int[_8.height];
        for(int j = 0; j < _8.height; j++)
        {
            _21[j] = 0;
        }

        _1 = getGraphics();
        _29 = 512;
        _30 = 900;
        _80 = 6;
        _32 = 30;
        _31 = _26.length / 3;
        _25 = new double[_26.length];
        _6 = createImage(_8.width, _8.height);
        _2 = _6.getGraphics();
        _2.setColor(new Color(_71));
        _2.fillRect(0, 0, _8.width, _8.height);
        if(_83)
        {
            _5 = getImage(getDocumentBase(), "on.gif");
            _4(_5);
            _2.drawImage(_5, _8.width - 18, _8.height - 32, this);
        }
        PixelGrabber pixelgrabber = new PixelGrabber(_6, 0, 0, _8.width, _8.height, _22, 0, _8.width);
        try
        {
            pixelgrabber.grabPixels();
        }
        catch(InterruptedException _ex) { }
        if(_83)
        {
            _5 = getImage(getDocumentBase(), "off.gif");
            _4(_5);
            _2.drawImage(_5, _8.width - 18, _8.height - 32, this);
        }
        pixelgrabber = new PixelGrabber(_6, 0, 0, _8.width, _8.height, _23, 0, _8.width);
        try
        {
            pixelgrabber.grabPixels();
            return;
        }
        catch(InterruptedException _ex)
        {
            return;
        }
    }

    public void run()
    {
        _4 = createImage(_8.width, _8.height);
        Graphics g = _4.getGraphics();
        String s = "";
        FontMetrics fontmetrics = g.getFontMetrics();
        _81 = new int[_8.width * _8.height * 6];
        _88 = true;
        for(int i = 0; i < 6; i++)
        {
            g.setColor(new Color(_71));
            g.fillRect(0, 0, _8.width, _8.height);
            g.setColor(new Color(_72));
            String s1 = "Loading Image " + Integer.toString(i + 1);
            g.drawString(s1, _9 - fontmetrics.stringWidth(s1) / 2, _10);
            update(_1);
            if(getParameter("image" + Integer.toString(i)) != null)
            {
                _5 = getImage(getDocumentBase(), getParameter("image" + Integer.toString(i)));
                _4(_5);
                _5 = _2(_5, _75, _75);
                System.arraycopy(_20, 0, _81, i * _75 * _75, _75 * _75);
            }
        }

        _88 = false;
        _70 = 0.0D;
        _68 = 50D;
        _69 = 50D;
        _86 = false;
        _87 = false;
        _88 = false;
        _89 = false;
        _90 = false;
        _91 = false;
        _92 = false;
        _0();
        System.arraycopy(_26, 0, _25, 0, _26.length);
        _39 = _43 = _47 = 0.0D;
        _36 = _41 = _46 = 1.0D;
        _37 = _38 = _40 = _42 = _44 = _45 = 0.0D;
        _56 = _57 = _58 = 0.0D;
        _8();
        _90 = false;
        do
        {
            _85 = _84;
            _39 = _43 = _47 = 0.0D;
            if(_91)
            {
                _47 = 750D;
                double d = Math.asin(Math.sqrt(_62 * _62 + _63 * _63));
                double d1 = Math.sqrt(_62 * _62 + _63 * _63);
                double d2 = (int)(d / _54);
                for(int j = 0; (double)j < d2; j++)
                {
                    _10(-_63 / d1, _62 / d1, 0.0D, _54, 1.0D);
                    _13();
                    _88 = true;
                    update(_1);
                    _88 = false;
                }

                _10(-_63 / d1, _62 / d1, 0.0D, d - d2 * _54, 1.0D);
                _13();
                _88 = true;
                update(_1);
                _88 = false;
                double d3 = Math.acos(_65);
                if(_66 > 0.0D)
                {
                    d3 = -d3;
                }
                int k = Math.max((int)(Math.abs(d3) / _54 / 3D), 5);
                double d4 = Math.exp(Math.log(1.45D) / (double)k);
                for(int l = 1; l <= k; l++)
                {
                    _10(0.0D, 0.0D, -1D, -d3 / (double)k, d4);
                    _13();
                    _88 = true;
                    update(_1);
                    _88 = false;
                }

                while(!_87) 
                {
                    _88 = true;
                    try
                    {
                        Thread.sleep(100L);
                    }
                    catch(InterruptedException _ex) { }
                }
                for(int i1 = 1; i1 <= k; i1++)
                {
                    _10(0.0D, 0.0D, -1D, d3 / (double)k, 1.0D / d4);
                    _13();
                    _88 = true;
                    update(_1);
                    _88 = false;
                }

                _47 = 750D;
                d1 = Math.sqrt(_62 * _62 + _63 * _63);
                for(int j1 = 0; (double)j1 < d2; j1++)
                {
                    _10(-_63 / d1, _62 / d1, 0.0D, -_54, 1.0D);
                    _13();
                    _88 = true;
                    update(_1);
                    _88 = false;
                }

                _10(-_63 / d1, _62 / d1, 0.0D, -d + d2 * _54, 1.0D);
                _13();
                _88 = true;
                update(_1);
                _88 = false;
                _39 = _43 = _47 = 0.0D;
                _56 = _48;
                _57 = _49;
                _91 = false;
                _86 = false;
            } else
            if(_89)
            {
                _56 = _48;
                _57 = _49;
            } else
            {
                if(_90)
                {
                    _14 = System.currentTimeMillis();
                    _56 = _57 = _48 = _49 = 0.0D;
                    _90 = false;
                }
                if(System.currentTimeMillis() - _14 > 5000L)
                {
                    _57 = _55;
                    _56 = (2D * _55) / 3D;
                }
            }
            _9();
            _7();
            _61 = 750D;
            _3();
            _8();
            _13();
            _88 = true;
            update(_1);
            _88 = false;
            try
            {
                Thread.sleep(_27);
            }
            catch(InterruptedException _ex) { }
        } while(true);
    }

    public void _13()
    {
        _4.flush();
        _92 = false;
        if(_85)
        {
            System.arraycopy(_22, 0, _16, 0, _8.width * _8.height);
        } else
        {
            System.arraycopy(_23, 0, _16, 0, _8.width * _8.height);
        }
        int i = 0;
        int ai[] = new int[_31];
        int ai1[] = new int[_31];
        int j = 0;
        for(int l = 0; l < _31 * 3; l += 3)
        {
            int i1 = (int)_25[l];
            int k1 = (int)_25[l + 1];
            int l1 = (int)_25[l + 2];
            ai[j] = (i1 * _29) / l1 + _9;
            ai1[j] = (k1 * _29) / l1 + _10;
            j++;
        }

        int j1 = 0;
        Polygon polygon = new Polygon();
        int i2 = _24[0];
        for(int j2 = 0; j2 < _32; j2++)
        {
            int k2 = _24[j2];
            if(k2 < 0)
            {
                polygon.addPoint(ai[i2], ai1[i2]);
                i2 = _24[j2 + 1];
                byte byte0 = 0;
                byte byte1 = 0;
                byte byte3 = 0;
                byte byte5 = 0;
                switch(i)
                {
                case 0: // '\0'
                    byte0 = 0;
                    byte1 = 1;
                    byte3 = 3;
                    byte5 = 2;
                    break;

                case 1: // '\001'
                    byte0 = 5;
                    byte1 = 4;
                    byte3 = 6;
                    byte5 = 7;
                    break;

                case 2: // '\002'
                    byte0 = 4;
                    byte1 = 5;
                    byte3 = 0;
                    byte5 = 1;
                    break;

                case 3: // '\003'
                    byte0 = 3;
                    byte1 = 2;
                    byte3 = 7;
                    byte5 = 6;
                    break;

                case 4: // '\004'
                    byte0 = 1;
                    byte1 = 5;
                    byte3 = 2;
                    byte5 = 6;
                    break;

                case 5: // '\005'
                    byte0 = 4;
                    byte1 = 0;
                    byte3 = 7;
                    byte5 = 3;
                    break;
                }
                Polygon polygon1 = new Polygon();
                double d = (double)_30 - _70;
                double d1 = ((_25[byte1 * 3] - _68) * d) / (_25[byte1 * 3 + 2] - _70);
                double d2 = ((_25[byte1 * 3 + 1] - _69) * d) / (_25[byte1 * 3 + 2] - _70);
                double d4 = ((_25[byte0 * 3] - _68) * d) / (_25[byte0 * 3 + 2] - _70);
                double d6 = ((_25[byte0 * 3 + 1] - _69) * d) / (_25[byte0 * 3 + 2] - _70);
                double d8 = ((_25[byte3 * 3] - _68) * d) / (_25[byte3 * 3 + 2] - _70);
                double d10 = ((_25[byte3 * 3 + 1] - _69) * d) / (_25[byte3 * 3 + 2] - _70);
                double d12 = ((_25[byte5 * 3] - _68) * d) / (_25[byte5 * 3 + 2] - _70);
                double d14 = ((_25[byte5 * 3 + 1] - _69) * d) / (_25[byte5 * 3 + 2] - _70);
                polygon1.addPoint((int)((d1 * (double)_29) / d + (double)_9), (int)((d2 * (double)_29) / d + (double)_9));
                polygon1.addPoint((int)((d4 * (double)_29) / d + (double)_9), (int)((d6 * (double)_29) / d + (double)_9));
                polygon1.addPoint((int)((d8 * (double)_29) / d + (double)_9), (int)((d10 * (double)_29) / d + (double)_9));
                polygon1.addPoint((int)((d12 * (double)_29) / d + (double)_9), (int)((d14 * (double)_29) / d + (double)_9));
                int ai2[] = polygon1.ypoints;
                int ai3[] = new int[2];
                ai3 = _1(polygon1.xpoints, polygon1.ypoints);
                int j4 = ai3[0];
                int k4 = ai3[1];
                for(int l4 = Math.max(ai2[k4], 0); l4 < Math.min(ai2[j4], _8.height); l4++)
                {
                    int i5 = Math.min(_18[l4], _19[l4]);
                    int j5 = Math.max(_18[l4], _19[l4]);
                    System.arraycopy(_82, 0, _16, i5 + l4 * _8.width, j5 - i5);
                }

                i++;
                polygon = new Polygon();
                j1 = j2 + 1;
            } else
            {
                polygon.addPoint(ai[k2], ai1[k2]);
            }
        }

        j1 = 0;
        polygon = new Polygon();
        i2 = _24[0];
        i = 0;
        for(int l2 = 0; l2 < _32; l2++)
        {
            int i3 = _24[l2];
            if(i3 < 0)
            {
                polygon.addPoint(ai[i2], ai1[i2]);
                i2 = _24[l2 + 1];
                byte byte2 = 0;
                byte byte4 = 0;
                byte byte6 = 0;
                boolean flag = false;
                switch(i)
                {
                case 0: // '\0'
                    byte2 = 0;
                    byte4 = 1;
                    byte6 = 3;
                    byte byte7 = 2;
                    break;

                case 1: // '\001'
                    byte2 = 5;
                    byte4 = 4;
                    byte6 = 6;
                    byte byte8 = 7;
                    break;

                case 2: // '\002'
                    byte2 = 4;
                    byte4 = 5;
                    byte6 = 0;
                    boolean flag1 = true;
                    break;

                case 3: // '\003'
                    byte2 = 3;
                    byte4 = 2;
                    byte6 = 7;
                    byte byte9 = 6;
                    break;

                case 4: // '\004'
                    byte2 = 1;
                    byte4 = 5;
                    byte6 = 2;
                    byte byte10 = 6;
                    break;

                case 5: // '\005'
                    byte2 = 4;
                    byte4 = 0;
                    byte6 = 7;
                    byte byte11 = 3;
                    break;
                }
                int j3 = ai[byte6] - ai[byte2];
                int k3 = ai1[byte6] - ai1[byte2];
                int l3 = ai[byte4] - ai[byte2];
                int i4 = ai1[byte4] - ai1[byte2];
                if(j3 * i4 - k3 * l3 <= 0)
                {
                    double d3 = (_25[byte4 * 3] - _25[byte2 * 3]) / (double)_75;
                    double d5 = (_25[byte4 * 3 + 1] - _25[byte2 * 3 + 1]) / (double)_75;
                    double d7 = (_25[byte4 * 3 + 2] - _25[byte2 * 3 + 2]) / (double)_75;
                    double d9 = (_25[byte6 * 3] - _25[byte2 * 3]) / (double)_75;
                    double d11 = (_25[byte6 * 3 + 1] - _25[byte2 * 3 + 1]) / (double)_75;
                    double d13 = (_25[byte6 * 3 + 2] - _25[byte2 * 3 + 2]) / (double)_75;
                    double d15 = _25[byte2 * 3];
                    double d16 = _25[byte2 * 3 + 1];
                    double d17 = _25[byte2 * 3 + 2];
                    double d18 = d11 * d7 - d13 * d5;
                    double d19 = d13 * d3 - d9 * d7;
                    double d20 = d9 * d5 - d11 * d3;
                    double d21 = Math.sqrt(d18 * d18 + d19 * d19 + d20 * d20);
                    d18 /= d21;
                    d19 /= d21;
                    d20 /= d21;
                    double d22 = (double)_77 - (d15 + (double)_76 * d3 + (double)_76 * d9);
                    double d23 = (double)_78 - (d16 + (double)_76 * d5 + (double)_76 * d11);
                    double d24 = (double)_79 - (d17 + (double)_76 * d7 + (double)_76 * d13);
                    int k = j1;
                    polygon = new Polygon();
                    int k5 = _24[k];
                    do
                    {
                        polygon.addPoint(ai[k5], ai1[k5]);
                        k5 = _24[++k];
                    } while(k5 >= 0);
                    double d25 = (d22 * d18 + d23 * d19 + d24 * d20) / Math.sqrt(d22 * d22 + d23 * d23 + d24 * d24);
                    int l5 = _85 & (!_91) ? 255 : Math.max(Math.min((int)(255D * d25 * 0.90000000000000002D + 25.5D), 255), 20);
                    int ai4[] = new int[2];
                    ai4 = _1(polygon.xpoints, polygon.ypoints);
                    int i6 = Math.min(polygon.ypoints[ai4[0]], _8.height);
                    int j6 = Math.max(polygon.ypoints[ai4[1]], 0);
                    double d26 = (double)_29 * (d3 * d17 - d7 * d15);
                    double d27 = (double)_29 * (d7 * d9 - d3 * d13);
                    double d28 = (double)_29 * (d7 * d16 - d5 * d17);
                    double d29 = (double)_29 * (d5 * d13 - d7 * d11);
                    double d30 = (double)(_29 * _29) * (d5 * d15 - d3 * d16);
                    double d31 = (double)(_29 * _29) * (d3 * d11 - d5 * d9);
                    double d32 = (double)_29 * (d9 * d17 - d13 * d15);
                    double d33 = (double)_29 * (d13 * d3 - d9 * d7);
                    double d34 = (double)_29 * (d13 * d16 - d11 * d17);
                    double d35 = (double)_29 * (d11 * d7 - d13 * d5);
                    double d36 = (double)(_29 * _29) * (d11 * d15 - d9 * d16);
                    double d37 = (double)(_29 * _29) * (d9 * d5 - d11 * d3);
                    int k6 = _8.width;
                    int l6 = i * _75 * _75;
                    if(!_85 || _91)
                    {
                        for(int k8 = j6; k8 < i6; k8++)
                        {
                            double d42 = (double)(k8 - _10) * d26 + d30;
                            double d44 = (double)(k8 - _10) * d27 + d31;
                            double d38 = (double)(k8 - _10) * d32 + d36;
                            double d40 = (double)(k8 - _10) * d33 + d37;
                            int l8 = Math.min(_18[k8], _19[k8]);
                            int i9 = Math.max(_18[k8], _19[k8]);
                            double d50 = (double)(l8 - _9) * d34 + d38;
                            double d54 = (double)(l8 - _9) * d35 + d40;
                            double d52 = (double)(l8 - _9) * d28 + d42;
                            double d56 = (double)(l8 - _9) * d29 + d44;
                            int j9 = k8 * k6;
                            for(int k9 = l8; k9 <= i9; k9++)
                            {
                                if(k9 >= 0 && k9 < k6)
                                {
                                    double d48 = d50 / d54;
                                    double d46 = d52 / d56;
                                    int i7 = (int)d48;
                                    int k7 = (int)d46;
                                    i7 = i7 >= 0 ? i7 <= _75 - 1 ? i7 : _75 - 1 : 0;
                                    k7 = k7 >= 0 ? k7 <= _75 - 1 ? k7 : _75 - 1 : 0;
                                    int i8 = _81[l6 + i7 + _75 * k7];
                                    int l9 = (i8 & 0xff) * l5 & 0xff00;
                                    int i10 = ((i8 & 0xff00) >> 8) * l5 & 0xff00;
                                    int j10 = ((i8 & 0xff0000) >> 16) * l5 & 0xff00;
                                    _16[k9 + j9] = 0xff000000 + (j10 << 8) + i10 + (l9 >> 8);
                                }
                                d50 += d34;
                                d54 += d35;
                                d52 += d28;
                                d56 += d29;
                            }

                        }

                    } else
                    {
                        double d64 = Math.sqrt((0.0D - _68) * (0.0D - _68) + (0.0D - _69) * (0.0D - _69) + (750D - _70) * (750D - _70));
                        double d65 = -_68 / d64;
                        double d66 = -_69 / d64;
                        double d67 = (750D - _70) / d64;
                        for(int l11 = j6; l11 < i6; l11++)
                        {
                            int i12 = Math.min(_18[l11], _19[l11]);
                            int j12 = Math.max(_18[l11], _19[l11]);
                            double d43 = (double)(l11 - _10) * d26 + d30;
                            double d45 = (double)(l11 - _10) * d27 + d31;
                            double d39 = (double)(l11 - _10) * d32 + d36;
                            double d41 = (double)(l11 - _10) * d33 + d37;
                            double d51 = (double)(i12 - _9) * d34 + d39;
                            double d55 = (double)(i12 - _9) * d35 + d41;
                            double d53 = (double)(i12 - _9) * d28 + d43;
                            double d57 = (double)(i12 - _9) * d29 + d45;
                            int k12 = l11 * k6;
                            for(int l12 = i12; l12 <= j12; l12++)
                            {
                                if(l12 >= 0 && l12 < k6)
                                {
                                    double d49 = d51 / d55;
                                    double d47 = d53 / d57;
                                    double d58 = (d15 + d3 * d49 + d9 * d47) - _68;
                                    double d60 = (d16 + d5 * d49 + d11 * d47) - _69;
                                    double d61 = (d17 + d7 * d49 + d13 * d47) - _70;
                                    double d62 = Math.sqrt(d58 * d58 + d60 * d60 + d61 * d61);
                                    d58 /= d62;
                                    d60 /= d62;
                                    d61 /= d62;
                                    double d63 = d65 * d58 + d66 * d60 + d67 * d61;
                                    double d68 = -(d18 * d58 + d19 * d60 + d20 * d61);
                                    double d69 = Math.max(35D * (d63 - 0.95999999999999996D), 0.0D);
                                    int j11 = (int)(((double)l5 * (d68 * (d69 * d69 + 1.0D))) / 2D) - 255;
                                    int k11 = (int)(255D * (50D * Math.max(d68 - 0.95999999999999996D, 0.025000000000000001D)));
                                    int j7 = (int)d49;
                                    int l7 = (int)d47;
                                    j7 = j7 >= 0 ? j7 <= _75 - 1 ? j7 : _75 - 1 : 0;
                                    l7 = l7 >= 0 ? l7 <= _75 - 1 ? l7 : _75 - 1 : 0;
                                    int j8 = _81[l6 + j7 + _75 * l7];
                                    int i11 = j8 & 0xff;
                                    int l10 = (j8 & 0xff00) >> 8;
                                    int k10 = (j8 & 0xff0000) >> 16;
                                    i11 *= k11;
                                    l10 *= k11;
                                    k10 *= k11;
                                    i11 >>= 8;
                                    l10 >>= 8;
                                    k10 >>= 8;
                                    i11 += j11;
                                    l10 += j11;
                                    k10 += j11;
                                    i11 = i11 <= 255 ? i11 : 255;
                                    l10 = l10 <= 255 ? l10 : 255;
                                    k10 = k10 <= 255 ? k10 : 255;
                                    i11 = i11 >= 0 ? i11 : 0;
                                    l10 = l10 >= 0 ? l10 : 0;
                                    k10 = k10 >= 0 ? k10 : 0;
                                    _16[l12 + k12] = 0xff000000 + (k10 << 16) + (l10 << 8) + i11;
                                }
                                d51 += d34;
                                d55 += d35;
                                d53 += d28;
                                d57 += d29;
                            }

                        }

                    }
                    if(polygon.inside(_11, _12))
                    {
                        _74 = i;
                        _92 = true;
                        if(_87 && !_91)
                        {
                            _62 = d18;
                            _63 = d19;
                            _64 = d20;
                            double d59 = Math.sqrt(d3 * d3 + d5 * d5 + d7 * d7);
                            _65 = d3 / d59;
                            _66 = d5 / d59;
                            _67 = d7 / d59;
                            _74 = i;
                            _91 = true;
                            _87 = false;
                        } else
                        {
                            _87 = false;
                        }
                    }
                }
                i++;
                polygon = new Polygon();
                j1 = l2 + 1;
            } else
            {
                polygon.addPoint(ai[i3], ai1[i3]);
            }
        }

        _4 = createImage(new MemoryImageSource(_8.width, _8.height, _16, 0, _8.width));
        _4(_4);
        if(!_92)
        {
            _74 = 7;
        }
    }

    public int[] _1(int ai[], int ai1[])
    {
        System.arraycopy(_21, 0, _18, 0, _8.height);
        System.arraycopy(_21, 0, _19, 0, _8.height);
        int i = 0xff000001;
        int j = 0xffffff;
        int k = 5;
        int l = 5;
        for(int i1 = 0; i1 < 4; i1++)
        {
            if(ai1[i1] < j)
            {
                j = ai1[i1];
                l = i1;
            }
            if(ai1[i1] > i)
            {
                i = ai1[i1];
                k = i1;
            }
        }

        int j1 = (l + 1) % 4;
        int k1 = ((4 + l) - 1) % 4;
        byte byte0 = 5;
        if(ai[j1] < ai[k1])
        {
            _11(ai[j1], ai1[j1], ai[l], ai1[l], true);
            _11(ai[k1], ai1[k1], ai[l], ai1[l], false);
            if(j1 == k)
            {
                int l1 = ((4 + l) - 2) % 4;
                _11(ai[k1], ai1[k1], ai[l1], ai1[l1], false);
                _11(ai[l1], ai1[l1], ai[k], ai1[k], false);
            } else
            if(k1 == k)
            {
                int i2 = (l + 2) % 4;
                _11(ai[j1], ai1[j1], ai[i2], ai1[i2], true);
                _11(ai[i2], ai1[i2], ai[k], ai1[k], true);
            } else
            {
                _11(ai[j1], ai1[j1], ai[k], ai1[k], true);
                _11(ai[k1], ai1[k1], ai[k], ai1[k], false);
            }
        } else
        {
            _11(ai[j1], ai1[j1], ai[l], ai1[l], false);
            _11(ai[k1], ai1[k1], ai[l], ai1[l], true);
            if(j1 == k)
            {
                int j2 = ((4 + l) - 2) % 4;
                _11(ai[k1], ai1[k1], ai[j2], ai1[j2], true);
                _11(ai[j2], ai1[j2], ai[k], ai1[k], true);
            } else
            if(k1 == k)
            {
                int k2 = (l + 2) % 4;
                _11(ai[j1], ai1[j1], ai[k2], ai1[k2], false);
                _11(ai[k2], ai1[k2], ai[k], ai1[k], false);
            } else
            {
                _11(ai[j1], ai1[j1], ai[k], ai1[k], false);
                _11(ai[k1], ai1[k1], ai[k], ai1[k], true);
            }
        }
        int ai2[] = {
            k, l
        };
        return ai2;
    }

    public void _11(int i, int j, int k, int l, boolean flag)
    {
        int i1 = k - i;
        int j1 = l - j;
        if(Math.abs(i1) > Math.abs(j1))
        {
            if(i1 < 0)
            {
                int k1 = i;
                i = k;
                k = k1;
                k1 = j;
                j = l;
                l = k1;
            }
            byte byte1;
            if(l > j)
            {
                byte1 = 1;
            } else
            {
                byte1 = -1;
            }
            i1 = k - i;
            j1 = Math.abs(l - j);
            int l1 = i;
            int k2 = j;
            int i3 = -(i1 / 2);
            if(l1 >= 0 && k2 >= 0 && k2 < _8.height)
            {
                if(flag)
                {
                    _18[k2] = Math.min(l1, _8.width - 1);
                } else
                {
                    _19[k2] = Math.min(l1, _8.width - 1);
                }
            }
            while(l1 < k) 
            {
                boolean flag1 = false;
                i3 += j1;
                if(i3 >= 0)
                {
                    k2 += byte1;
                    i3 -= i1;
                    flag1 = true;
                }
                if(++l1 >= 0 && k2 >= 0 && k2 < _8.height && flag1)
                {
                    if(flag)
                    {
                        _18[k2] = Math.min(l1, _8.width - 1);
                    } else
                    {
                        _19[k2] = Math.min(l1, _8.width - 1);
                    }
                }
            }
            return;
        }
        if(j1 < 0)
        {
            int i2 = i;
            i = k;
            k = i2;
            i2 = j;
            j = l;
            l = i2;
        }
        byte byte0;
        if(k > i)
        {
            byte0 = 1;
        } else
        {
            byte0 = -1;
        }
        i1 = Math.abs(k - i);
        j1 = l - j;
        int j2 = i;
        int l2 = j;
        int j3 = -(j1 / 2);
        if(j2 >= 0 && l2 >= 0 && l2 < _8.height)
        {
            if(flag)
            {
                _18[l2] = Math.min(j2, _8.width - 1);
            } else
            {
                _19[l2] = Math.min(j2, _8.width - 1);
            }
        }
        while(l2 < l) 
        {
            j3 += i1;
            if(j3 >= 0)
            {
                j2 += byte0;
                j3 -= j1;
            }
            l2++;
            if(j2 >= 0 && l2 >= 0 && l2 < _8.height)
            {
                if(flag)
                {
                    _18[l2] = Math.min(j2, _8.width - 1);
                } else
                {
                    _19[l2] = Math.min(j2, _8.width - 1);
                }
            }
        }
    }

    public void _0()
    {
        if(_31 > 0)
        {
            double d = 0.0D;
            for(int i = 0; i < _31 * 3; i += 3)
            {
                double d1 = _26[i];
                double d3 = _26[i + 1];
                double d4 = _26[i + 2];
                double d5 = Math.sqrt(d1 * d1 + d3 * d3 + d4 * d4) * Math.sqrt(2D);
                if(d5 > d)
                {
                    d = d5;
                }
            }

            double d2 = (double)(_8.width <= _8.height ? _8.width : _8.height) / d;
            for(int j = 0; j < _31 * 3; j += 3)
            {
                _26[j] *= d2;
                _26[j + 1] *= d2;
                _26[j + 2] *= d2;
            }

        }
    }

    public void _12()
    {
        _27 = _5("sleeptime", 10);
        _73 = _5("shadowcolor", 16);
        _72 = _5("textcolor", 16);
        _71 = _5("background", 16);
        _13 = new String[6];
        for(int i = 0; i < 6; i++)
        {
            _13[i] = getParameter("url" + Integer.toString(i));
            if(_13[i] == null)
            {
                _13[i] = "";
            }
        }

        if(getParameter("showlightbutton") != null)
        {
            _83 = getParameter("showlightbutton").substring(0, 1).equalsIgnoreCase("y");
        }
        _7 = getParameter("target");
        _55 = ((double)_5("anglestep", 10) * 3.1415926535897931D) / 180D;
        _53 = ((double)_5("mouseresponse", 10) * 3.1415926535897931D) / 180D;
        _54 = ((double)_5("zoomspeed", 10) * 3.1415926535897931D) / 180D;
        _84 = getParameter("spotlight").substring(0, 1).equalsIgnoreCase("y");
    }

    public void _8()
    {
        for(int i = _31 * 3; (i -= 3) >= 0;)
        {
            double d = _26[i];
            double d1 = _26[i + 1];
            double d2 = _26[i + 2];
            _25[i] = d * _36 + d1 * _37 + d2 * _38 + _39;
            _25[i + 1] = d * _40 + d1 * _41 + d2 * _42 + _43;
            _25[i + 2] = d * _44 + d1 * _45 + d2 * _46 + _47;
        }

    }

    public void _3()
    {
        _39 += _59;
        _43 += _60;
        _47 += _61;
    }

    public void _10(double d, double d1, double d2, double d3, double d4)
    {
        double d11 = Math.cos(d3);
        double d12 = Math.sin(d3);
        for(int i = _31 * 3; (i -= 3) >= 0;)
        {
            double d5 = _25[i];
            double d7 = _25[i + 1];
            double d9 = _25[i + 2] - _47;
            double d13 = d * d5 + d1 * d7 + d2 * d9;
            _25[i] = d13 * d + d11 * (d5 - d13 * d) + d12 * (d1 * d9 - d2 * d7);
            _25[i + 1] = d13 * d1 + d11 * (d7 - d13 * d1) + d12 * (d2 * d5 - d * d9);
            _25[i + 2] = d13 * d2 + d11 * (d9 - d13 * d2) + d12 * (d * d7 - d1 * d5);
            _25[i] *= d4;
            _25[i + 1] *= d4;
            _25[i + 2] *= d4;
            _25[i + 2] += _47;
        }

        double d6 = _65;
        double d8 = _66;
        double d10 = _67;
        double d14 = d * d6 + d1 * d8 + d2 * d10;
        _65 = d14 * d + d11 * (d6 - d14 * d) + d12 * (d1 * d10 - d2 * d8);
        _66 = d14 * d1 + d11 * (d8 - d14 * d1) + d12 * (d2 * d6 - d * d10);
        _67 = d14 * d2 + d11 * (d10 - d14 * d2) + d12 * (d * d8 - d1 * d6);
    }

    public void _9()
    {
        double d = Math.cos(_56);
        double d1 = Math.sin(_56);
        double d2 = _40 * d + _44 * d1;
        double d3 = _41 * d + _45 * d1;
        double d4 = _42 * d + _46 * d1;
        double d5 = _44 * d - _40 * d1;
        double d6 = _45 * d - _41 * d1;
        double d7 = _46 * d - _42 * d1;
        _40 = d2;
        _41 = d3;
        _42 = d4;
        _44 = d5;
        _45 = d6;
        _46 = d7;
    }

    public void _7()
    {
        double d = Math.cos(_57);
        double d1 = Math.sin(_57);
        double d2 = _36 * d + _44 * d1;
        double d3 = _37 * d + _45 * d1;
        double d4 = _38 * d + _46 * d1;
        double d5 = _44 * d - _36 * d1;
        double d6 = _45 * d - _37 * d1;
        double d7 = _46 * d - _38 * d1;
        _36 = d2;
        _37 = d3;
        _38 = d4;
        _44 = d5;
        _45 = d6;
        _46 = d7;
    }

    public void _6()
    {
        double d = Math.cos(_58);
        double d1 = Math.sin(_58);
        double d2 = _40 * d + _36 * d1;
        double d3 = _41 * d + _37 * d1;
        double d4 = _42 * d + _38 * d1;
        double d5 = _36 * d - _40 * d1;
        double d6 = _37 * d - _41 * d1;
        double d7 = _38 * d - _42 * d1;
        _40 = d2;
        _41 = d3;
        _42 = d4;
        _36 = d5;
        _37 = d6;
        _38 = d7;
    }

    public Image _2(Image image, int i, int j)
    {
        int k = image.getWidth(this);
        int l = image.getHeight(this);
        int ai[] = new int[k * l];
        PixelGrabber pixelgrabber = new PixelGrabber(image, 0, 0, k, l, ai, 0, k);
        try
        {
            pixelgrabber.grabPixels();
        }
        catch(InterruptedException _ex) { }
        _20 = new int[i * j];
        int i1 = (0x10000 * l) / j;
        int j1 = (0x10000 * k) / i;
        int k1 = 0;
        int l1 = 0;
        for(int i2 = 0; i2 < i; i2++)
        {
            for(int j2 = 0; j2 < j; j2++)
            {
                _20[i2 + j2 * i] = ai[(k1 >> 16) + (l1 >> 16) * k];
                l1 += i1;
            }

            k1 += j1;
            l1 = 0;
        }

        return createImage(new MemoryImageSource(i, j, _20, 0, i));
    }

    public boolean mouseDown(Event event, int i, int j)
    {
        if(_83 && _8.height - j < 32 && _8.width - i < 18)
        {
            _84 = !_84;
        } else
        if(_74 != 7)
        {
            if(System.currentTimeMillis() - _15 < 500L)
            {
                _86 = true;
                if(_13[_74] != null)
                {
                    URL url = null;
                    try
                    {
                        url = new URL(_13[_74]);
                    }
                    catch(MalformedURLException _ex)
                    {
                        System.out.println("Invalid URL");
                        showStatus("Invalid URL");
                    }
                    getAppletContext().showDocument(url, _7);
                }
            } else
            {
                _87 = true;
                _15 = System.currentTimeMillis();
            }
        }
        return true;
    }

    public boolean mouseEnter(Event event, int i, int j)
    {
        _89 = true;
        return true;
    }

    public boolean mouseExit(Event event, int i, int j)
    {
        _90 = true;
        _89 = false;
        return true;
    }

    public boolean mouseMove(Event event, int i, int j)
    {
        _89 = true;
        _11 = i;
        _12 = j;
        if(_83)
        {
            if(_8.width - i >= 18 || _8.height - j >= 32)
            {
                _48 = (((double)(_8.height / 2 - j) * _53) / (double)_8.width) * 2D;
                _49 = (((double)(_8.width / 2 - i) * _53) / (double)_8.height) * 2D;
            }
        } else
        {
            _48 = (((double)(_8.height / 2 - j) * _53) / (double)_8.width) * 2D;
            _49 = (((double)(_8.width / 2 - i) * _53) / (double)_8.height) * 2D;
        }
        return true;
    }

    void _4(Image image)
    {
        MediaTracker mediatracker = new MediaTracker(this);
        mediatracker.addImage(image, 0);
        try
        {
            mediatracker.waitForID(0);
            return;
        }
        catch(InterruptedException _ex)
        {
            return;
        }
    }

    public synchronized void paint(Graphics g)
    {
        if(_4 != null && _88)
        {
            g.drawImage(_4, 0, 0, this);
        }
    }

    public synchronized void update(Graphics g)
    {
        paint(g);
    }

    public int _5(String s, int i)
    {
        try
        {
            return Integer.parseInt(getParameter(s), i);
        }
        catch(NumberFormatException _ex)
        {
            return 0;
        }
    }

    public void start()
    {
        if(_3 == null)
        {
            _3 = new Thread(this);
            _3.start();
        }
    }

    public void stop()
    {
        if(_3 != null && _3.isAlive())
        {
            _3.stop();
        }
        _3 = null;
    }

    public image3dcube()
    {
        _28 = 6;
        _83 = false;
        _84 = false;
        _85 = false;
        _86 = false;
        _87 = false;
        _88 = false;
        _89 = false;
        _90 = false;
        _91 = false;
        _92 = false;
    }
}