• 大小: 98KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: java  Graphics  

资源简介

计算机图形学,内含DDA画直线,画圆,直线裁剪,多边形裁剪,填充,三维透视,三维平移缩放,贝塞尔曲线,B样条曲线功能。

资源截图

代码片段和文件信息

package graphicsTest;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
 
import javax.swing.Jframe;
import javax.swing.JPanel;
 
public class Bezier extends JPanel implements MouseListenerMouseMotionListener{
private static final long serialVersionUID = 1L;
private Point2D[] controlPoint;
private Ellipse2D.Double[] ellipse;
private static final double SIDELENGTH = 8;
private int numPoints;
private double t=0.002;
public Bezier(){
numPoints = 0;
controlPoint = new Point2D[4];
ellipse = new Ellipse2D.Double[4];
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.MAGENTA);
for(int i=0; i if(i>0 && i<(numPoints-1)) {
g2.fill(ellipse[i]);
}else {
g2.draw(ellipse[i]);
}
if(numPoints>1 && i<(numPoints - 1))
g2.drawLine((int)controlPoint[i].getX() (int)controlPoint[i].getY() (int)controlPoint[i+1].getX() (int)controlPoint[i+1].getY());
}
if(numPoints == 4) {
double xy;
g2.setColor(Color.RED);
for(double k=t; k<=1+t; k+=t) {
x = (1-k)*(1-k)*(1-k)*controlPoint[0].getX() + 3*k*(1-k)*(1-k)*controlPoint[1].getX()
+ 3*k*k*(1-k)*controlPoint[2].getX() + k*k*k*controlPoint[3].getX();
y = (1-k)*(1-k)*(1-k)*controlPoint[0].getY() + 3*k*(1-k)*(1-k)*controlPoint[1].getY()
+ 3*k*k*(1-k)*controlPoint[2].getY() + k*k*k*controlPoint[3].getY();
// System.out.println(x + “  “ + y );
g2.drawLine((int)x (int)y (int)x (int)y);
}
}
}
@Override
public Dimension getPreferredSize() {
// TODO Auto-generated method stub
return new Dimension(600600);
}
 
public void startMain() {
Jframe f = new Jframe();
Bezier t2 = new Bezier();
f.add(t2);
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(Jframe.DISPOSE_ON_CLOSE);
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
if(numPoints <4) {
double x = e.getX();
double y = e.getY();
controlPoint[numPoints] = new Point2D.Double(x y);
Ellipse2D.Double current = new Ellipse2D.Double(x-SIDELENGTH/2 y-SIDELENGTH/2 SIDELENGTH SIDELENGTH);
ellipse[numPoints] = current;

numPoints++;
repaint();
}
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
private int find(Point2D p){
int flag = 5;
for(int i=0; i if( ellipse[i].contains(p)) {
flag = i;
return flag;
}
}
return flag;
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        226  2018-11-27 23:07  GraphicsTest\.classpath

     文件        388  2018-11-27 23:07  GraphicsTest\.project

     文件      46905  2018-11-30 01:14  GraphicsTest\background.jpg

     文件       4134  2018-12-24 18:59  GraphicsTest\graphicsTest\Bezier.class

     文件       3749  2018-12-24 18:33  GraphicsTest\graphicsTest\Bezier.java

     文件       6427  2018-12-24 19:16  GraphicsTest\graphicsTest\BLine.class

     文件       6538  2018-12-24 19:16  GraphicsTest\graphicsTest\BLine.java

     文件       2135  2018-12-24 18:59  GraphicsTest\graphicsTest\DDAline$1.class

     文件       2575  2018-12-24 18:59  GraphicsTest\graphicsTest\DDAline.class

     文件       2918  2018-12-03 16:37  GraphicsTest\graphicsTest\DDAline.java

     文件       1221  2018-12-24 19:16  GraphicsTest\graphicsTest\DeBoorCox.class

     文件        370  2018-12-24 19:16  GraphicsTest\graphicsTest\Dot.class

     文件       2577  2018-12-24 18:59  GraphicsTest\graphicsTest\DrawCircle$1.class

     文件       3989  2018-12-24 18:59  GraphicsTest\graphicsTest\DrawCircle.class

     文件       5325  2018-12-03 16:37  GraphicsTest\graphicsTest\DrawCircle.java

     文件       2433  2018-12-24 18:59  GraphicsTest\graphicsTest\LineCutting$1.class

     文件       3154  2018-12-24 18:59  GraphicsTest\graphicsTest\LineCutting.class

     文件       3993  2018-11-29 23:47  GraphicsTest\graphicsTest\LineCutting.java

     文件        961  2018-12-24 19:12  GraphicsTest\graphicsTest\Main$1.class

     文件        985  2018-12-24 19:12  GraphicsTest\graphicsTest\Main$2.class

     文件        905  2018-12-24 19:12  GraphicsTest\graphicsTest\Main$3.class

     文件        970  2018-12-24 19:12  GraphicsTest\graphicsTest\Main$4.class

     文件        978  2018-12-24 19:12  GraphicsTest\graphicsTest\Main$5.class

     文件       1121  2018-12-24 19:12  GraphicsTest\graphicsTest\Main$6.class

     文件       1124  2018-12-24 19:12  GraphicsTest\graphicsTest\Main$7.class

     文件        970  2018-12-24 19:12  GraphicsTest\graphicsTest\Main$8.class

     文件        926  2018-12-24 19:12  GraphicsTest\graphicsTest\Main$9.class

     文件       4365  2018-12-24 19:12  GraphicsTest\graphicsTest\Main.class

     文件       3689  2018-12-24 19:12  GraphicsTest\graphicsTest\Main.java

     文件        633  2018-12-24 18:59  GraphicsTest\graphicsTest\Morph$1.class

............此处省略24个文件信息

评论

共有 条评论