OpenGL中的三角函数的用法 5

以下是绘制盘旋的飞机的部分代码,及绘制圆弧的代码,其中的三角函数的用法让我有点晕,哪位大侠帮我指点一下!不胜感激!!!voidCWelcomeView::myplane(... 以下是绘制盘旋的飞机的部分代码,及绘制圆弧的代码,其中的三角函数的用法让我有点晕,哪位大侠帮我指点一下! 不胜感激!!!
void CWelcomeView::myplane()
{
glPushMatrix();
glTranslatef(ABS(rx)*cosf((rangplane2+rangx)*6.283f/360.0f),
0.0f,
-ABS(rx)*sinf((rangplane2+rangx)*6.283f/360.0f));
glRotated((rangplane2+rangx),0.0,1.0,0.0);
glRotated(-90.0f,0.0,1.0,0.0);
glRotated(rangx,1.0,0.0,0.0);
glShadeModel(GL_SMOOTH);
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
for(int i=0;i<2;i++){
glBegin(GL_TRIANGLE_FAN);
glColor3f(1.0f,0.5f,1.0f);
glVertex3f(-0.18f,0.0f,0.0f);

glColor3f(1.0f,0.5f,1.0f);
glVertex3f(0.1f,0.0f,-0.1f);

glColor3f(1.0f,0.8f,1.0f);
glVertex3f(0.09f,0.0f,-0.01f);

glColor3f(1.0f,0.3f,1.0f);
glVertex3f(0.08f,-0.05f,0.0f);

glColor3f(1.0f,1.0f,1.0f);
glVertex3f(0.09f,0.0f,0.01f);

glColor3f(1.0f,1.0f,1.0f);
glVertex3f(0.1f,0.0f,0.1f);
glEnd();
glShadeModel(GL_FLAT);
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
};
glPopMatrix();

}

void CWelcomeView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent==1){
if(rangflykey){
if(ABS(rangx)==26.0f){rangxkey=-rangxkey;};
rangx=rangx+0.5f*rangxkey;
if(ABS(rx)>=0.8f){rxkey=-rxkey;}else{
if(ABS(rx)<=0.5f){rxkey=-rxkey;}};
rx=rx-0.001f*rxkey;
if(rangplane2==360.0f){rangplane2=5.0f;}else{rangplane2=rangplane2+5.0f;};
};
if(ABS(rangfly)==90.0f){rangfly=-rangfly;};
rangfly=rangfly+30.0f;
Invalidate(FALSE);
};

CView::OnTimer(nIDEvent);
}
绘制彩虹圆弧代码:

void CPlmyView::mylines()
{

glPushMatrix();
glTranslatef(0.2f,-1.1f,0.0f);

for(float fk=0 ;fk<60;fk++){

glColor3f((2.0f-fk/15)*(1.0f-fk/35),
-(1.0f-fk/5)*(1.0f-fk/45),
-(1.0f-fk/15)*(1.0f-fk/80));

for(float fj=0 ;fj<20;fj++){
glBegin(GL_LINES);
glVertex3f((1.8f-0.0025f*fk)*cosf(0.8f+0.1f*fj),
(1.8f-0.0025f*fk)*sinf(0.8f+0.1f*fj)-fk/600,
0.0f);
glVertex3f((1.8f-0.0025f*fk)*cosf(0.8f+0.1f*(fj+1)),
(1.8f-0.0025f*fk)*sinf(0.8f+0.1f*(fj+1))-fk/600,
0.0f);
glEnd();
};
};

其中的三角函数怎让我很郁闷!,哪位好心的高手帮解释一下,详细点啊!谢谢
其中ABS是定义的取绝对值函数!
展开
 我来答
火驹
2010-03-15 · TA获得超过1447个赞
知道小有建树答主
回答量:6294
采纳率:0%
帮助的人:1754万
展开全部
glBegin(GL_TRIANGLE_FAN); 开始绘制三角形
glColor3f(1.0f,0.5f,1.0f); 设置顶点颜色
glVertex3f(-0.18f,0.0f,0.0f); 绘制一个点

三角形当然需要3个点了,程序自动将相连的3个点作为三角形的顶点。

比如调用了6次glVertex3f函数,那么将绘制2个三角形。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式