文档介绍:计算机图形学
课程设计报告
班级
姓名
学号
时间 2005 . 1 . 8
软件功能简介
实现二维基本图形的生成和演示包括:直线,圆和椭圆(键盘输入初值)。
实现二维图形的基本变换,复合变换(图形参数由键盘输入)
实现直线段的区域裁剪功能。
实现多边形的区域填充。
软件操作说明
本软件在windowsXP的dos控制台完成,操作界面由文本列表方式显示,根据用户所选的命令做相应的响应,其中图像的生成和显示在dos控制台图形显示模式下完成。图形显示完成后再回到文本模式。(输入操作根据界面提示进行)
create beeline,用中点Breseham算法绘制一条直线,由用户输入2个端点。
create circle,用扫描中点Breseham算法画一个圆形,由用户输入半径。
create ellipse,用中点Breseham算法画一个椭圆,由用户输入椭圆中心坐标和长短半径。
filling of polygon,用逐点判断的思想实现多边形区域填充,由用户输入多边形的顶点数,及顶点坐标填充颜色。
basis transform of basis-graphics,实现二维图形(直线,圆,椭圆,多边形)的基本变换(平移,旋转,对称,比例,错切)。
line_clip,用Liang-Barsky算法实现的直线段的裁剪。
exit。退出程序,回到windows。
设计概要和难点
图形的输出(如直线,圆,椭圆)很完善,考虑了可能出现的情况,其中坐标轴采用获得屏幕的最大象素设定。
其中椭圆的算法,当长短轴比例太时,误差可能会大一点。
关于图形的二维变换和多边形的填充是个难点,占用的代码比较多。
在整个程序中全部调用已完成的算法,比如二维图形变换时,就是调用自己的
图形函数。
关于二维变换的算法,由于实现的功能很多,可能部分变换没发实现。
由于全部程序在一个源文件里,每个函数采用自己的局部变量.
由于没能在dos下实现截图功能,所以界面在运行程序时可以看到。
#include ""
#include ""
#include ""
#include ""
#include ""
#define PI
#define TT 1
#define F 0
#define round(a) (int)(a+)
#define MAX 100
typedef enum {FALSE,TRUE}Boolean;
typedef struct {
int x;
int y;
}Point;
typedef struct {
int PolygonNum;
Point verteces[MAX];
}Polygon;
void planar_change()
{
void Bresenham_Line(int ,int ,int ,int ,int);
void Bresenham_Circle(int,int,int);
/*界面输入参数*/
int _X0,_Y0; /*原点坐标*/
int input1,input2,selected1,selected2;
int selected1_sign[4];
/*程序中用到的循环指针*/
int i,j;
/*变换矩阵及参数*/
int a,b,c,d,p,q,l,m,s;
double radian,degree;
int input3,symmetry_sign;
int input4,level_cut_sign;
int T[3][3];
/*直线变换用到的参数*/
int x0, y0, x1, y1, color;
int P[2][3],Pt[2][3];
int temp0,temp1;
/*圆变换用到的参数*/
int P1[3],Pt1[3];
int temp3;
int height,width; /*屏幕的最大高度和宽度*/
int x,y,delta,delta1,delta2,direction;
int driver,mode,r;
int r0;
/*多边形的参数*/
int acme,input5,k;
int _temp[8],_color[8];
int P2[8][3];
int Pt2[8][3];
height=getmaxx();width=getmaxy();
height=height>>1