#include <GL/glut.h>

GLint winWidth = 600, winHeight = 600; //设置初始化窗口大小

/* 观察坐标系参数设置*/

GLfloat x0 = 0.0, y0= 0.0, z0 =5.0; // 设置观察坐标系原点

GLfloat xref = 0.0, yref =0.0, zref = 0.0; //设置观察坐标系参考点(视点)

GLfloat Vx = 0.0, Vy = 1.0, Vz = 0.0; // 设置观察坐标系向上向量(y轴)

/*观察体(视见体)参数设置 */

GLfloat xwMin = -1.0, ywMin = -1.0, xwMax = 1.0, ywMax = 1.0;//设置裁剪窗口坐标范围

GLfloat dnear = 1.5, dfar = 20.0;//设置远、近裁剪面深度范围

void init (void)

{

glClearColor(1.0,1.0,1.0,0.0);

//glShadeModel (GL_FLAT);//xz

/*①观察变换*/

/*视点变换*/

gluLookAt (x0, y0, z0, xref, yref, zref, Vx, Vy, Vz); //指定三维观察参数

/*模型变换*/

glMatrixMode (GL_MODELVIEW);

glScalef (2.0, 2.0, 2.0); //比例放缩变换

glRotatef(45.0, 0.0, 1.0, 1.0);//旋转变换

/*②投影变换*/

glMatrixMode (GL_PROJECTION);

glLoadIdentity ();

glFrustum (xwMin, xwMax, ywMin, ywMax, dnear, dfar);//透视投影,设置透视视景体

}

void displayFcn (void)

{

glClear (GL_COLOR_BUFFER_BIT);

glColor3f (0.0, 1.0, 0.0); // 设置前景色为绿色

glutSolidCube (1.0);//绘制单位立方体实体

glColor3f (0.0, 0.0, 0.0); // 设置前景色为黑色

glLineWidth (2.0); //设置线宽

glutWireCube (1.0);//绘制单位立方体线框

glFlush ();

}

void reshapeFcn (GLint newWidth, GLint newHeight)

{

/*③视口变换 */

glViewport (0, 0, newWidth, newHeight);//定义视口大小

winWidth = newWidth;

winHeight = newHeight;

}

void main (int argc, char** argv)

{

glutInit (&argc, argv);

glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);

glutInitWindowPosition (100, 100);

glutInitWindowSize (winWidth, winHeight);

glutCreateWindow ("单位立方体的透视投影");

init ();

glutDisplayFunc (displayFcn);

glutReshapeFunc (reshapeFcn);

glutMainLoop ();

}

6.5编程实例-立方体透视投影相关推荐

  1. Python并发编程实例教程

    有关Python中的并发编程实例,主要是对Threading模块的应用,文中自定义了一个Threading类库. 一.简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态 ...

  2. iOS网络编程-iCloud键值数据存储编程实例

    iCloud键值数据存储设计 iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击"设置iCloud数据"按钮,将控件状态保存到iCloud服务器.右图是设备2 ...

  3. NIO Socket编程实例

    1.阻塞模式实例 NIOUtil类,用来通过SOcket获取BufferedReader和PrintWriter. package IO;import java.io.BufferedReader; ...

  4. linux c编程项目实例,Linux c编程实例_例子

    例一:字符与整型变量的实现 #include int main() { int c1,c2; char c3; c1='a'-'A'; c2='b'-'B'; c3='c'-; printf(&quo ...

  5. C#中Socket多线程编程实例

    C#是微软随着VS.net新推出的一门语言.它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性.而且,微软推出C#主要的目的是为了对抗Sun公司的Java.大家都知道Java语言的强大功 ...

  6. 《突破C#编程实例五十讲》源文件下载(2)

    上接<<突破C#编程实例五十讲>源文件下载(1)> 有兴趣的朋友下载看看吧,一共有9个压缩包分3篇文章,下载要注意哦,不然解压要出错哦! 转载于:https://blog.51 ...

  7. java编程50实例_java编程实例大全及详解谜底(50例).doc

    java编程实例大全及详解谜底(50例).doc 还剩 33页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 谓 ...

  8. Hadoop Streaming编程实例

    Hadoop Streaming是Hadoop提供的多语言编程工具,通过该工具,用户可采用任何语言编写MapReduce程序,本文将介绍几个Hadoop Streaming编程实例,大家可重点从以下几 ...

  9. 三菱plc编程实例3000_三菱PLC十字路口的红绿灯编程实例

    点击↑↑上方关注,回复100领取电气控制100例. 十字路口车辆穿梳,行人熙攘,车行车道,人行人道,有条不紊.那么靠什么来实现这井然秩序呢?靠的是交通信号灯的自动指挥系统,下面介绍三菱PLC编程实现的 ...

最新文章

  1. 麻省理工牛人解说数学体系
  2. linux的共享端口,Gogs与Linux共享SSH22端口
  3. pom.xml中的常用依赖包总结
  4. 【译】SQL Server索引进阶第八篇:唯一索引
  5. dwf怎么合成一个_将ActionForm拼合成一条插入和更新语句
  6. Delphi各个版本和发展历史
  7. 阅读《构建之法》 5-7章
  8. 【彻底搞清楚javascript中的require、import和export 】
  9. .NET 源代码的安全性(源代码工具真正比拼) (論)
  10. 六个让你的Ubuntu系统提速的方法
  11. 传输请求时报信息对象0REQ_CDATE不存在
  12. MAC 电脑里面的“其他”文件是什么占用了
  13. C# xml压缩包不解压的情况下解析xml内容
  14. 解决qt调试时Unknown debugger type No Engine
  15. 中北大学光电考试复习目录
  16. 华硕主板装系统蓝屏_华硕主板装系统蓝屏怎样设置bios?
  17. 设计模式--适配器模式
  18. uniapp移除原生导航栏后页面与手机状态栏重叠问题
  19. Mina中的支付交易snark
  20. java 数字与英文字母相互转换

热门文章

  1. C# 浅谈基于Wpf下的MVVM模式的设计思想
  2. 星级评分原理 N次重写的分析
  3. matlab中利用快速傅里叶变换对股票价格进行频域分析
  4. 用 Python 找出了拉黑 QQ 空间屏蔽我的大人物
  5. 管理计算机域的内置账户怎么取消,取消普通域用户将计算机加入域的权限
  6. Qt小项目(二):调色器
  7. 磁盘分区命令fdisk、parted和gdisk
  8. php和android和mysql_如何使用JSON连接Android和PHP Mysql数据库
  9. PS CS6视频剪辑基本技巧(四)字幕居中和滚动字幕
  10. StarGFS海量小文件的高性能存储和保护方案