微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在opengl中实现圆填充算法?

如何解决如何在opengl中实现圆填充算法?

| 它的格式应为“ 0”。     

解决方法

使用
GL_TRIANGLE_FAN
下垂您的中心点,然后降低周边顶点:
void glCircle( float x,float y,float r,bool filled = true,unsigned int subdivs = 20 ) {
    if( filled ) {
        glBegin( GL_TRIANGLE_FAN );
        glVertex2f( x,y );
    } else {
        glBegin( GL_LINE_STRIP );
    }

    for( unsigned int i = 0; i <= subdivs; ++i ) {
        float angle = i * ((2.0f * 3.14159f) / subdivs);
        glVertex2f( x + r * cos(angle),y + r * sin(angle) );
    }

    glEnd();
}
    ,有一个
gluDisk
,但签名与您给的有点不同。它始终使磁盘居中于原始位置,并且如果您不在磁盘上,则希望您使用
glTranslate
。它在其他方面也更具通用性-绘制的磁盘的中心可能有一个孔(您显然并不在意),并且可以绘制一个“ loops”参数一次有多个磁盘。这使得它可以适应您所要求的工作,只比您想要的多一点:
void circle(float xcenter,float ycenter,float radius) {
    GLUquadric* quad = gluNewQuadric();

    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();
    glTranslatef(xcenter,ycenter);

    gluDisk(quad,radius,256,1);
    glPopMatrix();
    gluDeleteQuadric(quad);
}
我想说的是正确的,因为它很容易质疑像@genpfault所说的那样做和自己画一个圆形三角形风扇是否更容易。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。