opengl 五角星画法 源代码
2013-11-03 11:29
141 查看
设五角星的五个顶点分布位置关系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;
}
首先,根据余弦定理列方程,计算五角星的中心到顶点的距离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学习入门之模拟器利用element方法绘制五角星
- 用刚学的OpenGL画五角星
- OpenGL 超级宝典源代码下载地址
- JAVA的OPENGL,JOGL入门实例----碰撞移动的正方体 (配置+源代码)
- OpenGL源代码之给多边形添加颜色
- OpenGL源代码之四 旋转
- [OpenGL(C++)] - (开源)3D 游戏界的大牛人 John Carmack 终于放出quakeIII(雷神之锤3)的源代码
- OpenGL 画出五角星
- OpenGL二 - 画一个五角星 pentagram
- OpenGL画五角星
- OpenGL(一)绘制圆、五角星、正弦曲线
- JAVA的OPENGL,JOGL入门实例----不断变色的点阵 (源代码)
- OpenGL源代码之五绘制3D图形
- 使用opengl的geometry总结及其源代码
- OpenGL 超级宝典(第五版) 源代码的问题(一)
- OpenGL源代码之六纹理映射
- JAVA的OPENGL,JOGL入门实例----不断变色的点阵 (源代码)
- android 五角星画法 五角星计算公式
- OpenGL - 国旗绘制(五角星绘制)
- OpenGL_Programming_Guide 7th 源代码网址