实验一OpenGL直线圆的绘制.doc
《实验一OpenGL直线圆的绘制.doc》由会员分享,可在线阅读,更多相关《实验一OpenGL直线圆的绘制.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-/实验一、OpenGL直线、圆的绘制1、 实验目的1)了解OpenGL 图形库的功能和结构;2)学习了解OpenGL 程序的基本结构,及常用函数; 3)学习使用OpenGL 绘制基本图形(线、圆); 2、 实验内容 1)使用OpenGL 编写一个简单的C+程序,使该程序能够绘制出直线。 2 )使用OpenGL 编写一个简单的C+程序,使该程序能够绘制出圆。 3、 实验过程1)在系统上配置好OpenGL的环境(头文件,库文件,和链接库文件);2)使用Visual V+6.0 新建一个C+文档,并创建相应的工程;3)在文档中引入OpenGL的头文件,编辑代码实现鼠标拖动画直线,画圆。4、 实验结
2、果可单击鼠标左键,然后拖动鼠标画出两条直线,并同时画出圆;可单击鼠标右键,然后拖动鼠标画出两个圆,并同时画出直线。结果截图:1. 鼠标左键主要控制绘制的直线:2. 鼠标右键主要控制绘制的圆:5、 实验代码1. #include 2. #include 3.4. / GLint pNum = 0;5. GLint px1, py1, px2, py2, cx, cy, r;6. GLint winWidth=600, winHeight=600;7.8. /画直线/9. void Draw_Bresenham(int pStartx,int pStarty,int pEndx,int pEndy
3、)10. /用Bresenham算法画直线11. int i;12.13. if(pStartx=pEndx)14. 15. /为竖线16. if(pStarty=pEndy)17. 18. for(i=pStarty;i=pEndy;i+)19. glVertex2f(pStartx,i);20. 21. else22. 23. for(i=pEndy;i=pStarty;i+)24. glVertex2f(pStartx,i);25. 26.27. return;28. 29.30. /为横线31. if(pStarty=pEndy)32. 33. if(pStartx=pEndx)34.
4、 35. for(i=pStartx;i=pEndx;i+)36. glVertex2f(i,pStarty);37. 38. else39. 40. for(i=pEndx;i0 & m=1)53. 54. if(pStartxpEndx)55. 56. while(pStartx=0)60. 61. p+=2*m-2;62. pStarty+;63. 64. else65. p+=2*m;66. 67. 68. else69. 70. while(pEndx=0)74. 75. p+=2*m-2;76. pEndy+;77. 78. else79. p+=2*m;80. 81. 82.83
5、. return;84. 85.86. p=-2*m-1;87. if(m=-1)88. 89. if(pStartxpEndx)90. 91. while(pStartx=0)95. 96. p+=-2*m-2;97. pStarty-;98. 99. else100. p+=-2*m;101. 102. 103. else104. 105. while(pEndx=0)109. 110. p+=-2*m-2;111. pEndy-;112. 113. else114. p+=-2*m;115. 116. 117.118. return;119. 120.121. p=2/m-1;122.
6、if(m1)123. 124. if(pStartypEndy)125. 126. while(pStarty=0)130. 131. p+=2/m-2;132. pStartx+;133. 134. else135. p+=2/m;136. 137. 138. else139. 140. while(pEndy=0)144. 145. p+=2/m-2;146. pEndx+;147. 148. else149. p+=2/m;150. 151. 152.153. return;154. 155.156. p=-2/m-1;157. if(pStartypEndy)158. 159. whi
7、le(pStarty=0)163. 164. p+=-2/m-2;165. pStartx-;166. 167. else168. p+=-2/m;169. 170. 171. else172. 173. while(pEndy=0)177. 178. p+=-2/m-2;179. pEndx-;180. 181. else182. p+=-2/m;183. 184. 185. 186.187. /画圆/188. /其他象限绘制189. void CirclePoints(int x,int y) 190. /第1象限191. glVertex2f(x,y);192. glVertex2f(y
8、,x);193. /第2象限194. glVertex2f(-x,y);195. glVertex2f(-y,x);196. /第3象限197. glVertex2f(-y,-x);198. glVertex2f(-x,-y);199. /第4象限200. glVertex2f(x,-y);201. glVertex2f(y,-x);202. 203. 204. /中点算法画圆205. void DrawCircle(int cx,int cy,int radis)206.207. glPushMatrix();208. glTranslatef(cx,cy,0);209. glPointSi
9、ze(1);210. glColor3f(0.5f, 0.5f, 1.0f);211. glBegin(GL_POINTS);212.213. int x,y;214. double p;215. x=0;216. y=radis;217. p=1.25-radis;218. while(x=0)223. 224. y-;225. p+=2.0*(x-y)+5;226. 227. else228. p+=2*x+3;229. 230. glEnd();231. glPopMatrix();232. 233.234.235. /绘制坐标轴236. void DrawOx()237. glColo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 试验 opengl 直线 绘制
限制150内