实验四实验报告 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 )程序调试、测试与运行结果分析 ① 直线的绘制结果 ② 虚线的绘制结果 ③ 以直线作为初始