Internet Start Page  TOP  
 Road of Developers
 
 
写真:いすゞ本社ビル 大森ベルポート



DownLoad 3dcube.lzh(ソースコード付き)


/////////////////////////////////////////////////////////////////////////////////
//////////////////
//Java Image3DCubeViewer / I-ichirow Suzuki
//
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 A;
    private Graphics B;
    private Graphics C;
    private Thread D;
    private Image E;
    private Image F;
    private Image G;
    private String H;
    private Dimension I;
    private int J;
    private int K;
    private int L;
    private int M;
    private String N[];
    private long O;
    private long P;
    private int Q[];
    private int R[];
    private int S[];
    private int T[];
    private int U[];
    private int V[];
    private int W[];
    private int X[];
    private int Y[] = {
        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 Z[];
    private double a[];
    private int b;
    private int c;
    private int d;
    private int e;
    private int f;
    private int g;
    private int h;
    private int i;
    private int j;
    private double k;
    private double l;
    private double m;
    private double n;
    private double o;
    private double p;
    private double q;
    private double r;
    private double s;
    private double t;
    private double u;
    private double v;
    private double w;
    private double x;
    private double y;
    private double z;
    private double C0;
    private double C1;
    private double C2;
    private double C3;
    private double C4;
    private double C5;
    private double C6;
    private double C7;
    private double C8;
    private double C9;
    private double CA;
    private double CB;
    private double CC;
    private double CD;
    private double CE;
    private double CF;
    private double D0;
    private double D1;
    private double D2;
    private int D3;
    private int D4;
    private int D5;
    private int D6;
    private int D8;
    private int D9;
    private int DA;
    private int DB;
    private int DC;
    private int DD;
    private int DE[];
    private int DF[];
    private boolean E0;
    private boolean E1;
    private boolean E2;
    private boolean E3;
    private boolean E4;
    private boolean E5;
    private boolean E6;
    private boolean E7;
    private boolean E8;
    private boolean E9;
    //----------------------------------------------------------
    public image3dcube()
    {
        c = 6;
        E0 = false;
        E1 = false;
        E2 = false;
        E3 = false;
        E4 = false;
        E5 = false;
        E6 = false;
        E7 = false;
        E8 = false;
        E9 = false;
    }
    //----------------------------------------------------------
    public synchronized void paint(Graphics g1)
    {
        if(E != null && E5)
            g1.drawImage(E, 0, 0, this);
    }
    //----------------------------------------------------------
    public synchronized void update(Graphics g1)
    {
        paint(g1);
    }
    //----------------------------------------------------------
    public int L(String s1, int i1)
    {
        try
        {
            return Integer.parseInt(getParameter(s1), i1);
        }
        catch(NumberFormatException _ex)
        {
            return 0;
        }
    }
    //----------------------------------------------------------
    public void start()
    {
        if(D == null)
        {
            D = new Thread(this);
            D.start();
        }
    }
    //----------------------------------------------------------
    public void stop()
    {
        if(D != null && D.isAlive())
            D.stop();
        D = null;
    }
    //----------------------------------------------------------
    public void init()
    {
        super.init();
        setLayout(null);
        B();
        I = size();
        D8 = I.width >= I.height ? I.height : I.width;
        D9 = D8 / 2;
        double d1 = D9;
        double ad[] = {
            -d1, -d1, -d1, d1, -d1, -d1, d1, d1, -d1, -d1, 
            d1, -d1, -d1, -d1, d1, d1, -d1, d1, d1, d1, 
            d1, -d1, d1, d1
        };
        a = ad;
        J = I.width / 2;
        K = I.height / 2;
        y = 1.0D;
        z = -1D;
        S = new int[I.height];
        T = new int[I.height];
        Q = new int[I.width * I.height];
        W = new int[I.width * I.height];
        X = new int[I.width * I.height];
        DF = new int[I.width];
        for(int i1 = 0; i1 < I.width; i1++)
            DF[i1] = 0xff000000 + D5;
        V = new int[I.height];
        for(int j1 = 0; j1 < I.height; j1++)
            V[j1] = 0;
        B = getGraphics();
        d = 512;
        e = 900;
        DD = 6;
        g = 30;
        f = a.length / 3;
        Z = new double[a.length];
        G = createImage(I.width, I.height);
        C = G.getGraphics();
        C.setColor(new Color(D3));
        C.fillRect(0, 0, I.width, I.height);
        if(E0)
        {
            F = getImage(getDocumentBase(), "on.gif");
            C(F);
            C.drawImage(F, I.width - 18, I.height - 32, this);
        }
        PixelGrabber pixelgrabber = new PixelGrabber(G, 0, 0, I.width, I.height, W, 0, I.width);
        try
        {
            pixelgrabber.grabPixels();
        }
        catch(InterruptedException _ex) { }
        if(E0)
        {
            F = getImage(getDocumentBase(), "off.gif");
            C(F);
            C.drawImage(F, I.width - 18, I.height - 32, this);
        }
        pixelgrabber = new PixelGrabber(G, 0, 0, I.width, I.height, X, 0, I.width);
        try
        {
            pixelgrabber.grabPixels();
            return;
        }
        catch(InterruptedException _ex)
        {
            return;
        }
    }
    //----------------------------------------------------------
    public void run()
    {
        E = createImage(I.width, I.height);
        Graphics g1 = E.getGraphics();
        String s1 = "";
        FontMetrics fontmetrics = g1.getFontMetrics();
        DE = new int[I.width * I.height * 6];
        E5 = true;
        for(int i1 = 0; i1 < 6; i1++)
        {
            g1.setColor(new Color(D3));
            g1.fillRect(0, 0, I.width, I.height);
            g1.setColor(new Color(D4));
            String s2 = "Loading Image " + Integer.toString(i1 + 1);
            g1.drawString(s2, J - fontmetrics.stringWidth(s2) / 2, K);
            update(B);
            if(getParameter("image" + Integer.toString(i1)) != null)
            {
                F = getImage(getDocumentBase(), getParameter("image" + Integer.toString(i1)));
                C(F);
                F = I(F, D8, D8);
                System.arraycopy(U, 0, DE, i1 * D8 * D8, D8 * D8);
            }
        }
        E5 = false;
        D2 = 0.0D;
        D0 = 50D;
        D1 = 50D;
        E3 = false;
        E4 = false;
        E5 = false;
        E6 = false;
        E7 = false;
        E8 = false;
        E9 = false;
        M();
        System.arraycopy(a, 0, Z, 0, a.length);
        n = r = v = 0.0D;
        k = p = u = 1.0D;
        l = m = o = q = s = t = 0.0D;
        C4 = C5 = C6 = 0.0D;
        F();
        E7 = false;
        do
        {
            E2 = E1;
            n = r = v = 0.0D;
            if(E8)
            {
                v = 750D;
                double d1 = Math.asin(Math.sqrt(CA * CA + CB * CB));
                double d2 = Math.sqrt(CA * CA + CB * CB);
                double d3 = (int)(d1 / C2);
                for(int j1 = 0; (double)j1 < d3; j1++)
                {
                    D(-CB / d2, CA / d2, 0.0D, C2, 1.0D);
                    A();
                    E5 = true;
                    update(B);
                    E5 = false;
                }
                D(-CB / d2, CA / d2, 0.0D, d1 - d3 * C2, 1.0D);
                A();
                E5 = true;
                update(B);
                E5 = false;
                double d4 = Math.acos(CD);
                if(CE > 0.0D)
                    d4 = -d4;
                int k1 = Math.max((int)(Math.abs(d4) / C2 / 3D), 5);
                double d5 = Math.exp(Math.log(1.45D) / (double)k1);
                for(int l1 = 1; l1 <= k1; l1++)
                {
                    D(0.0D, 0.0D, -1D, -d4 / (double)k1, d5);
                    A();
                    E5 = true;
                    update(B);
                    E5 = false;
                }
                while(!E4) 
                {
                    E5 = true;
                    try
                    {
                        Thread.sleep(100L);
                    }
                    catch(InterruptedException _ex) { }
                }
                for(int i2 = 1; i2 <= k1; i2++)
                {
                    D(0.0D, 0.0D, -1D, d4 / (double)k1, 1.0D / d5);
                    A();
                    E5 = true;
                    update(B);
                    E5 = false;
                }
                v = 750D;
                d2 = Math.sqrt(CA * CA + CB * CB);
                for(int j2 = 0; (double)j2 < d3; j2++)
                {
                    D(-CB / d2, CA / d2, 0.0D, -C2, 1.0D);
                    A();
                    E5 = true;
                    update(B);
                    E5 = false;
                }
                D(-CB / d2, CA / d2, 0.0D, -d1 + d3 * C2, 1.0D);
                A();
                E5 = true;
                update(B);
                E5 = false;
                n = r = v = 0.0D;
                C4 = w;
                C5 = x;
                E8 = false;
                E3 = false;
            } else
            if(E6)
            {
                C4 = w;
                C5 = x;
            } else
            {
                if(E7)
                {
                    O = System.currentTimeMillis();
                    C4 = C5 = w = x = 0.0D;
                    E7 = false;
                }
                if(System.currentTimeMillis() - O > 5000L)
                {
                    C5 = C3;
                    C4 = (2D * C3) / 3D;
                }
            }
            E();
            G();
            C9 = 750D;
            J();
            F();
            A();
            E5 = true;
            update(B);
            E5 = false;
            try
            {
                Thread.sleep(b);
            }
            catch(InterruptedException _ex) { }
        } while(true);
    }
    //----------------------------------------------------------
    public void A()
    {
        E.flush();
        E9 = false;
        if(E2)
            System.arraycopy(W, 0, Q, 0, I.width * I.height);
        else
            System.arraycopy(X, 0, Q, 0, I.width * I.height);
        int i1 = 0;
        int ai[] = new int[f];
        int ai1[] = new int[f];
        int j1 = 0;
        for(int l1 = 0; l1 < f * 3; l1 += 3)
        {
            int i2 = (int)Z[l1];
            int k2 = (int)Z[l1 + 1];
            int l2 = (int)Z[l1 + 2];
            ai[j1] = (i2 * d) / l2 + J;
            ai1[j1] = (k2 * d) / l2 + K;
            j1++;
        }
        int j2 = 0;
        Polygon polygon = new Polygon();
        int i3 = Y[0];
        for(int j3 = 0; j3 < g; j3++)
        {
            int k3 = Y[j3];
            if(k3 < 0)
            {
                polygon.addPoint(ai[i3], ai1[i3]);
                i3 = Y[j3 + 1];
                byte byte0 = 0;
                byte byte1 = 0;
                byte byte3 = 0;
                byte byte5 = 0;
                switch(i1)
                {
                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 d1 = (double)e - D2;
                double d2 = ((Z[byte1 * 3] - D0) * d1) / (Z[byte1 * 3 + 2] - D2);
                double d3 = ((Z[byte1 * 3 + 1] - D1) * d1) / (Z[byte1 * 3 + 2] - D2);
                double d5 = ((Z[byte0 * 3] - D0) * d1) / (Z[byte0 * 3 + 2] - D2);
                double d7 = ((Z[byte0 * 3 + 1] - D1) * d1) / (Z[byte0 * 3 + 2] - D2);
                double d9 = ((Z[byte3 * 3] - D0) * d1) / (Z[byte3 * 3 + 2] - D2);
                double d11 = ((Z[byte3 * 3 + 1] - D1) * d1) / (Z[byte3 * 3 + 2] - D2);
                double d13 = ((Z[byte5 * 3] - D0) * d1) / (Z[byte5 * 3 + 2] - D2);
                double d15 = ((Z[byte5 * 3 + 1] - D1) * d1) / (Z[byte5 * 3 + 2] - D2);
                polygon1.addPoint((int)((d2 * (double)d) / d1 + (double)J), (int)((d3 * (double)d) / d1 + (double)J));
                polygon1.addPoint((int)((d5 * (double)d) / d1 + (double)J), (int)((d7 * (double)d) / d1 + (double)J));
                polygon1.addPoint((int)((d9 * (double)d) / d1 + (double)J), (int)((d11 * (double)d) / d1 + (double)J));
                polygon1.addPoint((int)((d13 * (double)d) / d1 + (double)J), (int)((d15 * (double)d) / d1 + (double)J));
                int ai2[] = polygon1.ypoints;
                int ai3[] = new int[2];
                ai3 = N(polygon1.xpoints, polygon1.ypoints);
                int j5 = ai3[0];
                int k5 = ai3[1];
                for(int l5 = Math.max(ai2[k5], 0); l5 < Math.min(ai2[j5], I.height); l5++)
                {
                    int i6 = Math.min(S[l5], T[l5]);
                    int j6 = Math.max(S[l5], T[l5]);
                    System.arraycopy(DF, 0, Q, i6 + l5 * I.width, j6 - i6);
                }
                i1++;
                polygon = new Polygon();
                j2 = j3 + 1;
            } else
            {
                polygon.addPoint(ai[k3], ai1[k3]);
            }
        }
        j2 = 0;
        polygon = new Polygon();
        i3 = Y[0];
        i1 = 0;
        for(int l3 = 0; l3 < g; l3++)
        {
            int i4 = Y[l3];
            if(i4 < 0)
            {
                polygon.addPoint(ai[i3], ai1[i3]);
                i3 = Y[l3 + 1];
                byte byte2 = 0;
                byte byte4 = 0;
                byte byte6 = 0;
                boolean flag = false;
                switch(i1)
                {
                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 j4 = ai[byte6] - ai[byte2];
                int k4 = ai1[byte6] - ai1[byte2];
                int l4 = ai[byte4] - ai[byte2];
                int i5 = ai1[byte4] - ai1[byte2];
                if(j4 * i5 - k4 * l4 <= 0)
                {
                    double d4 = (Z[byte4 * 3] - Z[byte2 * 3]) / (double)D8;
                    double d6 = (Z[byte4 * 3 + 1] - Z[byte2 * 3 + 1]) / (double)D8;
                    double d8 = (Z[byte4 * 3 + 2] - Z[byte2 * 3 + 2]) / (double)D8;
                    double d10 = (Z[byte6 * 3] - Z[byte2 * 3]) / (double)D8;
                    double d12 = (Z[byte6 * 3 + 1] - Z[byte2 * 3 + 1]) / (double)D8;
                    double d14 = (Z[byte6 * 3 + 2] - Z[byte2 * 3 + 2]) / (double)D8;
                    double d16 = Z[byte2 * 3];
                    double d17 = Z[byte2 * 3 + 1];
                    double d18 = Z[byte2 * 3 + 2];
                    double d19 = d12 * d8 - d14 * d6;
                    double d20 = d14 * d4 - d10 * d8;
                    double d21 = d10 * d6 - d12 * d4;
                    double d22 = Math.sqrt(d19 * d19 + d20 * d20 + d21 * d21);
                    d19 /= d22;
                    d20 /= d22;
                    d21 /= d22;
                    double d23 = (double)DA - (d16 + (double)D9 * d4 + (double)D9 * d10);
                    double d24 = (double)DB - (d17 + (double)D9 * d6 + (double)D9 * d12);
                    double d25 = (double)DC - (d18 + (double)D9 * d8 + (double)D9 * d14);
                    int k1 = j2;
                    polygon = new Polygon();
                    int k6 = Y[k1];
                    do
                    {
                        polygon.addPoint(ai[k6], ai1[k6]);
                        k6 = Y[++k1];
                    } while(k6 >= 0);
                    double d26 = (d23 * d19 + d24 * d20 + d25 * d21) / Math.sqrt(d23 * d23 + d24 * d24 + d25 * d25);
                    int l6 = E2 & (!E8) ? 255 : Math.max(Math.min((int)(255D * d26 * 0.90000000000000002D + 25.5D), 255), 20);
                    int ai4[] = new int[2];
                    ai4 = N(polygon.xpoints, polygon.ypoints);
                    int i7 = Math.min(polygon.ypoints[ai4[0]], I.height);
                    int j7 = Math.max(polygon.ypoints[ai4[1]], 0);
                    double d27 = (double)d * (d4 * d18 - d8 * d16);
                    double d28 = (double)d * (d8 * d10 - d4 * d14);
                    double d29 = (double)d * (d8 * d17 - d6 * d18);
                    double d30 = (double)d * (d6 * d14 - d8 * d12);
                    double d31 = (double)(d * d) * (d6 * d16 - d4 * d17);
                    double d32 = (double)(d * d) * (d4 * d12 - d6 * d10);
                    double d33 = (double)d * (d10 * d18 - d14 * d16);
                    double d34 = (double)d * (d14 * d4 - d10 * d8);
                    double d35 = (double)d * (d14 * d17 - d12 * d18);
                    double d36 = (double)d * (d12 * d8 - d14 * d6);
                    double d37 = (double)(d * d) * (d12 * d16 - d10 * d17);
                    double d38 = (double)(d * d) * (d10 * d6 - d12 * d4);
                    int k7 = I.width;
                    int l7 = i1 * D8 * D8;
                    if(!E2 || E8)
                    {
                        for(int k9 = j7; k9 < i7; k9++)
                        {
                            double d43 = (double)(k9 - K) * d27 + d31;
                            double d45 = (double)(k9 - K) * d28 + d32;
                            double d39 = (double)(k9 - K) * d33 + d37;
                            double d41 = (double)(k9 - K) * d34 + d38;
                            int l9 = Math.min(S[k9], T[k9]);
                            int i10 = Math.max(S[k9], T[k9]);
                            double d51 = (double)(l9 - J) * d35 + d39;
                            double d55 = (double)(l9 - J) * d36 + d41;
                            double d53 = (double)(l9 - J) * d29 + d43;
                            double d57 = (double)(l9 - J) * d30 + d45;
                            int j10 = k9 * k7;
                            for(int k10 = l9; k10 <= i10; k10++)
                            {
                                if(k10 >= 0 && k10 < k7)
                                {
                                    double d49 = d51 / d55;
                                    double d47 = d53 / d57;
                                    int i8 = (int)d49;
                                    int k8 = (int)d47;
                                    i8 = i8 >= 0 ? i8 <= D8 - 1 ? i8 : D8 - 1 : 0;
                                    k8 = k8 >= 0 ? k8 <= D8 - 1 ? k8 : D8 - 1 : 0;
                                    int i9 = DE[l7 + i8 + D8 * k8];
                                    int l10 = (i9 & 0xff) * l6 & 0xff00;
                                    int i11 = ((i9 & 0xff00) >> 8) * l6 & 0xff00;
                                    int j11 = ((i9 & 0xff0000) >> 16) * l6 & 0xff00;
                                    Q[k10 + j10] = 0xff000000 + (j11 << 8) + i11 + (l10 >> 8);
                                }
                                d51 += d35;
                                d55 += d36;
                                d53 += d29;
                                d57 += d30;
                            }
                        }
                    } else
                    {
                        double d65 = Math.sqrt((0.0D - D0) * (0.0D - D0) + (0.0D - D1) * (0.0D - D1) + (750D - D2) * (750D - D2));
                        double d66 = -D0 / d65;
                        double d67 = -D1 / d65;
                        double d68 = (750D - D2) / d65;
                        for(int l12 = j7; l12 < i7; l12++)
                        {
                            int i13 = Math.min(S[l12], T[l12]);
                            int j13 = Math.max(S[l12], T[l12]);
                            double d44 = (double)(l12 - K) * d27 + d31;
                            double d46 = (double)(l12 - K) * d28 + d32;
                            double d40 = (double)(l12 - K) * d33 + d37;
                            double d42 = (double)(l12 - K) * d34 + d38;
                            double d52 = (double)(i13 - J) * d35 + d40;
                            double d56 = (double)(i13 - J) * d36 + d42;
                            double d54 = (double)(i13 - J) * d29 + d44;
                            double d58 = (double)(i13 - J) * d30 + d46;
                            int k13 = l12 * k7;
                            for(int l13 = i13; l13 <= j13; l13++)
                            {
                                if(l13 >= 0 && l13 < k7)
                                {
                                    double d50 = d52 / d56;
                                    double d48 = d54 / d58;
                                    double d59 = (d16 + d4 * d50 + d10 * d48) - D0;
                                    double d61 = (d17 + d6 * d50 + d12 * d48) - D1;
                                    double d62 = (d18 + d8 * d50 + d14 * d48) - D2;
                                    double d63 = Math.sqrt(d59 * d59 + d61 * d61 + d62 * d62);
                                    d59 /= d63;
                                    d61 /= d63;
                                    d62 /= d63;
                                    double d64 = d66 * d59 + d67 * d61 + d68 * d62;
                                    double d69 = -(d19 * d59 + d20 * d61 + d21 * d62);
                                    double d70 = Math.max(35D * (d64 - 0.95999999999999996D), 0.0D);
                                    int j12 = (int)(((double)l6 * (d69 * (d70 * d70 + 1.0D))) / 2D) - 255;
                                    int k12 = (int)(255D * (50D * Math.max(d69 - 0.95999999999999996D, 0.025000000000000001D)));
                                    int j8 = (int)d50;
                                    int l8 = (int)d48;
                                    j8 = j8 >= 0 ? j8 <= D8 - 1 ? j8 : D8 - 1 : 0;
                                    l8 = l8 >= 0 ? l8 <= D8 - 1 ? l8 : D8 - 1 : 0;
                                    int j9 = DE[l7 + j8 + D8 * l8];
                                    int i12 = j9 & 0xff;
                                    int l11 = (j9 & 0xff00) >> 8;
                                    int k11 = (j9 & 0xff0000) >> 16;
                                    i12 *= k12;
                                    l11 *= k12;
                                    k11 *= k12;
                                    i12 >>= 8;
                                    l11 >>= 8;
                                    k11 >>= 8;
                                    i12 += j12;
                                    l11 += j12;
                                    k11 += j12;
                                    i12 = i12 <= 255 ? i12 : 255;
                                    l11 = l11 <= 255 ? l11 : 255;
                                    k11 = k11 <= 255 ? k11 : 255;
                                    i12 = i12 >= 0 ? i12 : 0;
                                    l11 = l11 >= 0 ? l11 : 0;
                                    k11 = k11 >= 0 ? k11 : 0;
                                    Q[l13 + k13] = 0xff000000 + (k11 << 16) + (l11 << 8) + i12;
                                }
                                d52 += d35;
                                d56 += d36;
                                d54 += d29;
                                d58 += d30;
                            }
                        }
                    }
                    if(polygon.inside(L, M))
                    {
                        D6 = i1;
                        E9 = true;
                        if(E4 && !E8)
                        {
                            CA = d19;
                            CB = d20;
                            CC = d21;
                            double d60 = Math.sqrt(d4 * d4 + d6 * d6 + d8 * d8);
                            CD = d4 / d60;
                            CE = d6 / d60;
                            CF = d8 / d60;
                            D6 = i1;
                            E8 = true;
                            E4 = false;
                        } else
                        {
                            E4 = false;
                        }
                    }
                }
                i1++;
                polygon = new Polygon();
                j2 = l3 + 1;
            } else
            {
                polygon.addPoint(ai[i4], ai1[i4]);
            }
        }
        E = createImage(new MemoryImageSource(I.width, I.height, Q, 0, I.width));
        C(E);
        if(!E9)
            D6 = 7;
    }
    //----------------------------------------------------------
    public int[] N(int ai[], int ai1[])
    {
        System.arraycopy(V, 0, S, 0, I.height);
        System.arraycopy(V, 0, T, 0, I.height);
        int i1 = 0xff000001;
        int j1 = 0xffffff;
        int k1 = 5;
        int l1 = 5;
        for(int i2 = 0; i2 < 4; i2++)
        {
            if(ai1[i2] < j1)
            {
                j1 = ai1[i2];
                l1 = i2;
            }
            if(ai1[i2] > i1)
            {
                i1 = ai1[i2];
                k1 = i2;
            }
        }
        int j2 = (l1 + 1) % 4;
        int k2 = ((4 + l1) - 1) % 4;
        byte byte0 = 5;
        if(ai[j2] < ai[k2])
        {
            K(ai[j2], ai1[j2], ai[l1], ai1[l1], true);
            K(ai[k2], ai1[k2], ai[l1], ai1[l1], false);
            if(j2 == k1)
            {
                int l2 = ((4 + l1) - 2) % 4;
                K(ai[k2], ai1[k2], ai[l2], ai1[l2], false);
                K(ai[l2], ai1[l2], ai[k1], ai1[k1], false);
            } else
            if(k2 == k1)
            {
                int i3 = (l1 + 2) % 4;
                K(ai[j2], ai1[j2], ai[i3], ai1[i3], true);
                K(ai[i3], ai1[i3], ai[k1], ai1[k1], true);
            } else
            {
                K(ai[j2], ai1[j2], ai[k1], ai1[k1], true);
                K(ai[k2], ai1[k2], ai[k1], ai1[k1], false);
            }
        } else
        {
            K(ai[j2], ai1[j2], ai[l1], ai1[l1], false);
            K(ai[k2], ai1[k2], ai[l1], ai1[l1], true);
            if(j2 == k1)
            {
                int j3 = ((4 + l1) - 2) % 4;
                K(ai[k2], ai1[k2], ai[j3], ai1[j3], true);
                K(ai[j3], ai1[j3], ai[k1], ai1[k1], true);
            } else
            if(k2 == k1)
            {
                int k3 = (l1 + 2) % 4;
                K(ai[j2], ai1[j2], ai[k3], ai1[k3], false);
                K(ai[k3], ai1[k3], ai[k1], ai1[k1], false);
            } else
            {
                K(ai[j2], ai1[j2], ai[k1], ai1[k1], false);
                K(ai[k2], ai1[k2], ai[k1], ai1[k1], true);
            }
        }
        int ai2[] = {
            k1, l1
        };
        return ai2;
    }
    //----------------------------------------------------------
    public void K(int i1, int j1, int k1, int l1, boolean flag)
    {
        int i2 = k1 - i1;
        int j2 = l1 - j1;
        if(Math.abs(i2) > Math.abs(j2))
        {
            if(i2 < 0)
            {
                int k2 = i1;
                i1 = k1;
                k1 = k2;
                k2 = j1;
                j1 = l1;
                l1 = k2;
            }
            byte byte1;
            if(l1 > j1)
                byte1 = 1;
            else
                byte1 = -1;
            i2 = k1 - i1;
            j2 = Math.abs(l1 - j1);
            int l2 = i1;
            int k3 = j1;
            int i4 = -(i2 / 2);
            if(l2 >= 0 && k3 >= 0 && k3 < I.height)
                if(flag)
                    S[k3] = Math.min(l2, I.width - 1);
                else
                    T[k3] = Math.min(l2, I.width - 1);
            while(l2 < k1) 
            {
                boolean flag1 = false;
                i4 += j2;
                if(i4 >= 0)
                {
                    k3 += byte1;
                    i4 -= i2;
                    flag1 = true;
                }
                if(++l2 >= 0 && k3 >= 0 && k3 < I.height && flag1)
                    if(flag)
                        S[k3] = Math.min(l2, I.width - 1);
                    else
                        T[k3] = Math.min(l2, I.width - 1);
            }
            return;
        }
        if(j2 < 0)
        {
            int i3 = i1;
            i1 = k1;
            k1 = i3;
            i3 = j1;
            j1 = l1;
            l1 = i3;
        }
        byte byte0;
        if(k1 > i1)
            byte0 = 1;
        else
            byte0 = -1;
        i2 = Math.abs(k1 - i1);
        j2 = l1 - j1;
        int j3 = i1;
        int l3 = j1;
        int j4 = -(j2 / 2);
        if(j3 >= 0 && l3 >= 0 && l3 < I.height)
            if(flag)
                S[l3] = Math.min(j3, I.width - 1);
            else
                T[l3] = Math.min(j3, I.width - 1);
        while(l3 < l1) 
        {
            j4 += i2;
            if(j4 >= 0)
            {
                j3 += byte0;
                j4 -= j2;
            }
            l3++;
            if(j3 >= 0 && l3 >= 0 && l3 < I.height)
                if(flag)
                    S[l3] = Math.min(j3, I.width - 1);
                else
                    T[l3] = Math.min(j3, I.width - 1);
        }
    }
    //----------------------------------------------------------
    public void M()
    {
        if(f > 0)
        {
            double d1 = 0.0D;
            for(int i1 = 0; i1 < f * 3; i1 += 3)
            {
                double d2 = a[i1];
                double d4 = a[i1 + 1];
                double d5 = a[i1 + 2];
                double d6 = Math.sqrt(d2 * d2 + d4 * d4 + d5 * d5) * Math.sqrt(2D);
                if(d6 > d1)
                    d1 = d6;
            }
            double d3 = (double)(I.width <= I.height ? I.width : I.height) / d1;
            for(int j1 = 0; j1 < f * 3; j1 += 3)
            {
                a[j1] *= d3;
                a[j1 + 1] *= d3;
                a[j1 + 2] *= d3;
            }
        }
    }
    //----------------------------------------------------------
    public void B()
    {
        b = L("sleeptime", 10);
        D5 = L("shadowcolor", 16);
        D4 = L("textcolor", 16);
        D3 = L("background", 16);
        N = new String[6];
        for(int i1 = 0; i1 < 6; i1++)
        {
            N[i1] = getParameter("url" + Integer.toString(i1));
            if(N[i1] == null)
                N[i1] = "";
        }
        if(getParameter("showlightbutton") != null)
            E0 = getParameter("showlightbutton").substring(0, 1).equalsIgnoreCase("y");
        H = getParameter("target");
        C3 = ((double)L("anglestep", 10) * 3.1415926535897931D) / 180D;
        C1 = ((double)L("mouseresponse", 10) * 3.1415926535897931D) / 180D;
        C2 = ((double)L("zoomspeed", 10) * 3.1415926535897931D) / 180D;
        E1 = getParameter("spotlight").substring(0, 1).equalsIgnoreCase("y");
    }
    //----------------------------------------------------------
    public void F()
    {
        for(int i1 = f * 3; (i1 -= 3) >= 0;)
        {
            double d1 = a[i1];
            double d2 = a[i1 + 1];
            double d3 = a[i1 + 2];
            Z[i1] = d1 * k + d2 * l + d3 * m + n;
            Z[i1 + 1] = d1 * o + d2 * p + d3 * q + r;
            Z[i1 + 2] = d1 * s + d2 * t + d3 * u + v;
        }
    }
    //----------------------------------------------------------
    public void J()
    {
        n += C7;
        r += C8;
        v += C9;
    }
    //----------------------------------------------------------
    public void D(double d1, double d2, double d3, double d4, double d5)
    {
        double d12 = Math.cos(d4);
        double d13 = Math.sin(d4);
        for(int i1 = f * 3; (i1 -= 3) >= 0;)
        {
            double d6 = Z[i1];
            double d8 = Z[i1 + 1];
            double d10 = Z[i1 + 2] - v;
            double d14 = d1 * d6 + d2 * d8 + d3 * d10;
            Z[i1] = d14 * d1 + d12 * (d6 - d14 * d1) + d13 * (d2 * d10 - d3 * d8);
            Z[i1 + 1] = d14 * d2 + d12 * (d8 - d14 * d2) + d13 * (d3 * d6 - d1 * d10);
            Z[i1 + 2] = d14 * d3 + d12 * (d10 - d14 * d3) + d13 * (d1 * d8 - d2 * d6);
            Z[i1] *= d5;
            Z[i1 + 1] *= d5;
            Z[i1 + 2] *= d5;
            Z[i1 + 2] += v;
        }
        double d7 = CD;
        double d9 = CE;
        double d11 = CF;
        double d15 = d1 * d7 + d2 * d9 + d3 * d11;
        CD = d15 * d1 + d12 * (d7 - d15 * d1) + d13 * (d2 * d11 - d3 * d9);
        CE = d15 * d2 + d12 * (d9 - d15 * d2) + d13 * (d3 * d7 - d1 * d11);
        CF = d15 * d3 + d12 * (d11 - d15 * d3) + d13 * (d1 * d9 - d2 * d7);
    }
    //----------------------------------------------------------
    public void E()
    {
        double d1 = Math.cos(C4);
        double d2 = Math.sin(C4);
        double d3 = o * d1 + s * d2;
        double d4 = p * d1 + t * d2;
        double d5 = q * d1 + u * d2;
        double d6 = s * d1 - o * d2;
        double d7 = t * d1 - p * d2;
        double d8 = u * d1 - q * d2;
        o = d3;
        p = d4;
        q = d5;
        s = d6;
        t = d7;
        u = d8;
    }
    //----------------------------------------------------------
    public void G()
    {
        double d1 = Math.cos(C5);
        double d2 = Math.sin(C5);
        double d3 = k * d1 + s * d2;
        double d4 = l * d1 + t * d2;
        double d5 = m * d1 + u * d2;
        double d6 = s * d1 - k * d2;
        double d7 = t * d1 - l * d2;
        double d8 = u * d1 - m * d2;
        k = d3;
        l = d4;
        m = d5;
        s = d6;
        t = d7;
        u = d8;
    }
    //----------------------------------------------------------
    public void H()
    {
        double d1 = Math.cos(C6);
        double d2 = Math.sin(C6);
        double d3 = o * d1 + k * d2;
        double d4 = p * d1 + l * d2;
        double d5 = q * d1 + m * d2;
        double d6 = k * d1 - o * d2;
        double d7 = l * d1 - p * d2;
        double d8 = m * d1 - q * d2;
        o = d3;
        p = d4;
        q = d5;
        k = d6;
        l = d7;
        m = d8;
    }
    //----------------------------------------------------------
    public Image I(Image image, int i1, int j1)
    {
        int k1 = image.getWidth(this);
        int l1 = image.getHeight(this);
        int ai[] = new int[k1 * l1];
        PixelGrabber pixelgrabber = new PixelGrabber(image, 0, 0, k1, l1, ai, 0, k1);
        try
        {
            pixelgrabber.grabPixels();
        }
        catch(InterruptedException _ex) { }
        U = new int[i1 * j1];
        int i2 = (0x10000 * l1) / j1;
        int j2 = (0x10000 * k1) / i1;
        int k2 = 0;
        int l2 = 0;
        for(int i3 = 0; i3 < i1; i3++)
        {
            for(int j3 = 0; j3 < j1; j3++)
            {
                U[i3 + j3 * i1] = ai[(k2 >> 16) + (l2 >> 16) * k1];
                l2 += i2;
            }
            k2 += j2;
            l2 = 0;
        }
        return createImage(new MemoryImageSource(i1, j1, U, 0, i1));
    }
    //----------------------------------------------------------
    public boolean mouseDown(Event event, int i1, int j1)
    {
        if(E0 && I.height - j1 < 32 && I.width - i1 < 18)
            E1 = !E1;
        else
        if(D6 != 7)
            if(System.currentTimeMillis() - P < 500L)
            {
                E3 = true;
                if(N[D6] != null)
                {
                    URL url = null;
                    try
                    {
                        url = new URL(N[D6]);
                    }
                    catch(MalformedURLException _ex)
                    {
                        System.out.println("Invalid URL");
                        showStatus("Invalid URL");
                    }
                    getAppletContext().showDocument(url, H);
                }
            } else
            {
                E4 = true;
                P = System.currentTimeMillis();
            }
        return true;
    }
    //----------------------------------------------------------
    public boolean mouseEnter(Event event, int i1, int j1)
    {
        E6 = true;
        return true;
    }
    //----------------------------------------------------------
    public boolean mouseExit(Event event, int i1, int j1)
    {
        E7 = true;
        E6 = false;
        return true;
    }
    //----------------------------------------------------------
    public boolean mouseMove(Event event, int i1, int j1)
    {
        E6 = true;
        L = i1;
        M = j1;
        if(E0)
        {
            if(I.width - i1 >= 18 || I.height - j1 >= 32)
            {
                w = (((double)(I.height / 2 - j1) * C1) / (double)I.width) * 2D;
                x = (((double)(I.width / 2 - i1) * C1) / (double)I.height) * 2D;
            }
        } else
        {
            w = (((double)(I.height / 2 - j1) * C1) / (double)I.width) * 2D;
            x = (((double)(I.width / 2 - i1) * C1) / (double)I.height) * 2D;
        }
        return true;
    }
    //----------------------------------------------------------
    void C(Image image)
    {
        MediaTracker mediatracker = new MediaTracker(this);
        mediatracker.addImage(image, 0);
        try
        {
            mediatracker.waitForID(0);
            return;
        }
        catch(InterruptedException _ex)
        {
            return;
        }
    }
}
インターネットスタートページ 鈴木維一郎 石橋三重子
         
               
                   


©2000 kg-group Inc.