图形学c语言sdf
更新时间:2023-08-27 16:57:01 阅读量: 教育文库 文档下载
- 图形学算法推荐度:
- 相关推荐
计算机图形学C语言图形程序设计基础
第三章C语言图形程序设计基础 3.1屏幕显示模式和坐标系 1.文本模式: DEF在屏模上只能显示文本的显示模式 历史原因 Turbo C的默认的显示模式是文本模式。
2.图形模式和点坐标 图形模式: DEF在屏幕上显示图形的方式,称为图形模式。 点坐标:屏幕是由像素点组成的,在图形模式下,屏 幕上每个像素的显示位置用点坐标来描述。
在图形模式下,以屏幕的左上角为坐标原点(0,0)水 平方向为x轴,垂直方向为y轴(0,0)
Max x
(0,0)
799
(10,4)
Max y
599
例:一个分辨率为800*600的分辨率的显示 屏(800列,600行)
3.图形系统的初始化
一个简单的图形程序 #include “graphics.h” // 图形函数库 #include “stdio.h” //标准输入输出函数库 #include
main() { int gdriver,gmode; detectgraph(&gdriver,&gmode) ; if(gdriver<0) exit(1) ;
“conio.h” //控制台输入输出
初始化图 形系统
initgraph(&gdriver,&gmode,"C:\\TURBOC2") ;
bar3d(100,200,300,400,10,1) ; getch(); closegraph(); }
图形 程序 关闭图 形系统
如何实现图形模式初始化? initgraph(int *gdriver,int *gmode,char *path) 作用:初始化图形系统,从磁盘装入一个 图形驱动程序并设置图形显示模式。
Void far detectgraph(int *gdriver,int *gmode)
作用:硬件检测,该函数用来检测图形适配器的类型。 关闭图形系统 Void far closegraph() 作用:关闭图形系统,释放图形驱动程序所占 的内存空间,使系统返回到文本模式。
3.2常用绘图函数简介
1.图形视口函数 -setviewport(left,top,right,bottom,clip) Clip:如果clip=1则超出视口的图形自动剪裁 例: setviewport(100,100,300,300,1) -clearviewport() 作用:清除图形视口中的图形 -getviewsetting(struct * info) 作用:返回当前视口的绝对坐标及剪裁标志。 问题:info该如何定义?
main()[运行viewport.c] { struct viewporttype info; int gdriver=DETECT ,gmode; initgraph(&gdriver,&gmode,"C:\\tc3\\BGI"); setcolor(4);//红色 setviewport(100,100,200,200,1);//将参数clip=0结果如何? circle(60,60,60); getviewsettings(&info); rectangle(0,0,info.right-info.left,info.bottom- info.top); getch(); clearviewport(); getch(); closegraph();}问题1:程序运行结果?如果该为circle(50,50,20)结果如 何?如果将circle(60,60,60)前移一行结果?
2屏幕位置函数 -getmaxx() 作用:返回当前图形模式下最大x坐标 -getmaxy() 作用:返回当前图形模式下最大x坐标 Getx() 作用:返回图形模式下当前位置的x坐标 Gety() 作用:返回图形模式下当前位置的
x坐标
- moveto(int x ,int y) 作用:将当前位置移到(x,y) 例:moveto(10,20) - moverel(int deltax,int deltay) 作用:相对移动函数 说明:deltax和deltay。表示相对移动位 置 问题:刚才使用moveto(10,20)将光标定 位在(10,20)上,即CP=(10,20)。如果 现在调用 moverel(-5,10)光标将在何处?
3.直线和线型函数 -line(int x1,int y1,int x2,int y2) 作用:-在指定的两点之间画直线 说明:当前光标依然在(x1,y1) lineto(int x,int y) -作用:从当前光标位置到(x,y)之间画一条直线
-linerel(int deltax,int deltay) 作用:从当前坐标以相对增量方式画直线 问题2:如果 CP(10,20) ; linerel(70,80) 应在哪两点之间画直线?
阅读程序,写出程序运行结果 例:#include "graphics.h" #include "stdio.h" main() { int cp_x, cp_y; int gdriver=DETECT ,gmode; initgraph(&gdriver,&gmode,"C:\\TURBOC2"); moveto(5,10); line(5,10,100,50); cp_x=getx(); cp_y=gety();
printf("the cp_x cp_y are %d %d",cp_x,cp_y); printf("\n") ; //回车 getch() ; moveto(100,50); lineto(100,100); cp_x=getx(); cp_y=gety(); printf("the cp_x cp_y is %d %d",cp_x,cp_y) ;// getch(); linerel(50,50); getch(); }
-setlinestyle(int style, int pattern ,int width) 作用:设置线型特征(P65) style参数:用来定义所画直线的类型 Width参数:用来指定所画直线的粗细 pattern参数:只有style=4(用户自定义)可用 来表示用户字定义的线型。一般情况 pattern=0 例:Setlinestyle(DOTTEN-LINE , 0 , 1)
线性代码说明代码0 1 2
代码名SOLID-LINE DOTTEN-LINE CENTER-LINE 实线 点线 中心线
说明
34
DASHED-LINE
虚线
线宽
USERBIT-LINE 用户定义的线
符号常量 NORM_WIDTH THICK_WIDTH
值 1 3
含义 1像素宽 3个像素宽
例:setlinestyle(SOLID-LINE , 0, 1)
setlinestyle(4 , 0xAAAA, 1) 1100 1100 1100 1100 1111 1111 1111 1111
pattern参数是16位二进制码,1:有像素用前景 色点显示;0:没有像素用背景色点表示。
void draw_line() {int i; for(i=0;i<4;i++) { setlinestyle(i,0,NORM_WIDTH); line(40,10*(i+1),100,10*(i+1)); setlinestyle(i,0,THICK_WIDTH); line(40,10*(i+1),100,10*(i+1)); } setlinestyle(4,0x99cc,THICK_WIDTH); line(40,50,100,50) ; setlinestyle (4,0xABCD,THICK_WIDTH); line(40,60,100,60) ; }
-Setwritemode(int mode) 作用:设置画线的输出模式 mode=COPY_PUT(0) 新画的线将覆盖屏幕上原有的图像 mode=XOR_PUT(1)
新画的线与旧线作异或,然后再向屏幕 输出
例: Midx=getmaxx()/2 Midy=getmay()/2 Setwritemode(XOR_PUT) Line(0,midy,midx,midy) Line(midx/2,midy,midx*3/2,midy) Setwritemode(COPY_PUT) Line(0,midy/2,midx,midy/2); L
ine(midx/2,midy/2,midx*3/2,midy /2)
正在阅读:
图形学c语言sdf08-27
毕业设计 - 图文04-06
高等数学(上)复习指导及要点解答07-03
河北省高中地理学业水平测试适应性训练08-29
三维智能楼宇智能一体化解决方案12-03
第28课《扁鹊见蔡桓公》教案08-06
生命之歌作文02-04
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 图形
- 语言
- sdf
- 2019-2020年最新部编本人教版小学三年级语文下册10纸的发明教案含教学反思【表格版】
- Taming the Anger Monster
- 2018年中国工艺陶瓷市场分析报告-行业深度调研与发展趋势预测(目录)
- 吊车司机安全培训考试试题
- 《台历、挂历的设计》教案
- excel2003和2007表格中常用快捷键大全
- 田埂修筑施工方案及方法
- 微观市场营销环境分析教案
- 四川师范大学毕业论文与设计工作手册
- 项痹病〈神经根型颈推病〉中医诊疗方案及难点应对措施
- 06-10司法考试国际经济法真题
- 中小学心理健康教育C证论文
- 2012年会计职称考试《初级经济法》重点导读:支付结算法律制(精)
- Java网上五子棋游戏设计
- 2015-2020年中国高速公路智能化行业全景调研报告
- 苏珊米勒2015年10月双子座运势
- 软件限制策略的简单应用应用简单策略限制软件运行所有
- 室内设计基础图画法
- 泰达宏利价值优化型稳定类行业证券投资基金2010年第2季度报告2010年06月30日
- 匀变速直线运动专项练习题.doc