zoukankan      html  css  js  c++  java
  • 实验三 OpenGL几何变换

    一、实验目的和要求
    1. 理解掌握一个OpenGL程序平移、旋转、缩放变换的方法。
    二、实验内容及主要步骤代码
    (1)阅读实验原理,运行示范实验代码,掌握OpenGL程序平移、旋转、缩放变换的方法;
    (2)根据示范代码,尝试完成实验作业;
    (3)形成以下图形,如下图所示。
    主要步骤代码:
    (1)示范实验源代码
    voiddrawSquare(void){
        glBegin(GL_POLYGON);
        glVertex2f(-1.0f,-1.0f);
        glVertex2f(1.0f,-1.0f);
        glVertex2f(1.0f,1.0f);
        glVertex2f(-1.0f,1.0f);
        glEnd();
    }
    void myDraw(void){
        glClear(GL_COLOR_BUFFER_BIT);
        glLoadIdentity();
        glPushMatrix();
        glTranslatef(0.0f,2.0f,0.0f);
        glScalef(3.0,0.5,1.0);
        glColor3f(1.0,0.0,0.0);
    drawSquare();
        glPopMatrix();
        glPushMatrix();
        glTranslatef(-3.0,0.0,0.0);
        glPushMatrix();
        glRotatef(45.0,0.0,0.0,1.0);
        glColor3f(0.0,1.0,0.0);
        drawSquare();
        glPopMatrix();
        glTranslatef(3.0,0.0,0.0);
        glPushMatrix();
        glRotatef(45.0,0.0,0.0,1.0);
        glColor3f(0.0,0.7,0.0);
        drawSquare();
        glPopMatrix();
        glTranslatef(3.0,0.0,0.0);
        glPushMatrix();
        glRotatef(45.0,0.0,0.0,1.0);
        glColor3f(0.0,0.4,0.0);
        drawSquare();
        glPopMatrix();
        glPopMatrix();  
        glTranslatef(0.0,-3.0,0.0);
        glScalef(4.0,1.5,1.0);
        glColor3f(0.0,0.0,1.0);
        drawSquare();
        glFlush();
    }
     
    三、实验作业
    1.根据示范程序,能否在示范代码基础上修改形成以下图形?如下图所示,写出主要的步骤和代码。(不需要将整个程序都写下来)
    答:
    (1)源代码:
    voiddrawDiamond(){
        glBegin(GL_POLYGON);
        glVertex2f(0.0f,0.0f);
        glVertex2f(1.0f,2.0f);
        glVertex2f(0.0f,4.0f);
        glVertex2f(-1.0f,2.0f);
        glEnd();
    }
    voidmyDisplay(){
        glClear(GL_COLOR_BUFFER_BIT);
        glLoadIdentity();
        glColor3f(1.0,0.0,0.0);
        drawDiamond();
        glRotatef(120.0,0.0,0.0,1.0);
        glColor3f(0.0,1.0,0.0);
        drawDiamond();
        glRotatef(120.0,0.0,0.0,1.0);
        glColor3f(0.0,0.0,1.0);
        drawDiamond();
        glFlush();
    }
    (2)运行结果:
  • 相关阅读:
    k8s之创建etcd集群
    完美解决微信video视频隐藏控件和内联播放问题
    JS工具库封装:Video转换成Canvas
    H5 video 标签 播放事件
    iSlider 如丝般高性能H5全屏滑动组件
    设计模式之 适配器模式
    c++ STL常用算法使用方法
    快速排序与二分查找
    CLOSE_WAIT TIME_WAIT
    erlang erl文件编译的三种脚本
  • 原文地址:https://www.cnblogs.com/mallocxw/p/8268809.html
Copyright © 2011-2022 走看看