📄 snow.txt
字号:
#include<windows.h
#include<GL/glut.h
void myinit()
{ glClearColor(0.1,0.0,0.5,0.2);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,500.0,0.0,500.0);
glMatrixMode(GL_MODELVIEW);
/*visit CGPAD.COM for more information */
}void drawline(double x1,double y1,double ?x2,double ?y2,int k)
{ /*visit CGPAD.COM for more information */
double ?one_third_x=(2.0*x1+x2)/3.0; //点(x1,y1)与点(x2,y2)连线的1/3处x轴的坐标
double ?one_third_y=(2.0*y1+y2)/3.0; //点(x1,y1)与点(x2,y2)连线的1/3处y轴的坐标
double ?two_third_x=(2.0*x2+x1)/3.0; //点(x1,y1)与点(x2,y2)连线的2/3处x轴的坐标
double ?two_third_y=(2.0*y2+y1)/3.0; //点(x1,y1)与点(x2,y2)连线的2/3处y轴的坐标
double ?m_point_x = 0.2887*(double)(y1-y2)+(x1+x2)/2.0; //突凸出的顶点的x轴的坐标
double ?m_point_y = 0.2887*(double)(x2-x1)+(y1+y2)/2.0; //突凸出的顶点的y轴的坐标
if(k==0)
{ //递归终止
glColor3f(1.0,m_point_x/400.0,m_point_y/400.0); ?//颜色随位置变化
/*visit CGPAD.COM for more information */
glBegin(GL_LINE_STRIP);
glVertex2d(x1,y1);
glVertex2d(one_third_x,one_third_y);
glVertex2d(m_point_x,m_point_y);
glVertex2d(two_third_x,two_third_y);
glVertex2d(x2,y2);
glEnd();
/*visit CGPAD.COM for more information */
} else //递归调用
{ drawline(x1,y1,one_third_x,one_third_y,k-1);
drawline(one_third_x,one_third_y,m_point_x,m_point_y,k-1);
drawline(m_point_x,m_point_y,two_third_x,two_third_y,k-1);
drawline(two_third_x,two_third_y,x2,y2,k-1);
/*visit CGPAD.COM for more information */
} glFlush();
}void ?display(void)
{ glClear(GL_COLOR_BUFFER_BIT);
drawline(100.0,150.0,250.0,410.0,8); //最大三角形得第一条边构造
drawline(250.0,410.0,400.0,150.0,8); //第二条边
drawline(400.0,150.0,100.0,150.0,8); //第三条边
glFlush(); /*visit CGPAD.COM for more information */
}void main(int argc,char **argv)
{ glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("snow");
glutDisplayFunc(display);
myinit(); /*visit CGPAD.COM for more information */
glutMainLoop();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -