OpengL画cos,sin,三角形等图形


void CShape2D::drawSquare(void) {
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_LINE_STRIP);
    glColor3f(0.0f, 0.0f, 1.0f);
    glVertex2f(-0.5f,  0.5f);//
    glVertex2f(0.5f,   0.5f);//

    glVertex2f(0.5f,   0.5f);//
    glVertex2f(0.5f,  -0.5f);//

    glVertex2f(0.5f,  -0.5f);//
    glVertex2f(-0.5f, -0.5f);//

    glVertex2f(-0.5f, -0.5f);//
    glVertex2f(-0.5f,  0.5f);//
    glEnd();
    glFlush();
}

void CShape2D::drawTriangle(void) {
    glClear(GL_COLOR_BUFFER_BIT);

    glBegin(GL_LINES);
    glPointSize(10.0f);
    glColor3f(0.0f, 1.0f, 0.0f);
    glVertex2f(-1.0f, 0.0f);//动态绘制x坐标
    glVertex2f(beginXpoint_ += 0.01f, 0.0f);
    glVertex2f(0.0f,1.0f);//动态绘制y坐标
    glVertex2f(0.0f,beginYpoint_ -= 0.01f);
    glEnd();
    //GL_TRIANGLES:连接由3个点组成的三角形,4,5...都不能组成三角形(也就是除以3除不尽)
    //GL_TRIANGLE_STRIP:不闭合,相邻坐标连接,但首尾不连接
    //GL_TRIANGLE_FAN:相邻坐标连接,但闭合首尾连接
    glBegin(GL_TRIANGLE_FAN);
    glPointSize(10.0f);
    glColor3f(0.0f, 1.0f, 0.0f);
    glVertex2f(-0.75f,  0.53f);//
    glVertex2f(0.15f,   -0.57f);//
    glVertex2f(-0.35f,  -0.8f);//
    glVertex2f(0.35f,   0.58f);//
    glEnd();
    glFlush();
    glutSwapBuffers();
}

void CShape2D::drawRectangle(void) {
    glClear(GL_COLOR_BUFFER_BIT);
    //GL_QUADS:连接由3个点组成的三角形,1,2,3,5等都不能组成三角形(也就是除以4除不尽)
    //GL_QUAD_STRIP:不闭合
    //GL_POLYGON:   闭合

    glBegin(GL_LINES);
    glPointSize(10.0f);
    glColor3f(0.0f, 1.0f, 0.0f);
    glVertex2f(-1.0f, 0.0f);//动态绘制x坐标
    glVertex2f(beginXpoint_ += 0.01f, 0.0f);
    glVertex2f(0.0f,1.0f);//动态绘制y坐标
    glVertex2f(0.0f,beginYpoint_ -= 0.01f);
    glEnd();

    glBegin(GL_POLYGON);
    glColor3f(1.0f, 0.0f, 0.0f);
    glVertex2f(0.35f,   -0.57f);//
    glVertex2f(-0.55f,   -0.57f);//
    glVertex2f(-0.25f,   0.20f);//
    glVertex2f(0.15f,   0.57f);//
    glVertex2f(0.3f,   0.78f);//
    glEnd();
    glFlush();
    glutSwapBuffers();
}

void CShape2D::drawSin(void){
    /*
    *角度A1转换弧度A2:
    A2=A1*PI/180
    弧度A2转换角度A1:
    A1=A2*180/PI
    */
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_LINES);
    glColor3f(0.0f, 1.0f, 0.0f);
    glVertex2f(-1.0f, 0.0f);//动态绘制x坐标
    glVertex2f(beginXpoint_ += 0.01f, 0.0f);
    glVertex2f(0.0f,1.0f);//动态绘制y坐标
    glVertex2f(0.0f,beginYpoint_ -= 0.01f);
    glEnd();

    glBegin(GL_LINES);
    glColor3f(1.0f, 0.0f, 0.0f);
    if(beginPoint_.x <= 2.0f * Pi) {
        for(GLfloat fVaule = 0; fVaule <= beginPoint_.x; fVaule += 0.00001f) {
            glVertex2f(fVaule, sin(fVaule * 180 / Pi)); 
        }
        beginPoint_.x += 0.01f;
    }
    glEnd();
    glFlush();
    glutSwapBuffers();
}

void CShape2D::drawCos(void) {
    /*
    *角度A1转换弧度A2:
    A2=A1*PI/180
    弧度A2转换角度A1:
    A1=A2*180/PI
    */
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_LINES);
    glColor3f(0.0f, 1.0f, 0.0f);
    glVertex2f(-1.0f, 0.0f);//动态绘制x坐标
    glVertex2f(beginXpoint_ += 0.01f, 0.0f);
    glVertex2f(0.0f,1.0f);//动态绘制y坐标
    glVertex2f(0.0f,beginYpoint_ -= 0.01f);
    glEnd();

    glBegin(GL_LINES);
    glColor3f(1.0f, 0.0f, 0.0f);
    if(beginPoint_.x <= 2.0f * Pi) {
        for(GLfloat fVaule = 0; fVaule <= beginPoint_.x; fVaule += 0.00001f) {
            glVertex2f(fVaule, cos(fVaule * 180 / Pi)); 
        }
        beginPoint_.x += 0.01f;
    }
    glEnd();
    glFlush();
    glutSwapBuffers();
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值