用刚学的OpenGL画五角星

       这学期开了门《计算机图形学》,学了三周了,学会一些绘图的方法。 实验要求绘制一个六边形,我想绘制一个五角星。

     算出每个顶点的坐标就可以了,然后用GL_PLOYGON模式将几个顶点连接就可以了。

    不过坐标千万千万要表示对!!! 认真点!!! 否则浪费的时间会很多!  至少影响了我的睡眠,昨晚到三点才睡,今天和别人交流后发现自己的方法没有错,只是不小心忘了給五角星下面的两个点纵坐标加负号了.


   参照左边草图在纸上表示出了各个顶点的坐标。


最后总算出来了结果。


贴出代码:


#include <GL/glut.h>
#include <cmath>
void Display(void)
{
//表示出各个点的坐标,设半径 R=0.2
const double PI = acos(0.) * 2;
double L1=0.2*cos(36*PI/180);
double L2=0.2*sin(36*PI/180);
double L3=0.2*cos(72*PI/180);
double L4=0.2*sin(72*PI/180);
double L5=L2*tan(72*PI/180);
double L6=L2/cos(72*PI/180);
double L7=L6*sin(54*PI/180);
double L8=L6*cos(54*PI/180)+0.2;
 glClearColor(1.0,0.0,0.0,0.0);
 glClear(GL_COLOR_BUFFER_BIT);
 glBegin(GL_POLYGON);     //设置绘制类型为多边形
 
  glColor3f(1.0f,1.0f,0.0f);
  glVertex2f(0.0f,0.0f); 
  glVertex2f(0.0f,L5+L1);    //1
  glVertex2f(L2,L1);    //2
  glVertex2f(L2+L6,L1);    //3
  glVertex2f(L4,-L3);    //4
  glVertex2f(L7,-L8);    //5
  glVertex2f(0.0f,-0.2f);    //6
  glVertex2f(-L7,-L8);    //7
  glVertex2f(-L4,-L3);   //8
  glVertex2f(-L2-L6,L1);   //9
  glVertex2f(-L2,L1);   //10
  glVertex2f(0.0f,L5+L1);
 glEnd();
 glFlush();
}
int main(int argc,char *argv[])
{


 glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
 glutInitWindowPosition(100,100);
 glutInitWindowSize(700,700);
 glutCreateWindow("Honor Star");
 glutDisplayFunc(Display);
 glutMainLoop();
 return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值