图形学c语言sdf

上传人:飞****9 文档编号:130637102 上传时间:2020-04-29 格式:PPT 页数:58 大小:333KB
返回 下载 相关 举报
图形学c语言sdf_第1页
第1页 / 共58页
图形学c语言sdf_第2页
第2页 / 共58页
图形学c语言sdf_第3页
第3页 / 共58页
图形学c语言sdf_第4页
第4页 / 共58页
图形学c语言sdf_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《图形学c语言sdf》由会员分享,可在线阅读,更多相关《图形学c语言sdf(58页珍藏版)》请在金锄头文库上搜索。

1、计算机图形学 C语言图形程序设计基础 第三章C语言图形程序设计基础 3 1屏幕显示模式和坐标系1 文本模式 DEF在屏模上只能显示文本的显示模式历史原因TurboC的默认的显示模式是文本模式 2 图形模式和点坐标图形模式 DEF在屏幕上显示图形的方式 称为图形模式 点坐标 屏幕是由像素点组成的 在图形模式下 屏幕上每个像素的显示位置用点坐标来描述 例 一个分辨率为800 600的分辨率的显示屏 800列 600行 在图形模式下 以屏幕的左上角为坐标原点 0 0 水平方向为x轴 垂直方向为y轴 3 图形系统的初始化一个简单的图形程序 include graphics h 图形函数库 includ

2、e stdio h 标准输入输出函数库 include conio h 控制台输入输出main intgdriver gmode detectgraph 初始化图形系统 bar3d 100 200 300 400 10 1 getch closegraph 如何实现图形模式初始化 initgraph int gdriver int gmode char path 作用 初始化图形系统 从磁盘装入一个图形驱动程序并设置图形显示模式 图形程序 关闭图形系统 Voidfardetectgraph int gdriver int gmode 作用 硬件检测 该函数用来检测图形适配器的类型 关闭图形系统

3、Voidfarclosegraph 作用 关闭图形系统 释放图形驱动程序所占的内存空间 使系统返回到文本模式 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 structviewporttypeinfo

4、intgdriver DETECT gmode initgraph 问题1 程序运行结果 如果该为circle 50 50 20 结果如何 如果将circle 60 60 60 前移一行结果 2屏幕位置函数 getmaxx 作用 返回当前图形模式下最大x坐标 getmaxy 作用 返回当前图形模式下最大x坐标Getx 作用 返回图形模式下当前位置的x坐标Gety 作用 返回图形模式下当前位置的x坐标 moveto intx inty 作用 将当前位置移到 x y 例 moveto 10 20 moverel intdeltax intdeltay 作用 相对移动函数说明 deltax和delt

5、ay 表示相对移动位置问题 刚才使用moveto 10 20 将光标定位在 10 20 上 即CP 10 20 如果现在调用moverel 5 10 光标将在何处 3 直线和线型函数 line intx1 inty1 intx2 inty2 作用 在指定的两点之间画直线说明 当前光标依然在 x1 y1 lineto intx inty 作用 从当前光标位置到 x y 之间画一条直线 linerel intdeltax intdeltay 作用 从当前坐标以相对增量方式画直线问题2 如果CP 10 20 linerel 70 80 应在哪两点之间画直线 阅读程序 写出程序运行结果例 includ

6、e graphics h include stdio h main intcp x cp y intgdriver DETECT gmode initgraph printf thecp xcp yare d d cp x cp y printf n 回车getch moveto 100 50 lineto 100 100 cp x getx cp y gety printf thecp xcp yis d d cp x cp y getch linerel 50 50 getch setlinestyle intstyle intpattern intwidth 作用 设置线型特征 P65

7、style参数 用来定义所画直线的类型Width参数 用来指定所画直线的粗细pattern参数 只有style 4 用户自定义 可用来表示用户字定义的线型 一般情况pattern 0例 Setlinestyle DOTTEN LINE 0 1 线性代码说明线宽 例 setlinestyle SOLID LINE 0 1 setlinestyle 4 0 xAAAA 1 11001100110011001111111111111111pattern参数是16位二进制码 1 有像素用前景色点显示 0 没有像素用背景色点表示 voiddraw line inti for i 0 i 4 i setl

8、inestyle 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 0 x99cc THICK WIDTH line 40 50 100 50 setlinestyle 4 0 xABCD THICK WIDTH line 40 60 100 60 Setwritemode intmode 作用 设置画线的输出模式mode COPY PUT 0 新画的线将覆盖屏幕上原有的图像mode XOR PUT 1 新画的线与旧线作异或

9、 然后再向屏幕输出 例 Midx getmaxx 2Midy getmay 2Setwritemode 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 Line midx 2 midy 2 midx 3 2 midy 2 程序设计 利用C语言设计一程序实现下图所示的二维平面时钟的绘制 设计出一个时针分针能够协调旋转的的时钟 new clock Setwritemode intmode 作用 设置画线的输出模式如果mode CO

10、PY PUT 0 新画的线将覆盖屏幕上原有的图像mode XOR PUT 1 新画的线与旧线作异或 然后再向屏幕输出 setwritemode XOR PUT 设置写模式为异或 th1 0 th2 0 while kbhit 判断是否按下某键 setcolor RED line x y x 0 8 radius cos th1 y 0 8 radius sin th1 分针 setcolor BLUE line x y x 0 6 radius cos th2 y 0 6 radius sin th2 时针 delay 1000 setcolor RED line x y x 0 8 radi

11、us cos th1 y 0 8 radius sin th1 setcolor BLUE line x y x 0 6 radius cos th2 y 0 6 radius sin th2 th1 2 PI 60 60 th2 2 PI 12 60 60 if th1 0 th1 2 PI if th2 0 th2 2 PI 例 抛物线的绘制1 数学模型的分析标准方程 Y X2 4p 曲线以F 0 p 为焦点 曲线以Y轴为对称轴 其X的取值范围是任意的 由此 可将上式离散化 其中 i m m 1 0 1 m dx 曲线沿x方向的等距离 2 图形绘制范围X的定义域为整个定义域实际上X的取值范

12、围后图形区域大小限制设图形区域 长X L 高 Y H 0 0 Y X2 4p 曲线1的X的取值范围x1 x x2x1 L 2 x2 L 2曲线2x的范围X1 X X2X1 sqrt H 2 4p X2 sqrt H 2 4p Y X2 4p X sqr 2p H 1 将 x1 x2 进行n等分 n为偶数 2 每等分的大小为dxdx x2 x1 nm n 2 3 已知离散点的中点是 0 0 点则离散点依次是 m m 1 0 1 2 m 1 m For i m i m i x i dxy i dx i dx 4 p 数学坐标 i dx i dx i dx 4 p 是否就此结束了 坐标转换 Xc Y

13、c 0 0 X Y X Y x y 流程图 Y X2 4p 计算数学坐标 转换为屏幕坐标输出 圆弧类函数 arc intx inty intstartangle intendangle intradius 作用 画圆弧例 arc 100 100 0 360 50 arc 100 100 0 180 30 circle intx inty intradius 作用 画圆 ellipse intx inty intstart intend intxradius intyradius 作用 画椭圆说明 以 x y 为圆心 长半轴为xradius 短半轴为yradius起始角度为start 终止角度为

14、end Pieslice intx intyintstartangle intendangle intradius 作用 画扇形例 voiddraw slice intstart end start 0 end 45 For i 0 i 8 i setfillstyle SOLID FILL i pieslice 260 200 start end 100 start 45 end 45 Getch 5多边形类函数rectangle intleft inttop intright intbottom 作用 画矩形例 rectangle 200 100 500 400 drawpoly intn

15、umpoints int polypoints 作用 画多边形说明 用当前画笔颜色画一个多边形 多边形的点数为numpoints polypoints指向一个整型数组 共有numpoints 2个整数 每一对整数给出了一个多边形顶点 x y 的坐标 例 intmatrix 10 10 20 20 60 30 50 20 40 15 20 Drawpoly 5 matrix 注意 划封闭的多边形 定点数目必须等于n 1且最后一点的坐标必须等于第一个点的坐标例 main staticintpolypoints1 8 100 100 200 100 200 200 100 200 Staticint

16、polypoints2 10 100 100 200 100 200 200 100 200 100 100 drawpoly 4 polypoints1 Drawpoly 5 polypoints2 6图形颜色的设置voidfarsetbkcolor intcolor 设置当前背景颜色 p60表3 3 例 setbkcolor BLACK voidfarsetcolor intcolor 设置当前画笔颜色例 setcolor GREEN 例 在浅红色的背景色画布上画一黄色的圆 include graphics h include conio h voidmain intgdriver DETECT gmode initgraph 7图形的填充 柱状统计图 圆饼图 SOLID FILL Setfillstyle intpattern intcolor 作用 设置当前的填充模式和填充颜色p 67 填充模式代号 例 setfillstyle 4 RED Bar 100 200 150 300 Floodfill intx inty intborder 作用 蔓延填充 以 x y 为填充起点

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号