计算机图形学,OpenGL编写的一个可实现旋转缩放移动的房间,内有数十种交互

这篇具有很好参考价值的文章主要介绍了计算机图形学,OpenGL编写的一个可实现旋转缩放移动的房间,内有数十种交互。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include <stdlib.h>

#include<stdio.h>

#include<windows.h>

#include <GL/glut.h>

#include <math.h>

#include <gl/GLU.h>

//颜色宏定义

#define white 1.0f, 1.0f, 1.0f

#define black 0.0f, 0.0f, 0.0f

#define red 1.0f, 0.0f, 0.0f

#define blue 0.0f, 0.0f, 1.0f

#define skyBlue 135.0/255.0, 206.0/255.0, 1.0f

#define plum 1.0f, 187.0/255.0, 1.0f //浅紫色

#define pink 1.0f, 181.0/255.0, 197.0/255.0

#define lightGray 211.0/255.0, 211.0/255.0, 211.0/255.0

#define darkGray 156.0/255.0, 156.0/255.0, 156.0/255.0

#define dimGray 105.0/255.0, 105.0/255.0, 105.0/255.0

#define goldenrod 139.0/255.0, 115.0/255.0, 85.0/255.0 //木地板的颜色

#define burlywood 205.0/255.0, 170.0/255.0, 125.0/255.0

#define M_PI 3.14159265358979323846

#define moonlike 0.8392156f,0.9254902,0.94117647

const GLdouble FRUSTDIM = 100.0f;

GLfloat door = 0.0;

GLfloat sticker = 45.0;

GLfloat screen = 0.0;

GLfloat arm = 20.0;

GLfloat xiaom = -60.0;

int option = 0;

int doorOpen = 0;

float l1 = 0.25;

float ll = 1.0;

float win_of = 0.0;

GLdouble moon_x = -120.0, moon_y = 30.0f, moon_z = -180.0f;

// 追踪观察点的方向

static GLfloat s_eye[] = { 0,8.0,0 };

static GLfloat s_at[] = { 0.0,0.0,0.0 };

static GLfloat s_angle = -90.0;                    //如果初始角度设置为0则初始面向X轴正方向,设置为-90面向

//Z轴负方向,符合默认情况下的设计习惯。

float PI = 3.14159f;

float rad = float(PI * s_angle / 180.0f);

#define SOLID 1

#define WIRE 2

GLdouble door_a = 0.0;

GLdouble c_r = 0.0f, c_g = 0.0f, c_b = 0.0f;

GLdouble chear_y = -75.0f, chear_s = 10.0f;

GLdouble person_x = 50, person_a = 0.0f;

bool mouseLeftDown;

bool mouseRightDown;

float mouseX, mouseY;

float cameraDistance = 0.0;

float cameraAngleX;

float cameraAngleY;

GLdouble door_y = 200.5f;

void drawcube(GLdouble x, GLdouble y, GLdouble z)

{

glPushMatrix();

glTranslatef(x, y, z);

glutSolidCube(5);

glPopMatrix();

}

void init(void) // All Setup For OpenGL Goes Here

{

glEnable(GL_NORMALIZE); // 不加此项会出现放大后物体变暗问题

glEnable(GL_DEPTH_TEST);

glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);

glEnable(GL_LIGHT1);

glFrontFace(GL_CCW);

glEnable(GL_COLOR_MATERIAL);

}

void display(void) // Here's Where We Do All The Drawing

{

glPushMatrix();

glClearColor(0.0, 0.0, 0.0, 0.0);

glRotatef(cameraAngleX, 1, 0, 0);

glRotatef(cameraAngleY, 0, 1, 0);

glTranslatef(0.0, 0.0, -cameraDistance);

//glTranslatef(0.0, 0.0, -300.0);

glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); //必须放在display中否则动画会有bug

// TODO:

// Place light source here

{

GLfloat light0_ambient[] = { 0.2, 0.2, 0.2, 1.0 };

GLfloat light0_position[] = { 0.0,85.0, -100, 1.0 };

GLfloat light0_diffuse[] = { 0.2,0.2,0.2, 1.0 };

GLfloat light0_speculer[] = { 0.2,0.2,0.2, 1.0 };//高光

glLightfv(GL_LIGHT0, GL_POSITION, light0_position);

glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient);

glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse);

glLightfv(GL_LIGHT0, GL_SPECULAR, light0_speculer);

GLfloat spot_derection[] = { 0.0,-1.0,0.0 };

glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_derection);

glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 100);//聚光灯,照射的范围

glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 125.0);//聚光的程度

//窗外的光

GLfloat light1_position[] = { moon_x,moon_y,moon_z };//位置

//GLfloat light0_ambient[] = { 0.6, 0.6, 0.6, 1.0 };//环境光

GLfloat light1_ambient[] = { 0.1, 0.1, 0.1, 1.0 };

//GLfloat light0_diffuse[] = { 0.5, 0.5, 0.5, 0.3 };//漫反射光

GLfloat light1_diffuse[] = { 0.2,0.2,0.2, 1.0 };

glLightfv(GL_LIGHT1, GL_POSITION, light1_position);

glLightfv(GL_LIGHT1, GL_AMBIENT, light1_ambient);

glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse);

完整版代码关注并私聊领取

}计算机图形学,OpenGL编写的一个可实现旋转缩放移动的房间,内有数十种交互,交互,单片机,stm32计算机图形学,OpenGL编写的一个可实现旋转缩放移动的房间,内有数十种交互,交互,单片机,stm32计算机图形学,OpenGL编写的一个可实现旋转缩放移动的房间,内有数十种交互,交互,单片机,stm32文章来源地址https://www.toymoban.com/news/detail-854467.html

到了这里,关于计算机图形学,OpenGL编写的一个可实现旋转缩放移动的房间,内有数十种交互的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机图形学 | 实验六:旋转立方体

    华中科技大学《计算机图形学》课程 MOOC地址:计算机图形学(HUST) 在正式搭建环境之前,我们先来介绍一下读完下面的部分你会了解些什么。 绘制出旋转立方体需要的新知识 认识一些 OpenGL的新功能 接下来,我们来介绍一下绘制旋转立方体。绘制效果如下: Z-缓存(Z-Buff

    2024年02月06日
    浏览(38)
  • 计算机图形学与opengl C++版 学习笔记 第12章 曲面细分

    术语Tessellation(镶嵌)是指一大类设计活动,通常是指在平坦的表面上,用各种几何形状的瓷砖相邻排列以形成图案。它的目的可以是艺术性的或实用性的,很多例子可以追溯到几千年前[TS16]。 在3D图形学中,Tessellation指的是有点不同的东西(曲面细分),但显然是由它的经

    2024年02月08日
    浏览(29)
  • 计算机图形学与opengl C++版 学习笔记 第11章 参数曲面

    在20世纪50年代和60年代在雷诺公司工作期间,皮埃尔·贝塞尔(Pierre Bézier)开发了用于设计汽车车身的软件系统。他的程序利用了Paul de Casteljau之前开发的数学方程组,后者曾为竞争对手雪铁龙汽车制造商[BE72,DC63]工作。de Casteljau方程仅使用几个标量参数描述曲线,同时使用

    2024年02月08日
    浏览(37)
  • 计算机图形学与opengl C++版 学习笔记 第10章 增强表面细节

    假设我们想要对不规则表面的物体进行建模,例如橘子凹凸的表皮、葡萄干褶皱的表面或月球的陨石坑表面。我们该怎么做?到目前为止,我们已经学会了两种可能的方法: (a)我们可以对整个不规则表面进行建模,但这么做通常不切实际(一个有许多坑的表面需要大量的

    2024年02月09日
    浏览(33)
  • 计算机图形学与opengl C++版 学习笔记 第9章 天空和背景

    对于室外3D场景,通常可以通过在地平线上创造一些逼真的效果,来增强其真实感。当我们极目远眺,目光越过附近的建筑和森林,我们习惯于看到远处的大型物体,例如:云、群山或太阳(或夜 空中的星星和月亮)。但是,将这些对象作为单个模型添加到场景中可能会产生

    2024年02月09日
    浏览(31)
  • 【计算机图形学】图形变换(平移变换、比例变换、旋转变换、对称变换、错切变换、复合变换)

    一 实验目的 编写图形各种变换的算法 二 实验内容 1 :自行设计基本图案,完成1-5种简单变换 实验结果如下图所示: 图形初始化: 第一次点击左键,实现平移变换:     第二次点击左键,实现比例变换(同时伴有平移变换):   第三次点击左键,实现对称变换(以平行

    2024年02月05日
    浏览(31)
  • 计算机图形学:绘制一个3d交互场景(1)

    OpenGL作为一种图形与硬件的接口,与其他图形程序开发工具相比较,它提供了众多图形函数,直观的编程环境简化了三维图形的绘制过程,使用OpenGL搭建一个三维场景,能够通过输入设备与场景内物体交互。 豪华单间 配置环境:vs22+freeglut库 1.绘制墙体使其成为封闭空间,在

    2024年02月11日
    浏览(79)
  • 计算机视觉与图形学-神经渲染专题-第一个基于NeRF的自动驾驶仿真平台

    如今,自动驾驶汽车可以在普通情况下平稳行驶,人们普遍认识到,真实的 传感器模拟将在通过模拟解决剩余的极端情况方面发挥关键作用 。为此,我们提出了一种基于神经辐射场(NeRF)的自动驾驶模拟器。与现有作品相比,我们的作品具有三个显着特点:(1) 实例感知

    2024年02月12日
    浏览(37)
  • 计算机图形学:二维图形的几何变换(算法原理及代码实现)

    对于一个二维图形作平移、旋转、放缩变换,可以转换为在二维坐标系中图形的所有点分别可以对应到在x,y轴方向分别平移tx,ty(平移)、绕一点旋转固定的角(旋转)、在x,y轴方向分别放缩sx,sy倍。 对于变换的原理,只需要将原图形的点通过极坐标或者相加、相乘,再

    2024年02月11日
    浏览(29)
  • 计算机图形学:三次Bezier曲线的绘制(算法原理及代码实现)

    一、实现方案        贝塞尔曲线原理:贝塞尔曲线是计算机图形图像造型的基本工具,是图形造型运用得最多的基本线条之一。它通过控制曲线上的四个点(起始点、终止点以及两个相互分离的中间点)来创造、编辑图形。其中起重要作用的是位于曲线中央的控制线。这条

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包