Friday, May 13, 2011

3、圆,五角星,正弦曲线的画法 4、Opengl中的RGBA

3、圆,五角星,正弦曲线的画法
2009-07-04 09:40
1、圆的画法:比较耗资源,低效率。
通过正多边的不断细化实现,正4,5,6……n;即近似圆。
for( i=0; i<n; i++ )
glVertex2f( R*cos(2*Pi/n*i), R*sin(2*Pi/n*i) );
glEnd();//计算多边形个点的坐标值即可(n边形)
2、画五角星:已知正5边形的长度,计算五角星的中心到顶点的距离,再根据对称性和正余炫关系计算个点坐标。
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(36*pi/180 );
GLfloat cx=a*sin(36*pi/180 );
GLfloat
PointA[2] ={ 0, a },
PointB[2] ={ bx, by },
PointC[2] ={ cx, cy },
PointD[2] ={ -cx, cy },
PointE[2] ={ -bx, by };
glBegin( GL_LINE_LOOP );
glVertex2fv( PointA );
glVertex2fv( PointC );
glVertex2fv( PointE );
glVertex2fv( PointB );
glVertex2fv( PointD );
glEnd();
//画正弦函数的图形
glBegin( GL_LINES );
glVertex2f( -1.0f, 0.0f );
glVertex2f( 1.0f, 0.0f );//X轴
glVertex2f( 0.0f, 1.0f );
glVertex2f( 0.0f, -1.0f );//Y轴
glEnd();
glBegin( GL_LINE_STRIP );
for( x=-1.0f/factor; x<1.0f/factor; x+= 0.01f )
{
glVertex2f( x*factor, sin(x)*factor );
}
glEnd();




4、Opengl中的RGBA


glColor3*、glColor4*系列函数,在参数类型不同时,表示“最大”颜色的值也不同。
采用f和d做后缀的函数,以1.0表示最大的使用。
采用b做后缀的函数,以127表示最大的使用。
采用ub做后缀的函数,以255表示最大的使用。
采用s做后缀的函数,以32767表示最大的使用。
采用us做后缀的函数,以65535表示最大的使用。

No comments:

Post a Comment