void gluLookAt( GLdouble eyeX,

    GLdouble eyeY,

    GLdouble eyeZ,

    GLdouble centerX,

     GLdouble centerY,

    GLdouble centerZ,

    GLdouble upX,

    GLdouble upY,

     GLdouble upZ);

中eye和center是用来确定看的方向,也就是说即使物体不落在eye和center这两点的范围内,也可以看到。

因为用来确定范围的是另一个函数glOrtho,它的参数

void glOrtho(  GLdouble        left,

GLdouble        right,

GLdouble        bottom,

GLdouble        top,

GLdouble        nearVal,

GLdouble        farVal);

如果物体不落在这个范围内,那就会看不到。只看得到落在范围内的那一部分。

因此glOrtho的参数可以通过物体的boundingbox来确定。他的left right bottom top near far是通过gluLookAt的eye 和center来确定,就是我看的方向然后上下左右前后 (mark:与坐标x,y,z是代表长宽高不是直接等价的)。

PS: near必须离眼睛比较近,far必须离眼睛远。比如根据z来确定,那么near的z必须和eye的z 值更相近。

//是相对于gluLookAt中eye的位置,znear是靠近eye的,eye是从正向向负向看center
//znear与eye.z要比zfar与eye.z更近
//有的building没有floor,如果znear和zfar包括的范围没有包裹整个building,那么从逆向向正向看,只有boundary
//从正向向逆向看,就是fill mode,但是如果范围足够大,就不用担心这个问题。
//这里也不会导致空白很大,图小

参加getFootprint()函数.

e.g.,

double x,z;
x = pLoadModels->g_3DModel->boundBox.max.x - pLoadModels->g_3DModel->boundBox.min.x;
z = pLoadModels->g_3DModel->boundBox.max.z - pLoadModels->g_3DModel->boundBox.min.z;
double normRadius = max(x,z) * 1.1; // correspond to model's extend 1.1 倍 circumcircle

范围最好是比原来的扩大1.1,这样不管多大或者多小的模型,都能自动fit into viewport,就不会有的图很大很小或者看不到要手动调整。

!gluLookAt与glOrtho 参数解析的更多相关文章

  1. 写个C#命令行参数解析的小工具

    最近测试工作做的比较多因此时常要创建一些控制台类型的应用程序.因为程序有不同的参数开关,需要在程序启动的时候通过命令行来给程序传递各种开关和参数.直接操作args有些不方便,所以就写了个解析参数的小工 ...

  2. Python--命令行参数解析Demo

    写没有操作界面的程序时,最讨厌的就是参数解析问题,尤其是很多参数那种,下面是一个小Demo,拿出来与各位分享: # -*- coding:utf8 -*- import os import datet ...

  3. Node基础:url查询参数解析之querystring

    模块概述 在nodejs中,提供了querystring这个模块,用来做url查询参数的解析,使用非常简单. 模块总共有四个方法,绝大部分时,我们只会用到 .parse(). .stringify() ...

  4. OpenGL的gluLookAt和glOrtho的关系

    OpenGL的gluLookAt和glOrtho的关系 一直不明白gluLookAt()和glOrtho()两者之间的关系:gluLookAt()是观察变换,glOrtho()是正交投影.glLook ...

  5. Zookeeper + Hadoop2.6 集群HA + spark1.6完整搭建与所有参数解析

    废话就不多说了,直接开始啦~ 安装环境变量: 使用linx下的解压软件,解压找到里面的install 或者 ls 运行这个进行安装 yum install gcc yum install gcc-c+ ...

  6. argparse - 命令行选项与参数解析(转)

    argparse - 命令行选项与参数解析(译)Mar 30, 2013 原文:argparse – Command line option and argument parsing 译者:young ...

  7. 一步一步自定义SpringMVC参数解析器

    随心所欲,自定义参数解析器绑定数据. 题图:from Zoommy 干货 SpringMVC解析器用于解析request请求参数并绑定数据到Controller的入参上. 自定义一个参数解析器需要实现 ...

  8. /proc/sys/ 下内核参数解析

    http://blog.itpub.net/15480802/viewspace-753819/ http://blog.itpub.net/15480802/viewspace-753757/ ht ...

  9. ThreadPoolExecutor参数解析

    ThreadPoolExecutor是一个非常重要的类,用来构建带有线程池的任务执行器,通过配置不同的参数来构造具有不同规格线程池的任务执行器. 写在前面的是: 线程池和任务执行器,线程池的定义比较直 ...

随机推荐

  1. Swift2.1 语法指南——协议

    原档: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programm ...

  2. Android学习笔记函数

    //调用新的Activity Intent intent=new Intent(MainActivity.this,Main2Activity.class); startActivity(intent ...

  3. 正则表达式学习笔记(附:Java版示例代码)

    具体学习推荐:正则表达式30分钟入门教程 .         除换行符以外的任意字符\w      word,正常字符,可以当做变量名的,字母.数字.下划线.汉字\s        space,空白符 ...

  4. 使用Oracle ODP.NET 11g的.NET程序发布方法

    使用Oracle ODP.NET 11g的.NET程序发布方法 内容摘要:ODP.NET 11g是Oracle发布的供.NET程序访问Oracle数据库的ADO.NET组件,比微软自带的Oracle组 ...

  5. 淘宝(阿里百川)手机客户端开发日记第十二篇 mysql的认识

    我这里用的是wamp,大家可以到网上去下载对应的包,自行安装,对于程序员来讲,安装软件大部分都应该不是问题的,所以我不去将具体安装的方法. wamp安装好后,在我们屏幕的右下角, 这样的图标,我们右键 ...

  6. BZOJ4525——[Usaco2016 Jan]Angry Cows

    1.题意:给一堆可以的限制长度的区间...区间的长度是你控制的...但是只有一个长度...求最短长度覆盖所有的点 2.分析:发现可以二分...那二分吧.....然后我们从头向后扫一遍直接判断能否直接覆 ...

  7. JavaScript中的跨域

    跨域是什么 跨域就是指从一个域名的网页去请求另一个域名的资源,因为JavaScript同源策略的限制,资源无法获取.比如从www.baidu.com 页面去请求 www.google.com 的资源, ...

  8. win32程序组成

    程序代码+UI资源——RC编译器整合——>EXE档案. UI资源:二进制代码(借助工具产生,并以各种扩展名的文件存在),程序员必须在资源描述文档(.rc)中描述他们. RC编译器(RC.EXE) ...

  9. 三. 动态添加option选项

  10. Dex动态加载

    Dex动态加载是为了解决什么问题? 在Android系统中,一个App的所有代码都在一个Dex文件里面. Dex是一个类似Jar的存储了多个Java编译字节码的归档文件. 因为Android系统使用D ...