📄 vectorfield.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: VectorField.java
package bfield;
import java.awt.*;
import Pix3D;
public final class VectorField
{
static int halfWidth;
static int saturation[];
double field[][][];
int row;
int col;
double scale;
int angle;
int midy;
public VectorField(int i, int j)
{
angle=45;
row = 0;
col = 0;
scale = 1.0D;
field = new double[i][j][3];
calSaturation();
row = i;
col = j;
midy=200;
}
private static void calSaturation()
{
int i = halfWidth * 2;
for(int j = 0; j < i; j++)
{
double d = (1.3999999999999999D * (double)(j - halfWidth)) / (double)halfWidth;
saturation[j] = (int)(255D * Math.exp(-d * d));
}
}
private final Color colorFromMag(double d)
{
d *= scale;
if(d > 1.0D)
{
return getColor(d);
} else
{
int i = (int)(255D * (1.0D - d));
int j = (int)(255D * (1.0D - d));
char c = '\377';
return new Color(i, j, c);
}
}
private final Color getColor(double d)
{
int i = 0;
int j = 0;
int k = 0;
int l = (int)(100D * d);
if(l > 100 - halfWidth && l < 100 + halfWidth)
k = saturation[(l - 100) + halfWidth];
if(l > 275 - halfWidth && l < 275 + halfWidth)
j = saturation[(l - 275) + halfWidth];
if(l > 450 - halfWidth && l < 450 + halfWidth)
i = saturation[(l - 450) + halfWidth];
return new Color(i, j, k);
}
public void paint(Graphics g, Rectangle rectangle)
{
// g.drawRect(0-100,0+100,400-100+(int)(400*0.5),(int)(400*0.5)+100);
int x[]={0-100,300-100+(int)(400*0.5),500-100+(int)(400*0.5),100};
int y[]={0+100,0+100,(int)(600*0.5),(int)(600*0.5)};
g.setColor(Color.yellow);
// g.fillPolygon(x,y,4);
double d = 2D;
double d1 = (double)rectangle.width / (double)(col - 1);
double d2 = (double)rectangle.height / (double)(row - 1);
double d3 = 0.69999999999999996D * d1;
for(int i = 0; i < row; i++)
{
int j = rectangle.height - (int)((double)i * d2);
int k = j;
for(int l = 0; l < col; l++)
{
int i1 = (int)((double)l * d1);
double d4 = field[i][l][0];
double d5 = field[i][l][1];
double d6 = field[i][l][2];
g.setColor(colorFromMag(d6));
double d7 = d3 * d4;
double d8 = -d3 * d5;
int j1 = (int)((double)i1 + d7 / 2D);
int k1 = (int)((double)j + d8 / 2D);
i1 = (int)((double)j1 - d7);
j = (int)((double)k1 - d8);
// int midy=rectangle.height/2;
// g.drawLine(i1, j, j1, k1);
// g.drawLine(i1+(int)(j*0.5)-100, mid+(int)(j*0.5), j1+(int)(k1*0.5)-100,mid+(int)(k1*0.5));
// g.drawLine(i1+(int)((j-midy)*cos_n), midy+(int)((j-midy)*sin_n),
// j1+(int)((k1-midy)*cos_n),midy+(int)((k1-midy)*sin_n));
int x1=Pix3D.changex(i1,j,0,angle);
int y1=Pix3D.changey(i1,j,0,angle);
int x2=Pix3D.changex(j1,k1,0,angle);
int y2=Pix3D.changey(j1,k1,0,angle);
g.drawLine(x1, y1, x2, y2);
double d9 = d * d4;
double d10 = -d * d5;
double d11 = (double)j1 - 3D * d9;
double d12 = (double)k1 - 3D * d10;
// g.drawLine((int)(d11 - d10), (int)(d12 + d9), j1, k1);
// g.drawLine((int)(d11 + d10), (int)(d12 - d9), j1, k1);
// g.drawLine((int)((d11-d10)+(Math.cos(n))*(d12+d9)), (int)((d12+d9)*Math.sin(n)), j1+(int)(Math.cos(n))*k1, (int)(j*Math.sin(n)));
// g.drawLine((int)((d11+d10)+(Math.cos(n))*(d12-d9)), (int)((d12-d9)*Math.sin(n)), j1+(int)(Math.cos(n))*k1, (int)(j*Math.sin(n)));
// g.drawLine((int)(d11 - d10)+(int)((d12+d9)*0.5)-100, (int)((d12 + d9)*0.5)+mid, j1+(int)(k1*0.5)-100,(int) (k1*0.5)+mid);
// g.drawLine((int)(d11 + d10)+(int)((d12-d9)*0.5)-100, (int)((d12 - d9)*0.5)+mid, j1+(int)(k1*0.5)-100,(int)(k1*0.5)+mid);
// g.drawLine((int)(d11 - d10)+(int)(((int)(d12 + d9)-midy)*cos_n), midy+(int)(((int)(d12 + d9)-midy)*sin_n),
// j1+(int)((k1-midy)*cos_n),midy+(int)((k1-midy)*sin_n));
// g.drawLine((int)(d11 + d10)+(int)(((int)(d12 - d9)-midy)*cos_n), midy+(int)(((int)(d12 - d9)-midy)*sin_n),
// j1+(int)((k1-midy)*cos_n),midy+(int)((k1-midy)*sin_n));
x1=Pix3D.changex((int)(d11-d10),(int)(d12+d9),0,angle);
y1=Pix3D.changey((int)(d11-d10),(int)(d12+d9),0,angle);
x2=Pix3D.changex(j1,k1,0,angle);
y2=Pix3D.changey(j1,k1,0,angle);
g.drawLine(x1, y1, x2, y2);
x1=Pix3D.changex((int)(d11+d10),(int)(d12-d9),0,angle);
y1=Pix3D.changey((int)(d11+d10),(int)(d12-d9),0,angle);
x2=Pix3D.changex(j1,k1,0,angle);
y2=Pix3D.changey(j1,k1,0,angle);
g.drawLine(x1,y1, x2, y2);
j = k;
}
}
}
public double[][][] resize(int i, int j)
{
if(i == row && j == col)
{
return field;
} else
{
field = new double[i][j][3];
row = i;
col = j;
return field;
}
}
public void setGridValue(int i, int j, double d, double d1, double d2)
{
field[i][j][0] = d;
field[i][j][1] = d1;
field[i][j][2] = d2;
}
static
{
halfWidth = 175;
saturation = new int[halfWidth * 2];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -