博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
局部坐标系和全局坐标系
阅读量:6243 次
发布时间:2019-06-22

本文共 1319 字,大约阅读时间需要 4 分钟。

原文:http://www.cnblogs.com/kekec/archive/2010/08/04/1792442.html

概述

全局坐标系是三维空间物体所在的坐标系,模型的顶点坐标就是基于这个坐标系来表达的。而局部坐标系是一个假想的坐标系,该坐标系与物体的相对位置至始至终是不变的,假想出这个坐标系的目的主要是为了正向理解对三维场景中物体执行的“平移和旋转”操作。使用局部坐标系理解模型变换时,所有的变换操作直接作用与局部坐标系,由于局部坐标系与物体的相对位置不对,因此,当对局部坐标系进行“平移”、“旋转”和“缩放”时,物体在场景中位置和形状也会发生相应的变化。

所谓局部坐标系(Local Coordinate),也就是坐标系以物体的中心为坐标原点,物体的旋转或平移等操作都是围绕局部坐标系进行的,这时,当物体模型进行旋转或平移等操作时,局部坐标系也执行相应的旋转或平移操作。

几点注意

(1)“全局坐标系”和“局部坐标系”是两种理解模型变换的手段。

(2)当存在“缩放”变换时,应采用“全局坐标系”“反向”阅读代码来理解。如果存在缩放变换,尤其当缩放不均匀时,采用“局部坐标系”来理解可能产生问题。经过不均匀的缩放后,坐标系被拉伸,因此平移顶点时,沿各个轴移动的距离将增大(缩小)相应的缩放倍数。如果进行不均匀缩放的同时进行了旋转变换,局部坐标系各个轴可能将不再相互垂直。

(3)对于多次交换使用“平移”和“缩放”操作的情况,宜用“局部坐标系”“正向”阅读代码来理解。

(4)对于像树形结构的物体,如机械人,太阳系,红宝书的建议是从“局部坐标系”来看。

使用全局坐标系为什么要用“反向”阅读代码的方式来理解?

先看看下面这段代码:

1 void Draw()
2 {
3 glMatrixMode(GL_MODELVIEW);
4 glLoadIdentity(); // 当前矩阵设置为单位矩阵
5   glRotatef(45.0f,0.0,0.0,1.0); // 绕z轴旋转45度
6   glTranslatef(2.0,2.0,2.0);   // 平移至 [2.0,2.0,2.0]
7   glBegin(...); // 开始绘制三维物体
8   ...
9 ...
10 ...
11 glEnd();
12 }

R为 glRotatef(45.0f,0.0,0.0,1.0) 产生的矩阵。

T为 glTranslatef(2.0,2.0,2.0) 产生的矩阵。

E为单位阵, M为经过旋转平移之后的视点模型变换矩阵。

M=E*R*T 【这是一个矩阵右乘操作】

理论上来讲 这就是一个坐标系的变换过程,R*T 这个矩阵其实就是将原先的坐标系变换到现在的坐标系,这个时候原先坐标系的点p将变换成q。

q=(R*T)*p  【T和p先进行乘法得到一个中间向量,R再和这个向量做乘法,最后算的q向量】

而按照全局坐标系的理解,它的变换过程则是相反的,这也是相当的好理解的.在当前世界坐标系中画好该物体之后,要想将它移动到正确的位置,必须得先平移物体到[2.0,2.0,2.0],然后将物体绕z轴旋转45度。这是一个相反的变换过程。

你可能感兴趣的文章
武汉Uber优步司机奖励政策(8月31日~9月6日)
查看>>
javascript小技巧:同步服务器时间、同步倒计时
查看>>
JUnit4.8.2来源分析-2 org.junit.runner.Request
查看>>
你觉得你在创业,但其实你可能只是在做小生意而已 制定正确的计划 创业和经营小企业之间的差异...
查看>>
HDU 4847-Wow! Such Doge!(定位)
查看>>
冒泡排序算法 C++和PHP达到
查看>>
Android 弹出通知Toast的使用
查看>>
jquery $.each遍历json数组方法
查看>>
jquery access方法 有什么用
查看>>
更改IOS于UISearchBar撤消button底、搜索输入文本框背景中的内容和UISearchBar底
查看>>
WPF XAML之bing使用StringFormat(转)
查看>>
Mysql备份工具比较
查看>>
python之函数用法getattr()
查看>>
Asp.Net 之 未能加载文件或程序集 system.web.extensions 解决方法
查看>>
(原创)Linux下的floating point exception错误解析
查看>>
Maven 中配置 Urlrewrite 基本配置
查看>>
java设计模式之——代理模式
查看>>
vi编辑
查看>>
JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示
查看>>
调取jSon数据--展示
查看>>