资源简介
1.椭圆的扫描转换算法
2.凸六边形的扫描线填充算法
3.凸六边形绕点旋转算法
4.给定特征多边形,生成贝塞尔(Bezier)曲线
代码片段和文件信息
package Work;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import javax.swing.JComponent;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Bezier {
public static void main(String[] args) {
// TODO Auto-generated method stub
Drawframe3 Jf = new Drawframe3();
Jf.setVisible(true);
Jf.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
}
}
class Drawframe3 extends Jframe
{
public Drawframe3()
{
this.settitle(“坐标系框架“);
this.setSize(800600);
this.setLocationRelativeTo(null);
this.setResizable(false);
DrawPanel3 Jp = new DrawPanel3();
this.add(Jp);
}
}
class DrawPanel3 extends JComponent
{
private int width height;
private int x0 y0;
private Point2D [] p = new Point2D [6];
private Point2D [] temp = new Point2D [6];
public DrawPanel3()
{
p[0] = new Point2D.Double(496 286);
p[1] = new Point2D.Double(646 286);
p[2] = new Point2D.Double(726 186);
p[3] = new Point2D.Double(646 86);
p[4] = new Point2D.Double(496 86);
p[5] = new Point2D.Double(416 186);
}
public void paintComponent(Graphics g)
{
//super.paintComponent(g);
setBackground(Color.BLACK);
width = this.getWidth();
height = this.getHeight();
x0 = width/2;
y0 = height/2;
System.out.println(“sghoisugh“);
//this.DrawSix(g);
//this.PaAxis(g);
this.DrawBezier(g);
}
public void DrawBezier(Graphics g1)
{
Graphics2D g = (Graphics2D)g1;
g.setPaint(Color.BLUE);
Point2D t1t2;
t1 = p[0];
/**
* 利用递归的算法来画图
* 其中利用到了Point2D中的2D图形来结合Line2D来划线
* 根据t的渐变 结合两个点来描线可以得到相应的贝塞尔曲线
* 递归的函数体是 (手写不出来)
*/
temp = p;
for(double t = 0.01; t <= 1.0; t +=0.01)
{
temp = p;
for(int n = 5; n >= 1; n--)
{
for(int i = 0; i < n; i++)
temp[i] =new Point2D.Double(((1-t)*temp[i].getX() + t*temp[i+1].getX())((1-t)*temp[i].getY() + t*temp[i+1].getY()));
//显示中间直线轨迹
//for(int i = 0; i < n-1; i++)
//g.draw(new Line2D.Double(temp[i]temp[i+1]));
}
t2 = temp[0];
g.setPaint(Color.BLUE);
g.draw(new Line2D.Double(t1t2));
t1 = t2;
}
}
public void DrawSix(Graphics g1)
{
Graphics2D g = (Graphics2D)g1;
g.setPaint(Color.RED);
for(int i = 0; i < 5; i++)
{
g.draw(new Line2D.Double(p[i] p[i+1]));
}
}
public void PaAxis(Graphics g)
{
g.setColor(Color.GREEN);
//坐标轴线
g.drawLine(0 y0 width y0);
g.drawLine(x0 0 x0 height);
//g.drawLine(x0+10 0 x0+10 height);
//刻度线
g.drawString(“0“ x0 + 8 y0+15);//绘制0刻度
for(int i = 10; i <= 1.5*y0; i +=10)
{
if(i %50 == 0)
{
//x轴的绘制
g.drawLine(x0 + i y0 - 10 x0 + i y0);//x轴正向|10|代表刻度的高度
g.drawString(String.valueOf(i) x0+i-5 y0+15);//绘制刻度尺下面的数字
g.drawLine(x0 - i y0 - 10 x0 - i y0);//x轴负向|10|代
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4244 2015-11-11 17:11 Work\Bezier.java
文件 3466 2015-11-08 18:20 Work\Ellipse.java
文件 3646 2015-11-07 21:09 Work\Filling.java
文件 3789 2015-11-07 23:22 Work\Revolve.java
文件 67 2015-10-29 13:15 Work\package-info.java
目录 0 2015-11-07 21:11 Work\
相关资源
- 计算机图形学大作业之图形绘制变换
- 扫描线种子填充算法代码
- 计算机图形学裁剪算法
- opengl雪花代码
- 东南大学计算机图形学实验三 橡皮筋
- 东南大学计算机图形学实验二 简单
- 计算机图形学实验之区域填充实验报
- 2017-2018计算机图形学A卷附(答案)
- 计算机图形学教程课后习题答案
- 计算机图形学第三版孙家广课后答案
- 计算机图形学__Bresenham完整算法_画直
- 计算机图形学四面体几何变换.doc
- 西南交通大学计算机图形学实验二,
- 交互式计算机图形学-基于OpenGL的自顶
- 计算机图形学实现多边形裁剪
- 计算机图形学画花瓣曲线
- 计算机图形学-基于weiler-atherton算法的
- 山东大学2018计算机图形学考试
- 反走样算法-计算机图形学
- 计算机图形学 边界定义的8连通区域
- 计算机图形学,内含DDA画直线,画圆
- 计算机图形学旋转和投影
- 计算机图形学自行车实验
- 计算机图形学实验六真实感图形程序
- 计算机图形学实验五三维图形变换程
- B样条曲线绘制图案--一个计算机图形
- 计算机图形学简明教程课后习题答案
- 安徽大学计算机图形学考试题集.doc
- 计算机图形学答案详细 清华大学出版
- 西南交大计算机图形学期末复习提纲
评论
共有 条评论