日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

opengl 五角星画法 源代码

發布時間:2023/12/18 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 <GL/glut.h>
#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 五角星画法 源代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。