实验四实验报告 1、实验目的和要求 利用OpenGL实现实线,虚线,点划线的绘制,及kock曲线。 2、实验内容 1)用OpenGL程序绘制实现,虚线和点划线 2)用OpenGL程序,分别以直线和正三角形为初始生成员,实现迭代次数在6次以内的kock曲线,要求用键盘交互控制迭代次数。 3、实验步骤 1)相关算法及原理描述 ① 直线的绘制 在OpenGL中绘制直线通过指定直线段的端点来实现,用glVertex函数指定直线段端点的坐标位置,用glBegin/glEnd函数对包含一系列的点坐标,并利用符号常量解释这些点构成直线的方式。 ② 虚线的绘制 绘制虚线需要先调用函数过了Enable(GL_LINE_STIPPLE);打开划线模式。然后,函数glLineStipple将建立用于划线的模式 glLineStipple(Glint factor, GLushort pattern); ③ Kock曲线 Kock曲线的初始生成员是一条直线,生成规则是将直线段分为三等分,首尾两段保持不变,中间用两段等长且互成60°角的直线段代替。这样,直线段被分成四段,每段长度都只有原来的1/3。Kock曲线的分形维数为 D=ln4/ln3≈1.26186 假设原直线的首尾点是P0(x0,y0),P1(x1,y1),则新的四段直线段的五个端点坐标分别为 (x0 , y0) (x0+(x1-x0)/3 , y0+(y1-y0)/3) ((x1+x0)/2±(y0-y1)√3/6 , (y1+y0)/2±(x1-x0)√3/6) (x0+2(x1-x0)/3 , y0+2(y1-y0)/3) (x1 , y1) 其中,第三个点坐标公式中的正负号表示中间两条心直线段处于元直线段的哪一侧。根据这一规则迭代六次。 2 )程序调试、测试与运行结果分析 ① 直线的绘制结果 ② 虚线的绘制结果 ③ 以直线作为初始生成元的 Kock 曲线 ④ 以三角形作为初始生成元的 Kock曲线 4、 实验总结 在上一次的实验基础上,利用 GL_LINES画直线,这项实验内容 比 较 容 易 。 然 后 , 利 用 glEnable(GL_LINE_STIPPLE)函 数 和glLineStiopple(Glint factor ,GLushort pattern)进行虚线和点画线的实现。也是比较简单的。 第二个实验是利用 Kock曲线实现迭代生成图形,这个实验很难。用了两节课的时间,最终也没有成功。我自己没有做成功,去请教别人,看别人的才做出来的。看到生成的图像很漂亮 不管结果怎么样,我在这次的实验中学到了很多知识,对编程也好,对 openGL也好,都有了更好更深的理解。 5、附录 1>直线的绘制 #include int winWidth=400,winHeight=300; void Initial(void) { glClearColor(1.0f,1.0...