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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mainwindow.java

?? 用java語言實現了B樣條曲線的做法。 可以自由輸入控制點
?? JAVA
字號:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
import java.text.*;

public class mainWindow   
{
	public static void main(String[] args) 
	{
		JFrame frame2=new BsplineCurveFrame();
		MyWindowListener l = new MyWindowListener();
		frame2.addWindowListener(l);
		//Text t=new Text();
		//t.init();
		//frame2.getContentPane().add(t,BorderLayout.SOUTH);
		frame2.setVisible(true);
	}
}
class BsplineCurveFrame extends JFrame
{  
   JLabel jl1,jl2,jl3,jl4,jl5;//,jl6
   static JTextField jf1,jf2,jf3,jf4,jf5,jf6,jf7,jf8,jf9,jf10;//,jf11,jf12
   
   public BsplineCurveFrame()
   {  
      setTitle("B樣條曲線繪圖");
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

      final ShapePanel1 panel = new ShapePanel1();
      add(panel, BorderLayout.CENTER);
      final JPanel panel2= new JPanel();
	  jl1=new JLabel("P1",JLabel.RIGHT);
	  jl2=new JLabel("P2",JLabel.RIGHT);
	  jl3=new JLabel("P3",JLabel.RIGHT);
	  jl4=new JLabel("P4",JLabel.RIGHT);
	  jl5=new JLabel("P5",JLabel.RIGHT);
	  jf1=new JTextField(10);
	  jf2=new JTextField(10);
	  jf3=new JTextField(10);
	  jf4=new JTextField(10);
	  jf5=new JTextField(10);
	  jf6=new JTextField(10);
	  jf7=new JTextField(10);
	  jf8=new JTextField(10);
	  jf9=new JTextField(10);
	  jf10=new JTextField(10);
	  //jf11=new JTextField(10);
	 // jf12=new JTextField(10);
	  Box box1=Box.createHorizontalBox();
      box1.add(jl1);
	  box1.add(jf1);
	  box1.add(Box.createHorizontalStrut(15));
	  box1.add(jf2);
	  Box box2=Box.createHorizontalBox();
	  box2.add(jl2);
	  box2.add(jf3);
	  box2.add(Box.createHorizontalStrut(15));
	  box2.add(jf4);
	  Box box3=Box.createHorizontalBox();
      box3.add(jl3);
	  box3.add(jf5);
	  box3.add(Box.createHorizontalStrut(15));
	  box3.add(jf6);
	  Box box4=Box.createHorizontalBox();
	  box4.add(jl4);
	  box4.add(jf7);
	  box4.add(Box.createHorizontalStrut(15));
	  box4.add(jf8);
	  Box box5=Box.createHorizontalBox();
	  box5.add(jl5);
	  box5.add(jf9);
	  box5.add(Box.createHorizontalStrut(15));
	  box5.add(jf10);
	  //Box box6=Box.createHorizontalBox();
	  //box6.add(jl6);
	  //box6.add(jf11);
	  //box6.add(Box.createHorizontalStrut(15));
	 // box6.add(jf12);
	  Box boxH=Box.createHorizontalBox();
	  boxH.add(box1);
	  boxH.add(Box.createHorizontalStrut(20));
	  boxH.add(box2);
	  Box boxH1=Box.createHorizontalBox();
	  boxH1.add(box3);
	  boxH1.add(Box.createHorizontalStrut(20));
	  boxH1.add(box4);
	  Box boxH2=Box.createHorizontalBox();
	  boxH2.add(box5);
	  boxH2.add(Box.createHorizontalStrut(250));
	  //boxH2.add(box6);
	  Box boxv=Box.createVerticalBox();
	  boxv.add(boxH);
	  boxv.add(boxH1);
	  boxv.add(boxH2);
	  panel2.add(boxv);
      final JButton button1 = new JButton("繪  圖");
	  final JPanel panel3= new JPanel();
	  panel3.add(button1,BorderLayout.CENTER);
      button1.addActionListener(new
         ActionListener()
         {

            public void actionPerformed(ActionEvent event)
            { 
			s[0][0]=Double.parseDouble(jf1.getText().trim());
			s[0][1]=Double.parseDouble(jf3.getText().trim());
			s[0][2]=Double.parseDouble(jf5.getText().trim());
			s[0][3]=Double.parseDouble(jf7.getText().trim());
			s[0][4]=Double.parseDouble(jf9.getText().trim());
			s[1][0]=Double.parseDouble(jf2.getText().trim());
			s[1][1]=Double.parseDouble(jf4.getText().trim());
			s[1][2]=Double.parseDouble(jf6.getText().trim());
			s[1][3]=Double.parseDouble(jf8.getText().trim());
			s[1][4]=Double.parseDouble(jf10.getText().trim());
            ShapeMaker1 shapeMaker = new PolygonMaker1();
            panel.setShapeMaker(shapeMaker);
			
			}
         });
	 // button2.addActionListener(new ActionListener)
	 add("North",new JPanelBox(panel2,"B樣條曲線"));
     add(panel3, BorderLayout.SOUTH);

   }

   private static final int DEFAULT_WIDTH = 700;
   private static final int DEFAULT_HEIGHT = 700;
   static final double[][] s=new double[2][5];
}

class ShapePanel1 extends JPanel
{  
   public ShapePanel1()
   {  
      addMouseListener(new
         MouseAdapter()
         {
            public void mousePressed(MouseEvent event)
            {  
               Point p = event.getPoint();
               for (int i = 0; i < points.length; i++)
               {  
                  double x = points[i].getX() - SIZE / 2;
                  double y = points[i].getY() - SIZE / 2;
                  Rectangle2D r = new Rectangle2D.Double(x, y, SIZE, SIZE);
                  if (r.contains(p))
                  {  
                     current = i;
                     return;
                  }
               }
            }

            public void mouseReleased(MouseEvent event)
            {  
               current = -1;
            }
         });
      addMouseMotionListener(new 
         MouseMotionAdapter()
         {
            public void mouseDragged(MouseEvent event)
            {  
               if (current == -1) return;
               points[current] = event.getPoint();
               repaint();
			    double[][] tf= new double[2][5];
			   DecimalFormat df = new DecimalFormat("###.00");
				for(int j=0;j<5;j++)
				{
					tf[0][j]=50*ShapePanel1.points[j].getX()/getWidth()-35;
					tf[1][j]=50*(getHeight()-ShapePanel1.points[j].getY())/getHeight()-35;
				}
			   BsplineCurveFrame.jf1.setText(df.format(tf[0][0]));
			   BsplineCurveFrame.jf2.setText(df.format(tf[1][0]));
			   BsplineCurveFrame.jf3.setText(df.format(tf[0][1]));
			   BsplineCurveFrame.jf4.setText(df.format(tf[1][1]));
			   BsplineCurveFrame.jf5.setText(df.format(tf[0][2]));
			   BsplineCurveFrame.jf6.setText(df.format(tf[1][2]));
			   BsplineCurveFrame.jf7.setText(df.format(tf[0][3]));
			   BsplineCurveFrame.jf8.setText(df.format(tf[1][3]));
			   BsplineCurveFrame.jf9.setText(df.format(tf[0][4]));
			   BsplineCurveFrame.jf10.setText(df.format(tf[1][4]));
            }
         });
      current = -1;
   }
     
   public void setShapeMaker(ShapeMaker1 aShapeMaker)
   {  
      shapeMaker = aShapeMaker;
      int n = shapeMaker.getPointCount();
      points = new Point2D[n]; 	
		double[][] a=BsplineCurveFrame.s;
		for(int i=0;i<n;i++)
		{	
            double x = getWidth()/50*(a[0][i]+35);
            double y = getHeight()-getHeight()/50*(a[1][i]+35);
            points[i] = new Point2D.Double(x, y);
		 }
     
      repaint();
   } 
   public void paintComponent(Graphics g)
   {  
      super.paintComponent(g);
	  
      if (points == null) return;
      Graphics2D g2 = (Graphics2D) g;
	  g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
	  BasicStroke bs= new BasicStroke(1.0f,BasicStroke.CAP_SQUARE,
		  BasicStroke.JOIN_MITER);
	  g2.setStroke(bs);
      for (int j = 0; j < points.length; j++)
      {  double x = points[j].getX() - SIZE / 2;
         double y = points[j].getY() - SIZE / 2;
		 g2.setColor(Color.red);
         g2.fill(new Rectangle2D.Double(x, y, SIZE, SIZE));
      }

        g2.draw(shapeMaker.makeShape(points));
	    
		double[] x1=new double[1001];
		double[] y1=new double[1001];
		double[] w1=new double[2];
		for(int i=0;i<1000;i++)
		{	
			double[][] d=new double[2][5];
			for(int j=0;j<points.length;j++)
			{
				d[0][j]=points[j].getX();
				d[1][j]=points[j].getY();
			}
			double u=0.001*i+0.001;
			double[] u1=H.Hartleyknot(d,5,3);
			double[] t=H.HartleyT(u1,5,3);
			int[] r={4,1,4};
			w1=BNote(t,r,u,d);
			x1[i]=w1[0];
			y1[i]=w1[1];
		}
		for(int i=0;i<=998;i++)
		{
			  line2=new Line2D.Double(x1[i],y1[i],x1[i+1],y1[i+1]);
			  g2.setColor(Color.blue);
			  g2.draw(line2);
			  
		}

	}
	
	public   double[]  BNote(double[] t,int[] r,double u,double[][] d)
	{	 
		double x[]=new double[2];
		double[][] c=d;
		int i=0,k=3;
		for(int j=0;j<8;j++)
		{
			if(u<=knotValue(j+1,t,r)&&u>knotValue(j,t,r))
			{
				i=j;
				break;
			}
		}
		
	
		
		
		for(int q=1;q<=k;q++)
		{
			for(int j=i-k;j<=i-q;j++)
			{
				double alfa=knotValue(j+k+1,t,r)-knotValue(j+q,t,r);
				if(alfa==0)alfa=0;
				else
				alfa=(u-knotValue(j+q,t,r))/alfa;
				c[0][j]=(1-alfa)*c[0][j]+alfa*c[0][j+1];
				c[1][j]=(1-alfa)*c[1][j]+alfa*c[1][j+1];
			}
		}
		for(int m=0;m<2;m++)
		{
			x[m]=c[m][i-k];
		} 
		 
		return x; 
	}
	public double knotValue(int k,double t[],int r[])
	{
		int j=1;
		double temp=0;
		for(int i=0;i<r.length;i++)
		{
			temp=temp+r[i];
			if(temp>k)
			{
				j=i;
				break;
			}
		}
		return t[j];
		
	}

   public  static Point2D[] points;
   private static int SIZE = 10;
   private int current;
   private ShapeMaker1 shapeMaker;
   private Line2D line2;
   private HartleyJ H=new HartleyJ();
}
abstract class ShapeMaker1
{  

   public ShapeMaker1(int aPointCount)
   {  
      pointCount = aPointCount;
   }

   public int getPointCount()
   {  
      return pointCount;
   }
   public abstract Shape makeShape(Point2D[] p);

   public String toString()
   {  
      return getClass().getName();
   }

   private int pointCount;
}
class PolygonMaker1 extends ShapeMaker1
{  
   public PolygonMaker1() { super(5); }

   public Shape makeShape(Point2D[] p)
   {  
      GeneralPath s = new GeneralPath();
      s.moveTo((float) p[0].getX(), (float) p[0].getY());
      for (int i = 1; i < p.length; i++)
         s.lineTo((float) p[i].getX(), (float) p[i].getY());
      return s;
   }
}

class MyWindowListener extends WindowAdapter
{
	public void windowClosing(WindowEvent e)
	{
	System.exit(0);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区在线播放| 日本精品视频一区二区三区| 亚洲一二三区不卡| 亚洲人成亚洲人成在线观看图片 | 亚洲美女电影在线| 综合网在线视频| 亚洲激情图片一区| 亚洲综合免费观看高清完整版| 伊人婷婷欧美激情| 亚洲午夜一区二区三区| 日韩在线卡一卡二| 久久99精品一区二区三区三区| 国产自产2019最新不卡| 国产精品自拍网站| 成人精品免费网站| 色欧美乱欧美15图片| 欧美日韩国产综合草草| 欧美老女人在线| 精品国产乱码久久久久久蜜臀| 久久久久久久久久久电影| 欧美国产日韩亚洲一区| 亚洲精品国产品国语在线app| 亚洲综合区在线| 麻豆91精品91久久久的内涵| 韩国女主播成人在线| 99免费精品视频| 欧美日韩视频在线第一区| 精品乱人伦一区二区三区| 亚洲国产精品精华液ab| 亚洲一级在线观看| 国产在线麻豆精品观看| 色综合网站在线| 在线综合+亚洲+欧美中文字幕| 久久夜色精品国产噜噜av| 中文字幕制服丝袜成人av| 亚洲国产精品久久人人爱蜜臀| 国产在线麻豆精品观看| 欧美一a一片一级一片| 久久综合精品国产一区二区三区| 国产精品毛片高清在线完整版| 亚洲高清中文字幕| 懂色av噜噜一区二区三区av| 欧美日韩一区二区三区在线| 国产三区在线成人av| 日韩制服丝袜av| 99在线视频精品| 欧美精品一区二区三区高清aⅴ| 亚洲视频资源在线| 国产乱国产乱300精品| 欧美午夜宅男影院| ●精品国产综合乱码久久久久| 美脚の诱脚舐め脚责91| 欧美一a一片一级一片| 国产亚洲成aⅴ人片在线观看| 日韩二区在线观看| 在线亚洲人成电影网站色www| 久久影音资源网| 久色婷婷小香蕉久久| 欧美三级电影在线看| 亚洲素人一区二区| 岛国精品一区二区| 国产午夜精品福利| 久久精品99久久久| 日韩视频一区二区三区在线播放| 亚洲国产中文字幕| 一本大道久久a久久精二百| 国产精品视频你懂的| 国产乱一区二区| 精品国产免费视频| 另类小说综合欧美亚洲| 欧美精品高清视频| 性感美女久久精品| 欧美日韩一级黄| 亚洲成人黄色影院| 欧美片在线播放| 日韩精品1区2区3区| 欧美老人xxxx18| 日韩av网站免费在线| 4438x成人网最大色成网站| 日韩精品午夜视频| 欧美一级二级三级蜜桃| 久久er精品视频| 国产性天天综合网| 国产成人av福利| 中文字幕在线观看一区| 99精品在线免费| 亚洲一区二区在线视频| 欧美怡红院视频| 免费三级欧美电影| 久久久九九九九| 99麻豆久久久国产精品免费 | 欧美精品一区二区三区高清aⅴ | 国产99精品视频| 国产精品水嫩水嫩| 欧美中文字幕一区| 日韩av中文字幕一区二区 | 99re这里只有精品首页| 亚洲九九爱视频| 欧美精三区欧美精三区| 久久99精品国产.久久久久久 | 亚洲黄色性网站| 6080yy午夜一二三区久久| 精品一区二区三区免费视频| 国产精品午夜春色av| 日韩丝袜情趣美女图片| 国产精品中文字幕欧美| 亚洲日本成人在线观看| 日韩亚洲欧美一区| 成a人片亚洲日本久久| 亚洲一区二区三区美女| 久久这里只精品最新地址| 色婷婷综合久久久中文字幕| 日韩高清一级片| 亚洲色图.com| 精品久久久久香蕉网| 色诱亚洲精品久久久久久| 久久精品国产一区二区| 亚洲精品写真福利| 久久网站最新地址| 欧美日韩大陆一区二区| 国产激情精品久久久第一区二区| 亚洲午夜精品在线| 亚洲国产精品高清| 日韩美女视频一区二区在线观看| 99久久99久久久精品齐齐| 精品亚洲porn| 亚洲第一会所有码转帖| 亚洲三级电影网站| 久久久久88色偷偷免费| 日韩欧美不卡一区| 欧美色图在线观看| 91欧美一区二区| 国产成人激情av| 国产资源精品在线观看| 日一区二区三区| 亚洲综合久久久| 亚洲日本在线a| 国产精品毛片大码女人| 久久久不卡影院| 久久久综合精品| 2022国产精品视频| 精品乱人伦小说| 日韩欧美国产综合在线一区二区三区| 国产网站一区二区| 久久综合色8888| 精品国产免费人成电影在线观看四季| 欧美人动与zoxxxx乱| 在线观看亚洲a| 一本一本久久a久久精品综合麻豆| 国产成人精品影院| 国产成人丝袜美腿| 国产伦精品一区二区三区免费迷| 久久精品999| 国产一区二区视频在线播放| 狠狠色丁香久久婷婷综| 国产真实乱偷精品视频免| 久久国产精品一区二区| 精品一二三四区| 狠狠久久亚洲欧美| 国产成人精品亚洲日本在线桃色| 精品制服美女久久| 国产高清视频一区| 99视频精品全部免费在线| 99久久国产免费看| 欧美在线观看视频在线| 欧美精品18+| 精品蜜桃在线看| 中国av一区二区三区| 亚洲免费在线观看视频| 亚洲国产裸拍裸体视频在线观看乱了| 无吗不卡中文字幕| 精一区二区三区| 99久久久久久| 欧美日韩久久久一区| 欧美精品在线视频| 26uuu精品一区二区| 国产亚洲1区2区3区| 亚洲精品国产成人久久av盗摄 | 18欧美亚洲精品| 一区二区三区久久久| 日本在线不卡视频| 成人自拍视频在线| 日本韩国欧美国产| 久久综合九色综合97婷婷| 中文字幕亚洲电影| 亚洲在线中文字幕| 久久99国产精品免费| 99re热视频这里只精品| 日韩亚洲欧美一区二区三区| 欧美激情综合在线| 香蕉加勒比综合久久| 成人小视频在线观看| 在线观看免费成人| 久久久天堂av| 五月婷婷综合激情| 波多野结衣中文字幕一区| 日韩亚洲电影在线| 一区二区三区毛片| 不卡的av中国片| 精品成人免费观看|