计算机图形学上机实验报告
实验一:kock分形雪花图案的绘制
一、实验目的与要求
目的:。
2通过上机编程掌握OPENGL的画图机理和OPENGL。
要求:。
二、实验内容
以Kock曲线为例,说明分形图形是如何生成的。Kock曲线的初始生成元是一条直线段,生成规则是将直线段均分为三等分,首尾两端保持不变,中间用两端等长且互成60度角的直线段代替。
迭代公式如下:
分别迭代1,3,6次,并记录结果。
实验结果
实验结果图如下:
3-1第一次分形
3-2三次分形
3-3六次分形
四、体会
通过这次实验了解到了分形系统的从图元到图形的形成过,分形在图形学的应用中,可以用来表示岩层、云、水、树、等。并且亲手实现了“雪花”的分形图形。通过迭代次数可控制图形的不同。掌握了分形系统的形成过程。完成了此次试验目的。
五、源程序
void drawline(pt pt1, pt pt2)//绘制线
{
glBegin(GL_LINES);
glVertex2d(, );
glVertex2d(, );
glEnd();
}
void drawkoch(pt pt1, pt pt2, int n)//n为确定的迭代次数
{
pt p1, p2, p3, p4, p5;
glColor3f(, , );
= ;
= ;
= ;
= ;
if (n == 1){ drawline(p1, p2); }
if (n>1){
= + (- + ) / 3;
= + (- + ) / 3;
= + 2 * (- + ) / 3;
= + 2 * (- + ) / 3;
= ( - ) / 2 - ( - )*sqrt() / 2 + ;
= ( - ) / 2 + ( - )*sqrt() / 2 + ;
drawkoch(p1, p3, n - 1);
drawkoch(p3, p5, n - 1);
drawkoch(p5, p4, n - 1);
drawkoch(p4, p2, n - 1);
}
if (n == 0)
exit(0);
}
void display(void){
glClear(GL_COLOR_BUFFER_BIT);
pt p1, p2, p3;
= 30;
= 30;
= 110;
= 30;
= 70;
= 30 + 40 * sqrt();
int n;
do{ //循环改变迭代次数
glClear(GL_COLOR_BUFFER_BIT);
图形学上机实验报告 来自淘豆网www.taodocs.com转载请标明出处.