資源簡介
使用opengl 實現(xiàn)雪花的模型,采用c++代碼實現(xiàn),計算機圖形學,大作業(yè)可以用的
代碼片段和文件信息
#ifdef?__APPLE__
#include?
#else
#include?
#endif
typedef?GLfloat?point2[2];
GLfloat?v[3][2]={{-1.0?-0.58}?{1.0?-0.58}?{0.0?1.15}};
int?n=5;
//繪制一條邊上的koch線
void?koch(point2?a?point2?b?point2?c?int?m)
{
??????point2?a1b?a2b;//ab邊上的兩個三等分點
??????point2?a1c?b1c;//ac,?bc邊上的第一個三等分點
??????point2?amb;?????//等邊三角形的另一個頂點
??????//a-b邊上的2個三等分點
??????a1b[0]?=?(2*a[0]+b[0])/3;
??????a1b[1]?=?(2*a[1]+b[1])/3;
??????a2b[0]?=?(a[0]+2*b[0])/3;
??????a2b[1]?=?(a[1]+2*b[1])/3;
??????//a-c邊上的1個三等分點
??????a1c[0]?=?(2*a[0]+c[0])/3;
??????a1c[1]?=?(2*a[1]+c[1])/3;
??????//b-c邊上的1個三等分點
??????b1c[0]?=?(2*b[0]+c[0])/3;
??????b1c[1]?=?(2*b[1]+c[1])/3;
??????//計算ab邊上的第一個等邊三角形的第三個頂點也可以通過a2b、b1c來求amb
??????amb[0]?=?2*a1b[0]?-?a1c[0];
??????amb[1]?=?2*a1b[1]?-?a1c[1];
??????if(m?>?1)
??????{
?????????koch(a?a1b??a1c?m-1);
?????????koch(a1b?amb?a2b?m-1);
?????????koch(amb?a2b?a1b?m-1);
?????????koch(a2b?b?b1c?m-1);
??????}
??????else
????
評論
共有 條評論