关于3D道路坐标系系的一道数学题

【3D数学】之坐标系 - 弈名 - 博客园
笛卡尔坐标系
3D 数学讲解如何在3D空间中精确度量位置、距离和角度,使用最广泛的度量体系是笛卡尔坐标系。
2D笛卡尔坐标系
2D笛卡尔坐标系主要由以下两点定义:
每个2D笛卡尔坐标系都有一个特殊点,称作原点,它是坐标系的中心。
每个2D笛卡尔坐标系都有两条过原点的直线向两个方向无限延伸,这两条直线称作&轴&。这两个轴互相垂直。
坐标系是一个精确定位点的框架。为了在笛卡尔坐标系中定位点,引入了笛卡尔坐标的概念。在2D平面中,两个数(x,y)就可以定义一个点。坐标的每个分量都表明了该点与原点之间的距离和方位,每个分量都是到相应轴的有符号距离。如下图所示,x分量表示该点到y轴的有符号距离,同样y分量表示该点到x轴的有符号距离。&有符号距离&指在某个方向上距离为正,而在相反方向为负。
相对于2D空间,3D空间更难认识和识别。3D笛卡尔坐标系如下图所示。
3D空间用3个轴表示三维坐标系,前两个轴称为x轴和y轴,这和2D平面类似。第3个轴称为z轴,一般情况下3个轴互相垂直。在3D中任意一对坐标轴都定义了一个平面,并垂直于第3个坐标轴。比如,包含x,y轴的xy平面垂直于z轴。我们可以认为这3个平面是3个2D笛卡尔空间。
在3D中定位一个点需要3个数:x,y和z,分别代表该点到yz,xz和xy平面的有符号距离。
3D坐标系存在两种完全不同的3D坐标系:左手坐标系和右手坐标系。如果同属于左手坐标系或者右手坐标系,则可以通过旋转来重合,否则不可以。左手坐标系和右手坐标系并没有好坏之分,在不同的应用场景下常常有不同的选择。比如,在计算机图形学中场使用左手坐标系,而线性代数倾向于使用右手坐标系。
为什么使用多坐标系呢?只要选定一个坐标系,并以此为&世界&坐标系,则可以描述所有的点,这样不更简单吗?实时上,不同的情况使用不同的坐标系更加方便。
常用坐标系
常用坐标系主要介绍世界坐标系、物体坐标系、摄像机坐标系和关系坐标系。
世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架。从另一个角度来说,用世界坐标系可以描述其他坐标系的位置,而不能用更大的外部坐标系来描述世界坐标系。世界坐标系所建立的是我们&关心&的最大坐标系,因此世界坐标系不必是整个世界。比如要显示广联达大厦,那么广联达大厦就是整个世界。
物体坐标系是和特定物体相关联的坐标系。当物体位移或改变方向时,和该物体相关的坐标系也随之移动和改变方向。比如告诉你&向前走一步&,则是向你的物体坐标系发指令。&前&、&后&、&左&、&右&这样的概念只有物体坐标系才有意义。有时物体坐标系也称作模型坐标系,模型顶点的坐标都是在模型坐标系中描述的。
摄像机坐标系是和观察者密切相关的坐标系。摄像机坐标系被看作是一种特殊的物体坐标系,该物体坐标系定义摄像机的屏幕可视区域。在摄像机坐标系中,摄像机在原点,x轴向右,z轴向前,y轴向上。一个摄像机坐标系如下图所示。关于摄像机坐标系的轴向约定可能不同。许多图形学书中习惯用右手坐标系,z轴向外,即从屏幕指向读者
为了简化世界坐标系到物体坐标系的转换,引入了惯性坐标系。惯性坐标系的原点和物体坐标系的原点重合,但惯性坐标系的轴平行于世界坐标系的轴。下图展示了2D中的情况。为什么引入惯性坐标系呢?因为从物体坐标系转换到惯性坐标系只需要旋转,从惯性坐标系转换到世界坐标系只需要平移。分开考虑两件事情比把它们糅合在一起要容易。
坐标系转换
坐标变换就是已知某一点的坐标,而在另一个坐标系中描述该点。比如吧位置从世界坐标系转换到物体坐标系,或是从物体坐标系转换到世界坐标系。
举个例子,现在考虑将机器人胸前的灯从物体坐标系转换到世界坐标系。从下图可假设灯在物体坐标系中的左边为(0, 100)。
首先旋转到惯性坐标系。如下图所示,将物体坐标系顺时针旋转,就得到惯性坐标系。在惯性坐标系中,灯位于y轴正方向,x轴负方向,大概位置为(-300,600)。
接下来,将惯性坐标系转换到世界坐标系。如下图所示将惯性坐标系的原点向下、向左平移至世界坐标系原点。在世界坐标系中灯在两个坐标轴的正方向上,大概位置为()。
为了将轴从物体坐标系转换到世界坐标系,步骤为:
将物体坐标系顺时针旋转,转换到惯性坐标系。
将惯性坐标系向下、向左平移转换到世界坐标系。
这样,物体坐标系顺时针旋转,向下、向左平移就转换到世界坐标系。
从物体上某点的角度来看,将物体坐标系中的某点逆时针旋转,向上、向右平移就转换到世界坐标系。可以看出,点的旋转和平移方向正好和轴的方向相反。这就像开车一样,你向前行驶,世界就像在向后移动,你向右转,世界做着和你相反的事。
3D笛卡尔坐标系共有多少种组合?分别列出这些组合并指出哪些是左手坐标系,哪些是右手坐标系。
阅读(...) 评论()
Copyright & 弈名
Powered by:
模板提供:3d_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
你可能喜欢以前都是做2D游戏,基本不关注数学方面的知识。现在学习unity了,很多概念都不懂。学生时代的东西,早还给老师了。当然我学习不好 = =!所以现在来补补。毕竟现在要做3D了。基础的东西还是得懂。
下面是我看书的一些重点、我将其记录下来。以后也方便自己温习!
笛卡尔坐标系 的定义 :
1、每个2D笛卡尔坐标系都有一个特殊的点,称为原点(0,0)它是坐标系的中心。
2、每个2D笛卡尔坐标系都有两条过原点的直线向两边无限延伸,称为轴,两个轴互相垂直。
笛卡尔坐标系定位
坐标系是一个精确定位点的框架。为了在笛卡尔坐标系中定位点,引入了笛卡尔坐标的概念。在2D平面中,两个数(x,y)就可以定义一个点。坐标的每个分量都表明了该点与原点之间的距离和方位,每个分量都是到相应轴的有符号距离。如下图所示,x分量表示该点到y轴的有符号距离,同样y分量表示该点到x轴的有符号距离。“有符号距离”指在某个方向上距离为正,而在相反方向为负。
3D坐标系:
3D坐标系表示三维空间系,3D坐标系存在三个轴,比2D坐标系多了一个Z轴,3个轴相互垂直,也就是没个轴都有垂直于其他两个轴。在3D坐标系中点位需要3个数:x、y、z.
左手坐标系、右手坐标系:
3d坐标系存在两种完全不同的坐标系,左手坐标系和右手坐标系。如果属于相同的坐标系,可以通过旋转来重合,否则是不可以重合的。两个坐标系之间没有好坏,之是应用与不懂的场景。 计算机中使用左手坐标系,线性代数中使用右手坐标系。
多坐标系:
为什么使用多坐标系?因为在不同的情况下使用不同的坐标系更加的方便。某些信息只有在特定的上下文环境中获得。
一些有用的坐标系:
1、世界坐标系:是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架,另一方面说,能用时间坐标系描述其他坐标系的位置,而不能用更大的坐标系来描述世界坐标系。
2、物体坐标系:特定物体相关联的坐标系。当物体位移或改变方向时,和该物体相关的坐标系也随之移动和改变方向。比如告诉你“向前走一步”,则是向你的物体坐标系发指令。“前”、“后”、“左”、“右”这样的概念只有物体坐标系才有意义。“向左转”是物体坐标系,“向东”则是世界坐标系。有时物体坐标系也称作模型坐标系,模型顶点的坐标都是在模型坐标系中描述的。
3、摄像机坐标系:观察者密切相关的坐标系。摄像机坐标系被看作是一种特殊的物体坐标系,该物体坐标系定义摄像机的屏幕可视区域。在摄像机坐标系中,摄像机在原点,x轴向右,z轴向前,y轴向上。一个摄像机坐标系如下图所示。关于摄像机坐标系的轴向约定可能不同。许多图形学书中习惯用右手坐标系,z轴向外,即从屏幕指向读者。2D屏幕上显示的内容就是3D摄像机坐标系通过投影转换呈现的。
4、惯性坐标系:为了简化世界坐标系到物体坐标系之间的转换,才有了惯性坐标系。惯性坐标系的原点和物体坐标系的原点重合,但惯性坐标系的轴平行于世界坐标系轴。所以从物体坐标系转换为惯性坐标系只需要旋转,从惯性坐标系到世界坐标系只需要平移。
5、嵌套坐标系:3D虚拟世界中每个物体都有自己的坐标系———-自己的原点和坐标轴。每个模型都有自己的原点和坐标轴,模型的子物体就是在这个嵌套坐标系中。
物体坐标系到世界坐标系的转换:
1、旋转物体坐标系到惯性坐标系。将物体坐标轴旋转到与惯性坐标系重合。
2、将惯性坐标系原点平移至世界坐标系。
关于Unity的一些坐标系的知识:
Unity是左手坐标系
世界坐标系:我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。
屏幕坐标系:以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。注:鼠标位置坐标属于屏幕坐标,Input.mousePosition可以获得该位置坐标,手指触摸屏幕也为屏幕坐标,Input.GetTouch(0).position可以获得单个手指触摸屏幕坐标。
绘制GUI界面的坐标系:这个坐标系与屏幕坐标系相似,不同的是该坐标系以屏幕的左上角为(0,0)点,右下角为(Screen.width,Screen.height)。
视口坐标系:视口坐标是标准的 相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点,Z的位置是以相机的世界单位来衡量的。
世界坐标→屏幕坐标:camera.WorldToScreenPoint(transform.position);这样可以将世界坐标转换为屏幕坐标。其中camera为场景中的camera对象。
屏幕坐标→视口坐标:camera.ScreenToViewportPoint(Input.GetTouch(0).position);这样可以将屏幕坐标转换为视口坐标。其中camera为场景中的camera对象。
视口坐标→屏幕坐标:camera.ViewportToScreenPoint();
视口坐标→世界坐标:camera.ViewportToWorldPoint();
Position.cs
using UnityE
using System.C
public class Position : MonoBehaviour
//场景的相机,拖放进来
//场景的物体
private GameO
void Start()
obj = GameObject.Find("Plane");
void Update()
if (Input.GetMouseButtonDown(0))
print("世界坐标" + obj.transform.position);
print("屏幕坐标" + Input.mousePosition);
print("Plane 世界坐标→屏幕坐标" + camera.WorldToScreenPoint(obj.transform.position));
print("鼠标屏幕坐标→视口坐标" + camera.ScreenToViewportPoint(Input.mousePosition));
print("Plane 世界坐标→视口坐标" + camera.WorldToViewportPoint(obj.transform.position));
123456789101112131415161718192021222324252627282930313233343536373839404142434445
using UnityEngine;&using System.Collections;&public class Position : MonoBehaviour{&&&&&//场景的相机,拖放进来&&&&&&&&&&&&&public Camera camera;&&&&&//场景的物体&&&&&&&&&&&&&private GameObject obj;&&&&&void Start()&&&&{&&&&&&&&&//初始化&&&&&&&&&&&&&&&&&obj = GameObject.Find("Plane");&&&&&}&&&&&void Update()&&&&{&&&&&&&&&if (Input.GetMouseButtonDown(0))&&&&&&&&{&&&&&&&&&&&&&print("世界坐标" + obj.transform.position);&&&&&&&&&&&&&print("屏幕坐标" + Input.mousePosition);&&&&&&&&&&&&&print("Plane 世界坐标→屏幕坐标" + camera.WorldToScreenPoint(obj.transform.position));&&&&&&&&&&&&&print("鼠标屏幕坐标→视口坐标" + camera.ScreenToViewportPoint(Input.mousePosition));&&&&&&&&&&&&&print("Plane 世界坐标→视口坐标" + camera.WorldToViewportPoint(obj.transform.position));&&&&&&&&&}&&&&&}&}君,已阅读到文档的结尾了呢~~
3D数学基础常识[整理版],数学小常识,数学常识,数学常识题,一年级数学整理房间,一上数学整理与复习,数学常识高中,数学基础,经济数学基础,高等数学基础作业2
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
3D数学基础常识[整理版]
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 平面直角坐标系 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信