使用C++生成一个动态爱心
时间: 2024-04-29 16:22:24 浏览: 102
动态的爱心源码 c++的
以下是使用C++和OpenGL生成动态爱心的示例代码:
```c++
#include <GL/glut.h>
GLfloat angle = 0.0;
void drawHeart() {
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.0, 0.0);
glVertex2f(0.0, 1.0);
glVertex2f(-1.0, 0.0);
glVertex2f(0.0, -1.0);
glColor3f(1.0, 0.0, 0.0);
glVertex2f(0.0, -1.0);
glVertex2f(1.0, 0.0);
glVertex2f(0.0, 1.0);
glEnd();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(angle, 0.0, 1.0, 0.0);
drawHeart();
glPopMatrix();
glFlush();
glutSwapBuffers();
}
void reshape(int w, int h) {
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat)w/(GLfloat)h, 1.0, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}
void idle() {
angle += 0.1;
if (angle > 360.0) {
angle -= 360.0;
}
glutPostRedisplay();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutCreateWindow("Dynamic Heart");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);
glutMainLoop();
return 0;
}
```
代码中使用了OpenGL库来生成图形,首先定义了一个绘制心形的函数`drawHeart()`,然后在`display()`函数中对心形进行旋转,并调用`drawHeart()`函数绘制。`reshape()`函数用于处理窗口大小改变,`idle()`函数用于控制心形的旋转。
编译运行后,会出现一个窗口,其中有一个动态的红色心形旋转。
阅读全文