Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 像真正的风力涡轮机一样旋转对象 #包括 #包括 #包括“glut.h” void init(){ glClearColor(0.0,0.0,0.0,0.0); glMatrixMode(GL_投影); gluOrtho2D(0.0400,0.0300.0); } 真空抽油机(){ //画塔 glBegin(GL_行); GL3F(1.0,1.0,1.0); glVertex2f(160,40); glVertex2f(163180); glVertex2f(160,40); glVertex2f(175,40); glVertex2f(175,40); glVertex2f(172180); 格伦德(); //旋转对象 glPushMatrix(); glRotatef(100,0,1,0); //拔出第一个转子叶片 glBegin(GL_三角形); GL3F(1.0,1.0,1.0); glVertex2f(173180); glVertex2f(163180); glVertex2f(168270); 格伦德(); //拔出第二个转子叶片 glBegin(GL_三角形); GL3F(1.0,1.0,1.0); glVertex2f(170174); glVertex2f(175180); glVertex2f(247140); 格伦德(); //拔出第三个转子叶片 glBegin(GL_三角形); GL3F(1.0,1.0,1.0); glVertex2f(162180); glVertex2f(167174); glVertex2f(88140); 格伦德(); 中间的圆圈 浮动θ; glBegin(GL_多边形); GL3F(1.0,1.0,1.0); 对于(int i=0;i_C++_Opengl_Glut_Coordinate Transformation_Opengl Compat - Fatal编程技术网

C++ 像真正的风力涡轮机一样旋转对象 #包括 #包括 #包括“glut.h” void init(){ glClearColor(0.0,0.0,0.0,0.0); glMatrixMode(GL_投影); gluOrtho2D(0.0400,0.0300.0); } 真空抽油机(){ //画塔 glBegin(GL_行); GL3F(1.0,1.0,1.0); glVertex2f(160,40); glVertex2f(163180); glVertex2f(160,40); glVertex2f(175,40); glVertex2f(175,40); glVertex2f(172180); 格伦德(); //旋转对象 glPushMatrix(); glRotatef(100,0,1,0); //拔出第一个转子叶片 glBegin(GL_三角形); GL3F(1.0,1.0,1.0); glVertex2f(173180); glVertex2f(163180); glVertex2f(168270); 格伦德(); //拔出第二个转子叶片 glBegin(GL_三角形); GL3F(1.0,1.0,1.0); glVertex2f(170174); glVertex2f(175180); glVertex2f(247140); 格伦德(); //拔出第三个转子叶片 glBegin(GL_三角形); GL3F(1.0,1.0,1.0); glVertex2f(162180); glVertex2f(167174); glVertex2f(88140); 格伦德(); 中间的圆圈 浮动θ; glBegin(GL_多边形); GL3F(1.0,1.0,1.0); 对于(int i=0;i

C++ 像真正的风力涡轮机一样旋转对象 #包括 #包括 #包括“glut.h” void init(){ glClearColor(0.0,0.0,0.0,0.0); glMatrixMode(GL_投影); gluOrtho2D(0.0400,0.0300.0); } 真空抽油机(){ //画塔 glBegin(GL_行); GL3F(1.0,1.0,1.0); glVertex2f(160,40); glVertex2f(163180); glVertex2f(160,40); glVertex2f(175,40); glVertex2f(175,40); glVertex2f(172180); 格伦德(); //旋转对象 glPushMatrix(); glRotatef(100,0,1,0); //拔出第一个转子叶片 glBegin(GL_三角形); GL3F(1.0,1.0,1.0); glVertex2f(173180); glVertex2f(163180); glVertex2f(168270); 格伦德(); //拔出第二个转子叶片 glBegin(GL_三角形); GL3F(1.0,1.0,1.0); glVertex2f(170174); glVertex2f(175180); glVertex2f(247140); 格伦德(); //拔出第三个转子叶片 glBegin(GL_三角形); GL3F(1.0,1.0,1.0); glVertex2f(162180); glVertex2f(167174); glVertex2f(88140); 格伦德(); 中间的圆圈 浮动θ; glBegin(GL_多边形); GL3F(1.0,1.0,1.0); 对于(int i=0;i,c++,opengl,glut,coordinate-transformation,opengl-compat,C++,Opengl,Glut,Coordinate Transformation,Opengl Compat,您需要一个用于风力涡轮机当前角度(当前角度)和每帧旋转角度(步进角度)的变量。此外,您还必须知道风力涡轮机的中心(中心,中心): 若要围绕枢轴旋转,必须定义模型矩阵,该矩阵由反转枢轴置换,然后旋转并最终变换回枢轴。旋转轴是z轴(0,0,1),因为几何体绘制在xy平面中: float current_angle = 0.0f; float step_angle = 0.2f; float center_x = 168.0f; float center_y = 180.0f; 预览: 功能的完整

您需要一个用于风力涡轮机当前角度(
当前角度
)和每帧旋转角度(
步进角度
)的变量。此外,您还必须知道风力涡轮机的中心(
中心
中心
):

若要围绕枢轴旋转,必须定义模型矩阵,该矩阵由反转枢轴置换,然后旋转并最终变换回枢轴。旋转轴是z轴(0,0,1),因为几何体绘制在xy平面中:

float current_angle = 0.0f;
float step_angle = 0.2f;
float center_x = 168.0f;
float center_y = 180.0f;
预览:

功能的完整代码<代码>绘图涡轮机:

glTranslatef( center_x, center_y, 0.0f );
glRotatef(current_angle, 0, 0, 1);
current_angle += step_angle;
glTranslatef(-center_x, -center_y, 0.0f );
void drawturne(){
//画塔
glBegin(GL_行);
GL3F(1.0,1.0,1.0);
glVertex2f(160,40);
glVertex2f(163180);
glVertex2f(160,40);
glVertex2f(175,40);
glVertex2f(175,40);
glVertex2f(172180);
格伦德();
//旋转对象
glPushMatrix();
glTranslatef(中心x,中心y,0.0f);
glRotatef(当前_角,0,0,1);
当前_角度+=步进_角度;
glTranslatef(-center_x,-center_y,0.0f);
//拔出第一个转子叶片
glBegin(GL_三角形);
GL3F(1.0,1.0,1.0);
glVertex2f(173180);
glVertex2f(163180);
glVertex2f(168270);
格伦德();
//拔出第二个转子叶片
glBegin(GL_三角形);
GL3F(1.0,1.0,1.0);
glVertex2f(170174);
glVertex2f(175180);
glVertex2f(247140);
格伦德();
//拔出第三个转子叶片
glBegin(GL_三角形);
GL3F(1.0,1.0,1.0);
glVertex2f(162180);
glVertex2f(167174);
glVertex2f(88140);
格伦德();
中间的圆圈
浮动θ;
glBegin(GL_多边形);
GL3F(1.0,1.0,1.0);
对于(int i=0;i
glTranslatef( center_x, center_y, 0.0f );
glRotatef(current_angle, 0, 0, 1);
current_angle += step_angle;
glTranslatef(-center_x, -center_y, 0.0f );
void drawTurbine() {
    // draw the tower
    glBegin(GL_LINES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(160, 40);
    glVertex2f(163, 180);
    glVertex2f(160, 40);
    glVertex2f(175, 40); 
    glVertex2f(175, 40);
    glVertex2f(172, 180);
    glEnd();
    // Rotate object
    glPushMatrix();

    glTranslatef( center_x, center_y, 0.0f );
    glRotatef(current_angle, 0, 0, 1);
    current_angle += step_angle;
    glTranslatef(-center_x, -center_y, 0.0f );

    // draw first rotor blade
    glBegin(GL_TRIANGLES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(173, 180);
    glVertex2f(163, 180);
    glVertex2f(168, 270);
    glEnd();
    // draw second rotor blade
    glBegin(GL_TRIANGLES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(170, 174);
    glVertex2f(175, 180);
    glVertex2f(247, 140);
    glEnd();
    // draw third rotor blade
    glBegin(GL_TRIANGLES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(162, 180);
    glVertex2f(167, 174);
    glVertex2f(88, 140);
    glEnd();
    // circle in the middle
    float theta;
    glBegin(GL_POLYGON);
    glColor3f(1.0, 1.0, 1.0);
    for (int i = 0; i <= 360; i++) {
           theta = i * 3.142 / 180;
           glVertex2f(168 + 7 * cos(theta), 180 + 6.5 * sin(theta));
    }
    glEnd();
    glPopMatrix();
}