📄 react.java
字号:
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 + -