6.5编程实例-立方体透视投影
#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编程实例-立方体透视投影相关推荐
- Python并发编程实例教程
有关Python中的并发编程实例,主要是对Threading模块的应用,文中自定义了一个Threading类库. 一.简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态 ...
- iOS网络编程-iCloud键值数据存储编程实例
iCloud键值数据存储设计 iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击"设置iCloud数据"按钮,将控件状态保存到iCloud服务器.右图是设备2 ...
- NIO Socket编程实例
1.阻塞模式实例 NIOUtil类,用来通过SOcket获取BufferedReader和PrintWriter. package IO;import java.io.BufferedReader; ...
- linux c编程项目实例,Linux c编程实例_例子
例一:字符与整型变量的实现 #include int main() { int c1,c2; char c3; c1='a'-'A'; c2='b'-'B'; c3='c'-; printf(&quo ...
- C#中Socket多线程编程实例
C#是微软随着VS.net新推出的一门语言.它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性.而且,微软推出C#主要的目的是为了对抗Sun公司的Java.大家都知道Java语言的强大功 ...
- 《突破C#编程实例五十讲》源文件下载(2)
上接<<突破C#编程实例五十讲>源文件下载(1)> 有兴趣的朋友下载看看吧,一共有9个压缩包分3篇文章,下载要注意哦,不然解压要出错哦! 转载于:https://blog.51 ...
- java编程50实例_java编程实例大全及详解谜底(50例).doc
java编程实例大全及详解谜底(50例).doc 还剩 33页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 谓 ...
- Hadoop Streaming编程实例
Hadoop Streaming是Hadoop提供的多语言编程工具,通过该工具,用户可采用任何语言编写MapReduce程序,本文将介绍几个Hadoop Streaming编程实例,大家可重点从以下几 ...
- 三菱plc编程实例3000_三菱PLC十字路口的红绿灯编程实例
点击↑↑上方关注,回复100领取电气控制100例. 十字路口车辆穿梳,行人熙攘,车行车道,人行人道,有条不紊.那么靠什么来实现这井然秩序呢?靠的是交通信号灯的自动指挥系统,下面介绍三菱PLC编程实现的 ...
最新文章
- 麻省理工牛人解说数学体系
- linux的共享端口,Gogs与Linux共享SSH22端口
- pom.xml中的常用依赖包总结
- 【译】SQL Server索引进阶第八篇:唯一索引
- dwf怎么合成一个_将ActionForm拼合成一条插入和更新语句
- Delphi各个版本和发展历史
- 阅读《构建之法》 5-7章
- 【彻底搞清楚javascript中的require、import和export 】
- .NET 源代码的安全性(源代码工具真正比拼) (論)
- 六个让你的Ubuntu系统提速的方法
- 传输请求时报信息对象0REQ_CDATE不存在
- MAC 电脑里面的“其他”文件是什么占用了
- C# xml压缩包不解压的情况下解析xml内容
- 解决qt调试时Unknown debugger type No Engine
- 中北大学光电考试复习目录
- 华硕主板装系统蓝屏_华硕主板装系统蓝屏怎样设置bios?
- 设计模式--适配器模式
- uniapp移除原生导航栏后页面与手机状态栏重叠问题
- Mina中的支付交易snark
- java 数字与英文字母相互转换