亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? machine.java

?? Ideal Flow Machine For Data Plot
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
import java.awt.*;

public class machine extends Frame {

    Panel flowtype,numbers,controls,baseline,buttonbar;    //GUI declarations
    Drawing drawing;
    Legend legend;
    Choice options;
    TextField strength,angle;
    Label label2,label3,xD,yD;
    Button newflow,mapbut,databut;
    mapping map;

    dataPort out;

    machine() {
        super("The Ideal Flow Machine 4.0");

        setBackground(Color.white);

        GridBagLayout gridbag=new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();
        numbers=new Panel();
        numbers.setLayout(gridbag);
        c.weightx=1.0;

        options= new Choice();
        options.setFont(new Font("Dialog",Font.PLAIN,10));
        options.addItem("Free stream");
        options.addItem("Source");
        options.addItem("Vortex");
        options.addItem("Doublet");
        options.addItem("Source panel");
        options.addItem("Vortex panel");
        options.addItem("Circle");
        options.addItem("Circle with K.c.");
        options.addItem("Draw Streamline");

        gridbag.setConstraints(options,c);
        numbers.add(options);

        //c.anchor=GridBagConstraints.EAST;
        label2=new Label("Strength =");
        label2.setFont(new Font("Dialog",Font.PLAIN,10));
        gridbag.setConstraints(label2,c);
        numbers.add(label2);

        strength=new TextField(5);
        strength.setFont(new Font("Dialog",Font.PLAIN,10));
        gridbag.setConstraints(strength,c);
        numbers.add(strength);

        label3=new Label("Angle =");
        label3.setFont(new Font("Dialog",Font.PLAIN,10));
        gridbag.setConstraints(label3,c);
        numbers.add(label3);

        angle=new TextField(5);
        angle.setFont(new Font("Dialog",Font.PLAIN,10));
        gridbag.setConstraints(angle,c);
        numbers.add(angle);

        //c.anchor=GridBagConstraints.WEST;
        xD=new Label("x =  0.00");
        xD.setFont(new Font("Dialog",Font.PLAIN,10));
        gridbag.setConstraints(xD,c);
        numbers.add(xD);

        c.gridwidth = GridBagConstraints.REMAINDER;
        yD=new Label("y =  0.00");
        yD.setFont(new Font("Dialog",Font.PLAIN,10));
        gridbag.setConstraints(yD,c);
        numbers.add(yD);

        buttonbar=new Panel();
        buttonbar.setLayout(new GridLayout(1,3,10,5));

        newflow=new Button("New flow");
        newflow.setFont(new Font("Dialog",Font.PLAIN,10));
        buttonbar.add(newflow);
        databut=new Button("Show data");
        databut.setFont(new Font("Dialog",Font.PLAIN,10));
        buttonbar.add(databut);
        mapbut=new Button("Show mapping");
        mapbut.setFont(new Font("Dialog",Font.PLAIN,10));
        buttonbar.add(mapbut);


        legend=new Legend(this);
        baseline=new Panel();
        baseline.setLayout(new BorderLayout());
        baseline.add("East",buttonbar);
        baseline.add("Center",legend);

        drawing=new Drawing(this);

        setLayout(new BorderLayout());
        add("North",numbers);
        add("South",baseline);
        add("Center",drawing);

        strength.setText("1.0");
        angle.setText("0.0");
        setBackground(Color.white);

        drawing.repaint();
        legend.repaint();

        out=new dataPort();

    }

    public Insets insets() {
        return new Insets(30,20,30,20);
    }

    public void paint (Graphics g){
        legend.repaint();
    }

    public boolean handleEvent(Event event) {
    	if (event.id == Event.WINDOW_DESTROY) {
    	    hide();
    	    return true;
    	}
        else
        if (event.id == Event.ACTION_EVENT && event.target == newflow) {
                clickedNewflow();
                return true;
        }
        else
        if (event.id == Event.ACTION_EVENT && event.target == databut) {
                clickeddatabut();
                return true;
        }
        else
        if (event.id == Event.ACTION_EVENT && event.target == mapbut) {
                clickedMapbut();
                return true;
        }
    	return super.handleEvent(event);
    }

    public void clickedMapbut() {
        if(map==null) {
            map=new mapping(this);
            map.resize(640,450);
            map.show();
        }
        else if(!map.isShowing()) {
            map.show();
        }
    }

    public void clickedNewflow() {
        drawing.nf=0;drawing.nst=0;drawing.freeStreamU=0.0;drawing.freeStreamV=0.0;
        drawing.circleOn=false;drawing.kuttaOn=false;
        drawing.repaint();
        if(map!=null) {
            if(map.isShowing()) {
                map.drawing.repaint();
            }
        }

    }

    public void clickeddatabut() {
        if(drawing.nst!=0) {
            out.resize(512,385);
            out.show();
            drawing.record=true;
            drawing.drawStreamline(drawing.xstream[drawing.nst-1],drawing.ystream[drawing.nst-1]);
            drawing.record=false;
        }
    }


}

class Drawing extends Canvas {

    machine root;
    int w,h,xImin,xImax,yImin,yImax,x0,y0,xO=0,yO=0,rO=0;
    double x,y,x1,y1;
    Sing f[]=new Sing[1000]; //f is an array containing all the singularities
    int nf=0,nst=0;  //nf is a counter for the singularities, nst is a counter for the streamlines
    double xstream[]=new double[1000];
    double ystream[]=new double[1000];
    double freeStreamU=0.0,freeStreamV=0.0;
    double circlex,circley,circler,kuttat;
    boolean circleOn=false,kuttaOn=false,record=false;

    Drawing(machine target) {
        root=target;
        setBackground(Color.white);

    }

    public void paint (Graphics g){
        int xI,yI;

        w=size().width;h=size().height;
        xImin=(int)(w*0.10);xImax=xImin+((int)(w*0.85)/50)*50;
        yImin=(int)(h*.05);yImax=yImin+((int)(h*0.9)/50)*50;

        g.setColor(Color.gray);       //Draw grid
        for(int i=xImin;i<=xImax;i+=50) {
            for(int j=yImin;j<=yImax;j+=50) {
                g.drawLine(i-3,j,i+3,j);
                g.drawLine(i,j-3,i,j+3);
            }
        }

        x0=(xImax-xImin)/50/2;
        y0=(yImax-yImin+99)/50/2;

        g.drawLine(x0*50-6+xImin,yImin+y0*50,x0*50+6+xImin,yImin+y0*50);
        g.drawLine(x0*50+xImin,yImin+y0*50-6,x0*50+xImin,yImin+y0*50+6);

                                            //Draw critical points
        if(root.map!=null) {
            if(root.map.isShowing()) {
                for(int i=0;i<root.map.ncrit;i++) {
                    xI=(int)Math.round((root.map.critx[i]+x0)*50.0)+xImin;
                    yI=(int)Math.round((y0-root.map.crity[i])*50.0)+yImin;
                    if(xI>=xImin && xI<=xImax && yI>=yImin && yI<=yImax) {
                    g.setColor(Color.yellow);
                    g.fillOval(xI-2,yI-2,4,4);
                    g.setColor(Color.black);
                    g.drawOval(xI-2,yI-2,4,4);
                    }
                }
            }
        }

        drawFreeStream(g,freeStreamU,freeStreamV);
        if(circleOn) drawCircle(g);
        for(int i=0;i<nf;i++) drawFlow(g,f[i]);
        for(int i=0;i<nst;i++) drawStreamline(xstream[i],ystream[i]);

    }

    void drawCircle(Graphics g) {
        int i,j,i1,j1;
        g.setColor(Color.green);

        for(double th=0.;th<359.;th+=3.) {
            i=(int)Math.round((circlex+circler*Math.cos(th*Math.PI/180.)+x0)*50.)+xImin;
            j=(int)Math.round((y0-circley-circler*Math.sin(th*Math.PI/180.))*50.)+yImin;
            i1=(int)Math.round((circlex+circler*Math.cos((th+3.)*Math.PI/180.)+x0)*50.)+xImin;
            j1=(int)Math.round((y0-circley-circler*Math.sin((th+3.)*Math.PI/180.))*50.)+yImin;
            if((i+i1)/2>=xImin && (i+i1)/2<=xImax && (j+j1)/2>=yImin && (j+j1)/2<=yImax) g.drawLine(i,j,i1,j1);
        }
        if(kuttaOn) {
            i=(int)Math.round((circlex+circler*Math.cos(kuttat)*.95+x0)*50.)+xImin;
            j=(int)Math.round((y0-circley-circler*Math.sin(kuttat)*.95)*50.)+yImin;
            i1=(int)Math.round((circlex+circler*Math.cos(kuttat)*1.05+x0)*50.)+xImin;
            j1=(int)Math.round((y0-circley-circler*Math.sin(kuttat)*1.05)*50.)+yImin;
            if((i+i1)/2>=xImin && (i+i1)/2<=xImax && (j+j1)/2>=yImin && (j+j1)/2<=yImax) g.drawLine(i,j,i1,j1);
        }
    }

    void drawFreeStream(Graphics g,double u, double v) {
        double mag;

        mag=Math.sqrt(u*u+v*v);
        g.setColor(Color.black);
        if(mag>0.0) drawArrow(20,7,4,xImin/2,yImin+(yImax-yImin)/2,Math.atan2(v,u),g);
    }

    void drawArrow(int shaftLength, int headLength, int headWidth, int xPos, int yPos, double angle, Graphics ga) {
        int xa,ya,xb,yb,xc,yc,xd,yd;

        xa=xPos-(int)Math.round(shaftLength/2.0*Math.cos(angle));
        ya=yPos+(int)Math.round(shaftLength/2.0*Math.sin(angle));
        xb=xa+(int)Math.round(shaftLength*Math.cos(angle));
        yb=ya-(int)Math.round(shaftLength*Math.sin(angle));
        xc=xa+(int)Math.round((shaftLength-headLength)*Math.cos(angle)-headWidth/2.0*Math.sin(angle));
        yc=ya-(int)Math.round((shaftLength-headLength)*Math.sin(angle)+headWidth/2.0*Math.cos(angle));
        xd=xa+(int)Math.round((shaftLength-headLength)*Math.cos(angle)+headWidth/2.0*Math.sin(angle));
        yd=ya-(int)Math.round((shaftLength-headLength)*Math.sin(angle)-headWidth/2.0*Math.cos(angle));

        ga.drawLine(xa,ya,xb,yb);
        ga.drawLine(xb,yb,xc,yc);
        ga.drawLine(xb,yb,xd,yd);
    }

    void drawFlow(Graphics g, Sing f) {
        int size=6,size1=6,size2=4;   // scale of source, vortex and doublet symbols
        int xI=(int)Math.round((f.x+x0)*50.0)+xImin;
        int yI=(int)Math.round((y0-f.y)*50.0)+yImin;
        int xI1=(int)Math.round((f.x1+x0)*50.0)+xImin;
        int yI1=(int)Math.round((y0-f.y1)*50.0)+yImin;


        switch (f.id) {
          case 1:   //Source & Sink
          g.setColor(Color.white);
          g.fillOval(xI-size/2,yI-size/2,size,size);
          g.setColor(Color.blue);
          g.drawOval(xI-size/2,yI-size/2,size,size);
          g.drawLine(xI-size/2,yI,xI+size/2,yI);
          if(f.s>0.0) g.drawLine(xI,yI-size/2,xI,yI+size/2);
          break;
          case 2:   //Vortex
          g.setColor(Color.red);
          g.fillOval(xI-2,yI-2,4,4);
          if(f.s>0.0) {
            g.drawArc(xI-size1,yI-size1,size1*2,size1*2,-90,270);
            g.drawLine(xI-size1,yI,xI-size1+3,yI-2);
            g.drawLine(xI-size1,yI,xI-size1-2,yI-3);
          }
          else {
            g.drawArc(xI-size1,yI-size1,size1*2,size1*2,-90,-270);
            g.drawLine(xI+size1,yI,xI+size1+2,yI-3);
            g.drawLine(xI+size1,yI,xI+size1-3,yI-2);
          }
          break;
          case 3:   //Doublet
          g.setColor(Color.black);
          drawArrow(14,3,2,xI,yI,f.a,g);
          g.setColor(Color.white);
          g.fillOval(xI-(int)Math.round(size2*Math.sin(f.a)*.75)-size2/2,yI-(int)Math.round(size2*Math.cos(f.a)*.75)-size2/2,size2,size2);
          g.fillOval(xI+(int)Math.round(size2*Math.sin(f.a)*.75)-size2/2,yI+(int)Math.round(size2*Math.cos(f.a)*.75)-size2/2,size2,size2);
          g.setColor(Color.black);
          g.drawOval(xI-(int)Math.round(size2*Math.sin(f.a)*.75)-size2/2,yI-(int)Math.round(size2*Math.cos(f.a)*.75)-size2/2,size2,size2);
          g.drawOval(xI+(int)Math.round(size2*Math.sin(f.a)*.75)-size2/2,yI+(int)Math.round(size2*Math.cos(f.a)*.75)-size2/2,size2,size2);
          break;
          case 4:   //Source Panel
          g.setColor(Color.blue);
          g.drawLine(xI,yI,xI1,yI1);
          break;
          case 5:   //Vortex Panel
          g.setColor(Color.red);
          g.drawLine(xI,yI,xI1,yI1);
          break;
          case 6:   //Add dye
        }
    }

    public boolean handleEvent(Event event) {
        if (event.id == Event.MOUSE_UP && event.target == this) {
                mouseUpThis(event);
                return true;
        }
        else
        if (event.id == Event.MOUSE_MOVE && event.target == this) {
                mouseMoveThis(event);
                return true;
        }
        else
        if (event.id == Event.MOUSE_DRAG && event.target == this) {
                mouseDragThis(event);
                return true;
        }

        return super.handleEvent(event);
    }


    public void mouseMoveThis(Event ev) {
        int xIndex,yIndex;

        xIndex=ev.x;yIndex=ev.y;
        if(xIndex>=xImin && xIndex<=xImax && yIndex>=yImin && yIndex<=yImax) {
            x=(double)(xIndex-xImin)/50.0-x0;
            y=y0-(double)(yIndex-yImin)/50.0;
            root.xD.setText("x = "+format(x,3));
            root.yD.setText("y = "+format(y,3));
        }

    }

    public void mouseDragThis(Event ev) {
        int xIndex,yIndex;
        xIndex=ev.x;yIndex=ev.y;
        Graphics gs;

        int xI,yI,rI;

        gs=this.getGraphics();

        if(xIndex>=xImin && xIndex<=xImax && yIndex>=yImin && yIndex<=yImax) {
            x1=(double)(xIndex-xImin)/50.0-x0;
            y1=y0-(double)(yIndex-yImin)/50.0;
            root.xD.setText("x = "+format(x1,3));
            root.yD.setText("y = "+format(y1,3));
            xI=(int)Math.round((x+x0)*50.0)+xImin;
            yI=(int)Math.round((y0-y)*50.0)+yImin;


            switch(root.options.getSelectedIndex()) {     //Animate drawing of panels
                case 4:   //Source Panel
                if(xO!=0) {
                    gs.setColor(Color.white);
                    gs.drawLine(xI,yI,xO,yO);
                }
                gs.setColor(Color.blue);
                gs.drawLine(xI,yI,xIndex,yIndex);
                xO=xIndex;yO=yIndex;
                break;
                case 5:   //Vortex Panel
                if(xO!=0) {
                    gs.setColor(Color.white);
                    gs.drawLine(xI,yI,xO,yO);
                }
                gs.setColor(Color.red);
                gs.drawLine(xI,yI,xIndex,yIndex);
                xO=xIndex;yO=yIndex;
                break;
                case 6:    //Circle
                case 7:    //Circle with Kutta Condition
                if(rO!=0) {
                    gs.setColor(Color.white);
                    gs.drawOval(xI-rO,yI-rO,rO*2,rO*2);
                }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av不卡免费电影| 亚洲精品乱码久久久久| 日韩一区在线免费观看| 国产一区二区不卡在线| 日韩欧美国产1| 亚洲人精品一区| 成人av第一页| 国产精品剧情在线亚洲| 成人av电影在线网| 中文字幕在线观看不卡| 国产成人鲁色资源国产91色综 | 风间由美一区二区三区在线观看 | 精品不卡在线视频| 久久国产欧美日韩精品| 欧美大肚乱孕交hd孕妇| 黄一区二区三区| 国产亚洲美州欧州综合国| 国产又黄又大久久| 国产欧美日韩精品一区| 激情综合色播激情啊| 欧美激情艳妇裸体舞| 不卡视频在线观看| 亚洲欧美另类综合偷拍| 在线观看亚洲a| 日本成人中文字幕在线视频| 91精品国产黑色紧身裤美女| 另类小说图片综合网| 欧美精品久久天天躁| 久久www免费人成看片高清| 精品人在线二区三区| 懂色av一区二区在线播放| 亚洲国产精品自拍| 日本一区二区动态图| 欧美喷水一区二区| 成人福利视频在线| 日本午夜一本久久久综合| 欧美激情中文不卡| 日韩三级免费观看| 91久久人澡人人添人人爽欧美| 麻豆精品国产传媒mv男同| 亚洲欧美国产三级| 久久综合色婷婷| 欧美久久久久免费| 久久久久久久久蜜桃| 91久久免费观看| 亚洲高清免费在线| 国产午夜精品久久久久久免费视| 欧美日韩在线播| 99精品国产视频| 国产精品123区| 久久99精品久久久久久国产越南| 亚洲综合在线免费观看| 国产精品女主播在线观看| 日韩欧美国产精品| 在线观看91av| 欧美日韩在线观看一区二区| 9色porny自拍视频一区二区| 国产精品自拍一区| 看国产成人h片视频| 天天综合色天天综合色h| 亚洲黄色录像片| 中文字幕一区二区三区av| 亚洲精品一区二区三区影院| 欧美一级日韩一级| 欧美精品日日鲁夜夜添| 欧美日韩国产高清一区| 在线观看视频一区| 日本韩国精品在线| 色婷婷久久综合| 91视频免费播放| 91亚洲大成网污www| jlzzjlzz亚洲女人18| 成人福利视频网站| 成人av在线电影| 99re这里只有精品视频首页| 成人在线综合网站| 处破女av一区二区| 成年人国产精品| 91麻豆免费看| 欧美日韩综合色| 欧美日韩美少妇| 日韩一区二区三区视频在线观看| 欧美一级久久久| 欧美成人综合网站| 久久影院午夜片一区| 久久精品一区八戒影视| 国产精品美女久久久久aⅴ| 国产精品久久久久天堂| 中文字幕中文在线不卡住| 国产精品久久久久久久久果冻传媒 | 一区二区三区不卡视频在线观看| 亚洲免费av网站| 亚洲午夜久久久久中文字幕久| 亚洲成人激情av| 久久99久久久久| 国产成人亚洲综合色影视| 成人午夜看片网址| 在线一区二区视频| 欧美一区二区播放| 国产三级欧美三级| 一区二区三区四区在线播放 | 成人免费视频视频| 欧洲av在线精品| 日韩午夜三级在线| 国产欧美视频一区二区三区| 亚洲欧洲无码一区二区三区| 亚洲图片欧美色图| 久久成人久久鬼色| 99精品热视频| 6080午夜不卡| 中文乱码免费一区二区| 亚洲欧美日韩在线| 久久超碰97人人做人人爱| 成人免费黄色大片| 3d成人h动漫网站入口| 久久久不卡网国产精品一区| 亚洲精品高清在线| 久久国产精品第一页| 91免费观看视频在线| 日韩精品一区二区三区在线观看 | 欧美一区二区在线观看| 欧美激情一区二区三区蜜桃视频| 午夜精品一区二区三区三上悠亚 | 日本一区二区三区高清不卡| 亚洲成人在线网站| 国产精品123| 欧美精品视频www在线观看| 国产精品色一区二区三区| 三级不卡在线观看| 大尺度一区二区| 欧美一区二区高清| 亚洲在线一区二区三区| 成人不卡免费av| 日韩一本二本av| 亚洲一区在线免费观看| 成人中文字幕在线| 精品国产区一区| 午夜精品福利一区二区三区蜜桃| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美日韩成人综合| 亚洲欧美日韩国产手机在线 | 成人黄色大片在线观看| 精品国产乱码久久久久久闺蜜| 亚洲精品国产精华液| 成人免费观看男女羞羞视频| **性色生活片久久毛片| 国产剧情在线观看一区二区 | 日韩一二三区视频| 亚洲高清视频中文字幕| 在线免费亚洲电影| 1区2区3区国产精品| 国产精品性做久久久久久| 欧美一区二区大片| 午夜天堂影视香蕉久久| 在线观看日韩一区| 一区二区三区欧美| 在线视频一区二区免费| 17c精品麻豆一区二区免费| 成人影视亚洲图片在线| 久久免费视频一区| 国产一区二区看久久| www一区二区| 九色综合狠狠综合久久| 日韩精品在线网站| 美国欧美日韩国产在线播放| 91精品国产一区二区三区| 日韩精品五月天| 欧美一区二区三区人| 日韩黄色片在线观看| 日韩一区二区三区三四区视频在线观看 | 国产制服丝袜一区| www国产成人| 国产精品一线二线三线精华| 国产拍欧美日韩视频二区| 国产呦精品一区二区三区网站| 精品久久99ma| 国产成人精品免费视频网站| 欧美激情资源网| 色综合激情久久| 亚洲高清三级视频| 日韩欧美一级在线播放| 国产在线精品一区二区| 欧美激情一区二区三区| 在线精品国精品国产尤物884a| 亚洲福利一二三区| 欧美v亚洲v综合ⅴ国产v| 国产一区二区三区黄视频 | 欧美一区永久视频免费观看| 久久精品国产一区二区三区免费看| 精品国产成人系列| 成熟亚洲日本毛茸茸凸凹| 亚洲精品中文在线影院| 6080午夜不卡| 国产精品资源在线| 亚洲精品伦理在线| 欧美一区二区国产| 成人激情视频网站| 五月天视频一区| 久久久久成人黄色影片| 91久久线看在观草草青青|