计算机图形学课程设计报告交互式绘图系统

更新时间:2023-07-25 05:06:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

湖南工程学院交互式绘图系统

程 设 计 报 课程名称 计算机图形学 课题名称 交互式绘图系统 专 业 计算机科学与技术 班 级 学 号 姓 名

指导教师 刘长松 曹 燚

2012年 10 月 9 日

课告

湖南工程学院交互式绘图系统

湖南工程学院 课 程 设 计 任 务 书

课程名称 计算机图形学 课 题 交互式绘图系统

专业班级 学生姓名 学 号

指导老师 刘长松 曹 燚 审 批

任务书下达日期 2012年 9月 15 日 任务完成日期 2012 年 10月 9 日

湖南工程学院交互式绘图系统

一、设计内容与设计要求 1.设计内容:

用橡皮法实现交互式绘图系统。

2.设计要求:

在屏幕上可以选择不同的命令、来实现不同基本图形的绘制。完成橡皮筋直线,橡皮筋圆,橡皮筋矩形框,多边形裁剪和3阶B样条曲线的作图,且要有比较友好的界面。

3.算法提示:

首先在屏幕上画出菜单和绘图窗口,显示鼠标。点击相应菜单,点击鼠标,移动鼠标,获取鼠标移动相对位置,画出相应图形。

相关变量定义:

#define _MOUSE #define CIRCLE 1 圆 #define LINE 2 #define RECTANGLE #include #include

#include"graphics.h" #include"math.h" #include union

struct SREGS sr;

相关函数: void meun(int {

setcolor(8);

outtextxy(x+5,28,str); setcolor(15); line(x,22,x,40); line(x,22,y,22); setcolor(8); line(x,40,y,40); line(y,22,y,40); }

3

矩鼠直

标 线 形 "stdio.h" "string.h"

REGS

<dos.h> inreg,outreg;

x,int y,char *str)

湖南工程学院交互式绘图系统

void

drawwindows() 画窗口

{

setbkcolor(7); /*7*/ setcolor(8);

rectangle(0,20,640,460); rectangle(0,0,640,20); setfillstyle(1,1); floodfill(1,1,8);

rectangle(0,460,640,480); setfillstyle(1,15); floodfill(1,461,8); setcolor(RED);

outtextxy(10,468,"Finished By XuYuanFei."); setcolor(15);

line(0,41,640,41); line(0,459,640,459); setcolor(8);

line(0,42,640,42); setcolor(15);

rectangle(610,3,630,17); setfillstyle(1,7); floodfill(611,4,15); setcolor(8);

line(610,17,630,17); line(630,3,630,17); line(611,4,628,16); line(611,16,628,4);

rectangle(2,44,635,459); setcolor(15);

rectangle(3,45,634,458); line(611,3,628,15); line(611,15,628,3); meun(5,55,"line");

meun(65,165,"rectangle"); meun(175,250,"circle"); meun(260,330,"Bezer"); meun(340,400,"Cut"); }

int _cut() 裁剪 void mycircle(double x,double y,double r) 画圆 {

double i; for(i=0.0;i<360.0;i=i+4)

line(x+r*cos((i+1)/360*3.1415*2),y+r*sin((i+1)/360*3.1415*2),x+r*cos((i+4.0)/360*3.1415*2),y+r*sin((i+4.0)/360*3.1415*2));

湖南工程学院交互式绘图系统

}

void _Bezer(int a[3],int b[3],int m) Beizier曲线

void DisplayMouse() 显示鼠标

{

inreg.x.ax=1;

int86(0x33,&inreg,&outreg); }

void CloseMouse() 关闭鼠标 {

inreg.x.ax=2;

int86(0x33,&inreg,&outreg); }

union REGS DisplayMouseStatus() 显示鼠标状态 {

inreg.x.ax=3;

int86(0x33,&inreg,&outreg); return }

void GetMouseXY(int *x,int *y) 得到鼠标位置 {

DisplayMouse();

outreg=DisplayMouseStatus(); *x=outreg.x.cx; *y=outreg.x.dx; }

响应相应函数 void _mytreat(int oldx,int oldy,int {

if(num==1) {

if(flag==LINE) {

line(px,py,oldx,oldy); line(px,py,x,y); }

if(flag==CIRCLE) {

mycircle(px,py,sqrt((double)((px-oldx)*(px-oldx)+(py-oldy)*(py-oldy)))); mycircle(px,py,sqrt((double)((px-x)*(px-x)+(py-y)*(py-y)))); }

if(flag==RECTANGLE) {

rectangle(px,py,oldx,oldy); rectangle(px,py,x,y); } }

outreg;

x,int y)

湖南工程学院交互式绘图系统

}

二、进度安排

星期二 8:00——12:00 星期三 8:00——12:00

第 3 周 星期一 8:00——12:00

星期四 8:00——12:00 星期五 8:00——12:00 第 4 周 星期一 8:00——12:00

附:

课程设计报告装订顺序:封面、任务书、目录、正文、附件(A4大小的图纸及程序清单)、评分。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。 正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。 正文总字数要求在5000字以上(不含程序原代码)。

目录

湖南工程学院交互式绘图系统

一、 概述……………………………………………………………1 二、 功能模块的划分………………………………………………2 三、 主要功能的实现………………………………………………3 四、 程序调试………………………………………………………4 五、 总结……………………………………………………………5 六、 附录……………………………………………………………6

一、 概述

1、 交互式系统:

湖南工程学院交互式绘图系统

随着计算机绘图技术的广泛应用,交互处理已是必不可少的容。一个交互图形系统使用户能动态的输入坐标位置,指定选择功能,设置交换参数,以及在图形显示期间能够对花面上的某些部分进行修改、删除、增添、存储和在显示操作,且能全部徒手绘图。

交互式绘图软件系统都为用户提供了一个交互工作环境,称交互界面。通常在图形显示方式,把屏幕划分为图形区,菜单区和提示区。交互式绘图系统的基本功能一般可归纳为绘图功能、图形编辑、尺寸标准、作图工具、显示功能、询问功能、信息转换、和二次开发工具。

2、 橡皮筋技术:

橡皮筋技术是在平面上确定一条直线一般是先定下起点再定下终点,最后把起点和终点连成直线。如果要求这条直线能通过平面上某一点或和一已知圆相切,上述方法便不易做得很准确。所谓橡皮筋技术就是在起点确定后,光标移出去定终点时,在屏幕上始终显示一条连接起点和光标中心的直线,这条直线随着光标中心位置的变动而变动,它就像在起点和光标中心之间紧紧地拉着一根橡皮筋,有了这根橡皮筋便比较容易地找到通过一个点或和一个圆相切的直线的位置。

本文来源:https://www.bwwdw.com/article/erlm.html

Top