资源简介
Eclipse平台JAVA实现
1. 实验内容
用基本增量算法和Bresenham算法画直线
2.实验目的
1)理解在显示器上画图与在纸上画图的本质区别;
2)掌握直线的光栅扫描转换过程;
3)掌握不同算法绘制直线的思路和优缺点。
3. 实验要求
1)将像素网格表现出来,建立网格坐标系;
2)用橡皮筋的形式输入参数;
3)鼠标移动时,显示鼠标当前位置;
4)显示判别式的计算过程和下一点的选择策略;
5)记录生成点的坐标,建议用表的形式;
6)图形生成过程可以重复进行。
1. 实验内容
用正负法和Bresenham算法画圆弧
2.实验目的
1)掌握圆及圆弧的光栅扫描转换过程;
2)掌握不同算法绘制圆弧的技巧和优缺点。
3. 实验要求
1)将像素网格表现出来,建立网格坐标系;
2)用橡皮筋的形式输入参数;
3)鼠标移动时,显示鼠标当前位置;
4)显示判别式的计算过程和下一点的选择策略;
5)记录生成点的坐标,建议用表的形式;
6)图形生成过程可以重复进行。
1. 实验内容
用Cohen-SutherLand算法和liang _barsky算法进行线段裁剪
2.实验目的
1)理解裁剪的相关概念
2)掌握直线段的一般裁剪过程;
3)理解并掌握Cohen-SutherLand 算法的编码思想;
4)理解并掌握Liang_Barsky算法的参数化裁剪思想;
3. 实验要求
1)将像素网格表现出来,建立网格坐标系;
2)用橡皮筋的形式输入剪裁线段和裁剪窗口;
3)鼠标移动时,显示鼠标当前位置;
4)对于线段裁剪,线段被窗口的四条边裁剪的过程要显示出来;
6)裁剪过程可以重复进行。
1. 实验内容
用Sutherland-Hodgman算法进行多边形裁剪
2.实验目的
1)理解多边形裁剪与直线段裁剪的区别;
2)掌握多边形的裁剪过程;
3)理解并掌握Sutherland-Hodgman算法的裁剪思想。
3. 实验要求
1)将像素网格表现出来,建立网格坐标系;
2)用橡皮筋的形式输入剪裁多边形和裁剪窗口;
3)鼠标移动时,显示鼠标当前位置;
4)多边形被窗口的四条边裁剪的过程以及多边形顶点增删的过程要显示出来;
5)裁剪过程可以重复进行。
代码片段和文件信息
package shiyan;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import java.text.*;
import java.io.*;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Shiyan extends Jframe{
JMenuBar mb;
JMenu m_gongNm_help; //菜单
JMenuItem mi_Linemi_Roundmi_LineCutmi_LinesCutmi_exit; //菜单选项
JMenuItem mi_aboutmi_help;
Date now = new Date();
DateFormat d = DateFormat.getDateInstance();
public RoundWindow RB;
public SetPixe_1 Set1;
public SetPixe_2 Set2;
public SetPixe_3 Set3;
public SetPixe_4 Set4;
//构造函数
public Shiyan(){
creatComponents(); //调用方法创建窗体组
layoutComponents(); //调用方法设置窗体布
registerEvent(); //调用方法添加事件处理
setSize(800700); //设置窗口大小
settitle(“图形学实验“); //设置窗口标题
Icon Piture = new ImageIcon( “piture.jpg“ );
JButton PButton;
PButton = new JButton(Piture);
add(PButton);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); //关闭窗口时什么都不做
addWindowListener(new WindowAdapter(){ //关闭窗口时执行
public void windowClosing(WindowEvent e) {
int option=JOptionPane.showConfirmDialog(null“是否完全退出该系统?“
“系统提示“JOptionPane.YES_NO_CANCEL_OPTIONJOptionPane.QUESTION_MESSAGE);
if(option==JOptionPane.YES_OPTION)
System.exit(0);
}});
}
//创造窗体组件
private void creatComponents(){
mb=new JMenuBar();
m_gongN=new JMenu(“功能“);
m_help=new JMenu(“帮助“);
mi_Line=new JMenuItem(“画直线“);
mi_Round=new JMenuItem(“画圆“);
mi_LineCut=new JMenuItem(“直线裁剪“);
mi_LinesCut=new JMenuItem(“多边形裁剪“);
mi_exit=new JMenuItem(“退出“);
mi_about=new JMenuItem(“关于我们“);
mi_help=new JMenuItem(“友情链接“);
}
//窗体布局
private void layoutComponents(){
m_gongN.add(mi_Line); //添加菜单项
m_gongN.add(mi_Round);
m_gongN.add(mi_LineCut);
m_gongN.add(mi_LinesCut);
m_gongN.add(mi_exit);
m_help.add(mi_help);
m_help.add(mi_about);
mb.add(m_gongN);
mb.add(m_help);
setJMenuBar(mb); //添加菜单条
//设置快捷键
mi_Line.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OInputEvent.CTRL_MASK));
mi_Round.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_SInputEvent.CTRL_MASK));
mi_LineCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_XInputEvent.CTRL_MASK));
mi_LinesCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_YInputEvent.CTRL_MASK)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 232 2009-04-01 19:20 图形学\.classpath
文件 385 2009-04-01 19:20 图形学\.project
文件 891 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$1.class
文件 1506 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$AboutActionEventHander.class
文件 1062 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$ExitActionEventHander.class
文件 1355 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$HelpActionEventHander.class
文件 827 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$LineActionEventHander.class
文件 817 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$Linecut.class
文件 833 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$LineCutActionEventHander.class
文件 845 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$LinesCutActionEventHander.class
文件 832 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$LinesWindow.class
文件 812 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$LineWindow.class
文件 886 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$RoundActionEventHander.class
文件 838 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$RoundWindow.class
文件 1836 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_1$1.class
文件 2629 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_1$2.class
文件 1399 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_1$clenHander.class
文件 4042 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_1$comdHander.class
文件 6702 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_1.class
文件 1527 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_2$1.class
文件 2120 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_2$2.class
文件 1869 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_2$clenHander.class
文件 1473 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_2$comdHander.class
文件 6642 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_2.class
文件 2825 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_3$1.class
文件 2139 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_3$2.class
文件 1334 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_3$clenHander.class
文件 1052 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_3$comdHander.class
文件 6335 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_3.class
文件 3751 2009-04-11 20:04 图形学\bin\shiyan\Shiyan$SetPixe_4$1.class
............此处省略15个文件信息
评论
共有 条评论