• 大小: 42KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: 其他
  • 标签: opengl  

资源简介

根据计算机图形学的基本原理绘制的雪人程序,有在linux平台的makefile

资源截图

代码片段和文件信息

#include “Camera.h“

#include 
#include 
#include 

using namespace std;

Camera::Camera()
{
    _world_BLx = 0;
    _world_BLy = 0;
    _world_W = 1;
    _world_H = 1;
    _window_W = 100;
    _window_H = 100;
    _fb_W = 100;
    _fb_H = 100;
    _window = NULL;
}

Camera::Camera(double world_BLx double world_BLy
                   double world_W double world_H
               int window_W int window_H
               GLFWwindow* window)
{
    _world_BLx = world_BLx;
    _world_BLy = world_BLy;
    _world_W = world_W;
    _world_H = world_H;
    _window_W = window_W;
    _window_H = window_H;
    _fb_W = window_W;
    _fb_H = window_H;
    _window = window;
}

void Camera::mouse_to_world(int mx int my  double &wx double &wy)
{
    int vx = mx;
    int vy = (int)(_window_H - my);

    viewport_to_world(vx vy wx wy);
}

void Camera::viewport_to_world(int vx int vy  double &wx double &wy)
{
    double x_fraction = vx / _window_W;
    double y_fraction = vy / _window_H;

//    cout << “fractions: “ << x_fraction << “ “ << y_fraction << “\n“;

    wx = _world_BLx + x_fraction * _world_W;
    wy = _world_BLy + y_fraction * _world_H;
}

void Camera::world_to_viewport(double wx double wy
                               int& vx int& vy) {
    vx = (int)((wx - _world_BLx) / _world_W * _window_W + 0.5);
    vy = (int)((wx - _world_BLy) / _world_H * _window_H + 0.5);
}

void Camera::begin_drawing()
{
    glViewport(00 (int)_fb_W (int)_fb_H);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    double half_W = _world_W / 2;
    double half_H = _world_H / 2;
    glOrtho(-half_W +half_W
            -half_H +half_H
            0 100);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslated(-(_world_BLx + half_W)
                 -(_world_BLy + half_H)
                 -1);
}

void Camera::check_resize()
{
    int width height;

    glfwGetframebufferSize(_window &width &height);
    _fb_W = width;
    _fb_H = height;
}

void Camera::draw_grid(double minor_spacing double major_spacing)
{
    double xy;

    glDisable(GL_DEPTH_TEST);

    glLineWidth(1);       // lines as thin as possible

    glBegin(GL_LINES);      // every two glVertex calls will draw a line segment

    double left   = (int)(_world_BLx - 1);
    double right  = left + _world_W + 3;
    double bottom = (int)(_world_BLy - 1);
    double top    = bottom + _world_H + 3;

    // the minor vertical grid lines
    glColor3d(0.6 0.4 0.4);    // darkish red
    for (x = left; x <= right; x += minor_spacing)
    {
        glVertex2d(x bottom);
        glVertex2d(x top);
    }
    // the minor horizontal grid lines
    for (y = bottom; y <= top; y += minor_spacing)
    {
        glVertex2d(left  y);
        glVertex2d(right y);
    }

    // the major vertical grid lines: darkish green
    gl

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3625  2017-11-26 18:14  Camera.cpp
     文件        1929  2017-11-03 14:11  Camera.h
     文件        1193  2018-11-12 17:56  Color.cpp
     文件         646  2018-11-11 22:09  Color.h
     文件       22592  2018-11-01 18:59  GeomLib.cpp
     文件       12382  2018-10-26 23:09  GeomLib.h
     文件         377  2018-11-12 14:22  Hit.cpp
     文件         485  2018-11-12 14:16  Hit.h
     文件         345  2018-11-01 14:18  HitList.cpp
     文件         310  2018-10-25 12:25  HitList.h
     文件        3515  2017-10-01 18:16  KBUI.cpp
     文件        1162  2017-10-01 18:16  KBUI.h
     文件         241  2018-11-09 13:41  Light.cpp
     文件         345  2018-11-09 13:41  Light.h
     文件         631  2018-10-28 16:32  Makefile.linux
     文件         610  2018-10-28 16:32  Makefile.mingw
     文件         684  2018-10-26 12:35  Makefile.osx
     文件         524  2018-11-11 22:15  Material.cpp
     文件         520  2018-11-09 13:41  Material.h
     文件          89  2018-11-09 14:02  object.cpp
     文件         389  2018-11-09 13:45  object.h
     文件         799  2018-11-12 17:27  pyramid.txt
     文件       25219  2018-11-15 11:07  rt.cpp
     文件         880  2018-11-09 15:02  snowman.txt
     文件        1032  2018-11-12 14:21  Sphere.cpp
     文件         340  2018-11-12 11:01  Sphere.h
     文件        1555  2018-11-09 13:41  Tokenizer.cpp
     文件         998  2018-11-09 13:41  Tokenizer.h
     文件        1459  2018-11-12 14:25  Triangle.cpp
     文件         356  2018-11-12 14:25  Triangle.h
     文件        6850  2018-11-12 18:18  三角形.png
............此处省略1个文件信息

评论

共有 条评论