opengl 五角星画法 源代码
生活随笔
收集整理的這篇文章主要介紹了
opengl 五角星画法 源代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設五角星的五個頂點分布位置關系A,B,C,D,E(順時針順序)
首先,根據余弦定理列方程,計算五角星的中心到頂點的距離a
(假設五角星對應正五邊形的邊長為1.0)
a?=?1?/?(2-2*cos(72*Pi/180));
然后,根據正弦和余弦的定義,計算B的x坐標bx和y坐標by,以及C的y坐標(五角星的中心在坐標原點)
bx?=?a?*?cos(18?*?Pi/180);
by?=?a?*?sin(18?*?Pi/180);
cy?=?-a?*?cos(18?*?Pi/180);
準備條件完成!
#include <math.h>
const GLfloat Pi = 3.1415926536f;
void five_point_star(void)
{
??? GLfloat a = 1 / (2-2*cos(72*Pi/180));
??? GLfloat bx = a * cos(18 * Pi/180);
??? GLfloat by = a * sin(18 * Pi/180);
??? GLfloat cy = -a * cos(18 * Pi/180);
?? ?//表示5個點
??? GLfloat
??????? PointA[2] = { 0, a },
??????? PointB[2] = { bx, by },
??????? PointC[2] = { 0.5, cy },
??????? PointD[2] = { -0.5, cy },
??????? PointE[2] = { -bx, by };
??? glClear(GL_COLOR_BUFFER_BIT);
??? // 按照A->C->E->B->D->A的順序,可以一筆將五角星畫出
?? ?glColor3f(0.0f,1.0f,0.0f);
??? glBegin(GL_LINE_LOOP);
??????? glVertex2fv(PointA);
??????? glVertex2fv(PointC);
??????? glVertex2fv(PointE);
??????? glVertex2fv(PointB);
??????? glVertex2fv(PointD);
??? glEnd();
??? glFlush();
}
int main(int argc,char *argv[]){
?? ?glutInit(&argc,argv);
?? ?glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
?? ?glutInitWindowPosition(100,100);
?? ?glutInitWindowSize(400,400);
?? ?glutCreateWindow("五角星");
?? ?glutDisplayFunc(&five_point_star);
?? ?glutMainLoop();
?? ?return 0;
}
總結
以上是生活随笔為你收集整理的opengl 五角星画法 源代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: es---elasticsearch-篇
- 下一篇: 人机交互技术概论