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

📄 vectorfield.java

📁 java 写的几个图型程序
💻 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 + -