⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 react.java

📁 这是一个,用java写的物理仿真实验程序4
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                x[i][k] = x1[i][k];
                v[i][k] = v1[i][k];
            }

        }

    }

    public void initrk()
    {
        dim = 1;
        n = 1;
        dt = 0.050000000000000003D;
        x[0][0] = -120D;
        x[0][1] = 0.0D;
        x[1][0] = 120D;
        x[1][1] = 0.0D;
        for(int i = 0; i <= n; i++)
        {
            x0[i][0] = 0.0D;
            x0[i][1] = 0.0D;
            oldx[i][0] = 0;
            oldx[i][1] = 0;
            v[i][0] = 0.0D;
            v[i][1] = 0.0D;
        }

        mass[0] = 16D;
        mass[1] = 8D;
        swa = true;
        for(int i = 0; i <= n; i++)
        {
            for(int j = 0; j < i; j++)
            {
                aa[i][j] = -1D;
                ap[i][j] = 10;
                al[i][j] = 160D;
                aa[j][i] = aa[i][j];
                ap[j][i] = ap[i][j];
                al[j][i] = al[i][j];
            }

            aa[i][i] = 0.0D;
            ap[i][i] = 2;
            al[i][i] = 0.0D;
        }

        swb = false;
        swc = false;
        swd = true;
    }

    public void calc()
    {
        rk();
    }

    public boolean mouseDrag(Event e, int xd, int yd)
    {
        repaint();
        contpx = xd;
        contpy = yd;
        if(contnum >= 0)
        {
            x0[contnum][0] = contpx - pt0.x;
            x0[contnum][1] = contpy - pt0.y;
            aa[contnum][contnum] = -1D;
        }
        return true;
    }

    public boolean mouseDown(Event e, int xd, int yd)
    {
        if(xd > 580 && yd > 380)
        {
            v[contnum][0] = 0.0D;
            v[contnum][1] = 0.0D;
        }
        contpx = xd;
        contpy = yd;
        if(contnum >= 0)
            aa[contnum][contnum] = 0.0D;
        contnum = -1;
        for(int i = 0; i <= n; i++)
            if(Math.abs((double)(xd - pt0.x) - x[i][0]) < 25D && Math.abs((double)(yd - pt0.y) - x[i][1]) < 25D)
                contnum = i;

        if(xd < 12 && yd < 12 && credflag == 0)
            credflag = 1;
        else
            credflag = 0;
        repaint();
        return true;
    }

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

    public void run()
    {
        try
        {
            mt.waitForID(0);
        }
        catch(InterruptedException _ex)
        {
            return;
        }
        clip1.play();
        while(th != null) 
            if(drawmode == 1 && mt.checkID(0))
                try
                {
                    colflag2 = 0;
                    clipflag = 0;
                    calc();
                    calc();
                    calc();
                    calc();
                    if(contnum >= 0)
                    {
                        x0[contnum][0] = contpx - pt0.x;
                        x0[contnum][1] = contpy - pt0.y;
                        aa[contnum][contnum] = -1D;
                    }
                    if(clipflag == 1)
                        clip1.play();
                    repaint();
                    Thread.sleep(50L);
                }
                catch(InterruptedException _ex) { }
            else
                repaint();
    }

    public void stop()
    {
        if(th != null)
        {
            th.stop();
            th = null;
        }
    }

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

    public void paint(Graphics g)
    {
        if(!mt.checkID(0))
        {
            offGraphics.drawString("Loading...", 280, 200);
        } else
        {
            offGraphics.setColor(getBackground());
            offGraphics.fillRect(0, 0, 600, 400);
            for(int i = 0; i <= n; i++)
            {
                oldx[i][0] = pt0.x + (int)(x[i][0] - 25D);
                oldx[i][1] = pt0.y + (int)(x[i][1] - 25D);
            }

            offGraphics.setColor(new Color(200, 200, 254));
            offGraphics.fillOval(580, 380, 18, 18);
            if(contnum >= 0)
                offGraphics.drawImage(hand, contpx - 14, contpy - 63, this);
            offGraphics.drawImage(img1, oldx[0][0], oldx[0][1], this);
            offGraphics.drawImage(img2, oldx[1][0], oldx[1][1], this);
            double ds = ((r[0][1] + al[0][1]) - 50D) / 16D;
            int px = (int)(nrm[0][1][0] * 25D + x[1][0] + (double)pt0.x);
            int py = (int)(nrm[0][1][1] * 25D + x[1][1] + (double)pt0.y);
            int p1x = px;
            int p1y = py;
            for(int jj = 0; jj < 16; jj++)
            {
                int p2x = (int)(-nrm[0][1][1] * 10D + nrm[0][1][0] * ds * ((double)jj + 0.25D) + nrm[0][1][0] * 25D + x[1][0] + (double)pt0.x);
                int p2y = (int)(nrm[0][1][0] * 10D + nrm[0][1][1] * ds * ((double)jj + 0.25D) + nrm[0][1][1] * 25D + x[1][1] + (double)pt0.y);
                int p3x = (int)(nrm[0][1][1] * 10D + nrm[0][1][0] * ds * ((double)jj + 0.75D) + nrm[0][1][0] * 25D + x[1][0] + (double)pt0.x);
                int p3y = (int)(-nrm[0][1][0] * 10D + nrm[0][1][1] * ds * ((double)jj + 0.75D) + nrm[0][1][1] * 25D + x[1][1] + (double)pt0.y);
                offGraphics.setColor(new Color(50, 50, 50));
                offGraphics.drawLine(p1x, p1y, p2x, p2y);
                offGraphics.setColor(new Color(120, 120, 120));
                offGraphics.drawLine(p2x, p2y, p3x, p3y);
                p1x = p3x;
                p1y = p3y;
            }

            px = (int)(nrm[1][0][0] * 25D + x[0][0] + (double)pt0.x);
            py = (int)(nrm[1][0][1] * 25D + x[0][1] + (double)pt0.y);
            offGraphics.setColor(new Color(50, 50, 50));
            offGraphics.drawLine(px, py, p1x, p1y);
            offGraphics.setColor(new Color(250, 0, 0));
            if(contnum >= 0)
                offGraphics.drawOval((oldx[contnum][0] - 3) + 25, (oldx[contnum][1] - 3) + 25, 6, 6);
            int xx;
            int yy;
            if(contnum >= 0 && colflag2 != 1 && contnum < 2)
            {
                xx = contpx - oldx[contnum][0] - 25;
                yy = contpy - oldx[contnum][1] - 25;
                if(contnum == 0)
                    offGraphics.setColor(new Color(180, 120, 120));
                if(contnum == 1)
                    offGraphics.setColor(new Color(120, 120, 180));
                offGraphics.drawLine(oldx[contnum][0] + 25, oldx[contnum][1] + 25, oldx[contnum][0] + 25 + xx, oldx[contnum][1] + 25 + yy);
                offGraphics.drawLine(oldx[contnum][0] + 25 + (int)((double)xx + (double)(-xx * 2 - yy) * 0.10000000000000001D), oldx[contnum][1] + 25 + (int)((double)yy + (double)(xx - yy * 2) * 0.10000000000000001D), oldx[contnum][0] + 25 + xx, oldx[contnum][1] + 25 + yy);
                offGraphics.drawLine(oldx[contnum][0] + 25 + (int)((double)xx + (double)(-xx * 2 + yy) * 0.10000000000000001D), oldx[contnum][1] + 25 + (int)((double)yy + (double)(-xx - yy * 2) * 0.10000000000000001D), oldx[contnum][0] + 25 + xx, oldx[contnum][1] + 25 + yy);
                if(contnum == 0)
                {
                    xx = (int)((double)(contpx - oldx[contnum][0] - 25) - r[1][0] * nrm[1][0][0] * aa[0][1]);
                    yy = (int)((double)(contpy - oldx[contnum][1] - 25) - r[1][0] * nrm[1][0][1] * aa[0][1]);
                }
                if(contnum == 1)
                {
                    xx = (int)((double)(contpx - oldx[contnum][0] - 25) - r[1][0] * nrm[0][1][0] * aa[0][1]);
                    yy = (int)((double)(contpy - oldx[contnum][1] - 25) - r[1][0] * nrm[0][1][1] * aa[0][1]);
                }
                offGraphics.setColor(new Color(120, 180, 120));
                offGraphics.drawLine(oldx[contnum][0] + 25, oldx[contnum][1] + 25, oldx[contnum][0] + 25 + xx, oldx[contnum][1] + 25 + yy);
                offGraphics.drawLine(oldx[contnum][0] + 25 + (int)((double)xx + (double)(-xx * 2 - yy) * 0.12D), oldx[contnum][1] + 25 + (int)((double)yy + (double)(xx - yy * 2) * 0.12D), oldx[contnum][0] + 25 + xx, oldx[contnum][1] + 25 + yy);
                offGraphics.drawLine(oldx[contnum][0] + 25 + (int)((double)xx + (double)(-xx * 2 + yy) * 0.12D), oldx[contnum][1] + 25 + (int)((double)yy + (double)(-xx - yy * 2) * 0.12D), oldx[contnum][0] + 25 + xx, oldx[contnum][1] + 25 + yy);
                offGraphics.setColor(new Color(250, 100, 100));
                xx = (int)(((double)xx / mass[contnum]) * 5D);
                yy = (int)(((double)yy / mass[contnum]) * 5D);
                offGraphics.drawLine(oldx[contnum][0] + 25, oldx[contnum][1] + 25, oldx[contnum][0] + 25 + xx, oldx[contnum][1] + 25 + yy);
                offGraphics.drawLine(oldx[contnum][0] + 25 + (int)((double)xx + (double)(-xx * 2 - yy) * 0.12D), oldx[contnum][1] + 25 + (int)((double)yy + (double)(xx - yy * 2) * 0.12D), oldx[contnum][0] + 25 + xx, oldx[contnum][1] + 25 + yy);
                offGraphics.drawLine(oldx[contnum][0] + 25 + (int)((double)xx + (double)(-xx * 2 + yy) * 0.12D), oldx[contnum][1] + 25 + (int)((double)yy + (double)(-xx - yy * 2) * 0.12D), oldx[contnum][0] + 25 + xx, oldx[contnum][1] + 25 + yy);
            }
            xx = -(int)(r[1][0] * nrm[1][0][0] * aa[1][0]);
            yy = -(int)(r[1][0] * nrm[1][0][1] * aa[1][0]);
            offGraphics.setColor(new Color(255, 0, 0));
            offGraphics.drawLine(oldx[0][0] + 25, oldx[0][1] + 25, oldx[0][0] + 25 + xx, oldx[0][1] + 25 + yy);
            offGraphics.drawLine(oldx[0][0] + 25 + (int)((double)xx + (double)(-xx * 2 - yy) * 0.10000000000000001D), oldx[0][1] + 25 + (int)((double)yy + (double)(xx - yy * 2) * 0.10000000000000001D), oldx[0][0] + 25 + xx, oldx[0][1] + 25 + yy);
            offGraphics.drawLine(oldx[0][0] + 25 + (int)((double)xx + (double)(-xx * 2 + yy) * 0.10000000000000001D), oldx[0][1] + 25 + (int)((double)yy + (double)(-xx - yy * 2) * 0.10000000000000001D), oldx[0][0] + 25 + xx, oldx[0][1] + 25 + yy);
            xx = -(int)(r[0][1] * nrm[0][1][0] * aa[0][1]);
            yy = -(int)(r[0][1] * nrm[0][1][1] * aa[0][1]);
            offGraphics.setColor(new Color(0, 0, 255));
            offGraphics.drawLine(oldx[1][0] + 25, oldx[1][1] + 25, oldx[1][0] + 25 + xx, oldx[1][1] + 25 + yy);
            offGraphics.drawLine(oldx[1][0] + 25 + (int)((double)xx + (double)(-xx * 2 - yy) * 0.10000000000000001D), oldx[1][1] + 25 + (int)((double)yy + (double)(xx - yy * 2) * 0.10000000000000001D), oldx[1][0] + 25 + xx, oldx[1][1] + 25 + yy);
            offGraphics.drawLine(oldx[1][0] + 25 + (int)((double)xx + (double)(-xx * 2 + yy) * 0.10000000000000001D), oldx[1][1] + 25 + (int)((double)yy + (double)(-xx - yy * 2) * 0.10000000000000001D), oldx[1][0] + 25 + xx, oldx[1][1] + 25 + yy);
        }
        if(credflag == 1)
        {
            offGraphics.setColor(new Color(254, 254, 254));
            offGraphics.fillRoundRect(9, 9, 200, 110, 8, 8);
            offGraphics.setColor(new Color(70, 70, 70));
            offGraphics.fillRoundRect(12, 14, 200, 110, 8, 8);
            offGraphics.setColor(new Color(234, 234, 234));
            offGraphics.fillRoundRect(10, 10, 200, 110, 8, 8);
            offGraphics.setColor(new Color(100, 100, 100));
            offGraphics.drawString("作用?反作用", 40, 40);
            offGraphics.drawString("Action and Reaction", 40, 60);
            offGraphics.drawString(" Ver.1.1", 40, 80);
            offGraphics.drawString("2004 Kato Noriyoshi", 40, 100);
        }
        g.drawImage(offScreen, 0, 0, this);
    }

    public react()
    {
        mt = new MediaTracker(this);
        col = new Color(250, 250, 250);
        x = new double[10][3];
        v = new double[10][3];
        dx = new double[10][10][3];
        nrm = new double[10][10][3];
        pow = new double[10][10];
        ik = new double[4][10][3];
        im = new double[4][10][3];
        r = new double[10][10];
        aa = new double[10][10];
        al = new double[10][10];
        ap = new int[10][10];
        colflag = new int[10][10];
        b = new double[10];
        c = new double[10];
        d = new double[10][3];
        x0 = new double[10][3];
        mass = new double[10];
        x1 = new double[10][3];
        v1 = new double[10][3];
        v2 = new double[10][3];
        vn = new double[10][3];
        w = new double[10][3];
        w1 = new double[10][3];
        va = new double[10];
        f = new double[10][3];
        swa = true;
        swb = true;
        swc = true;
        swd = true;
        FONTSIZE1 = 14;
        oldx = new int[10][2];
        oldnv = new int[10];
        vtemp = 0.20000000000000001D;
        pt0 = new Point(300, 200);
        drawmode = 1;
        drawinitflag = 1;
        contnum = -1;
        num = -1;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -