三维坐标系旋转正方向

上传人:工**** 文档编号:482078171 上传时间:2023-09-05 格式:DOCX 页数:7 大小:122.21KB
返回 下载 相关 举报
三维坐标系旋转正方向_第1页
第1页 / 共7页
三维坐标系旋转正方向_第2页
第2页 / 共7页
三维坐标系旋转正方向_第3页
第3页 / 共7页
三维坐标系旋转正方向_第4页
第4页 / 共7页
三维坐标系旋转正方向_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《三维坐标系旋转正方向》由会员分享,可在线阅读,更多相关《三维坐标系旋转正方向(7页珍藏版)》请在金锄头文库上搜索。

1、判断三维坐标系旋转正方向的简单方法更多0的方向判断坐标方法简单引言做iOS开发,不免要接触到一些特效,其中不乏3D特效,这时候就要对iOS所使用的坐 标系了解才行。若不限于iOS开发,还有MacOS开发,若不知道它们所使用坐标系的不同, 初学者会很容易陷于混乱,三维坐标系做3D特效,就要用到三维坐标系,这是后人在笛卡尔的平面坐标系的基础上发明的。三维 坐标系分两种,左手坐标系和右手坐标系,为什么用左手和右手来区分呢?这是因为当确定 了 x轴,y轴方向之后,z轴的方向的两种,它可以通过左手或右手来确定。下面就是这两个 坐标系的规则示意图(图中固定了x轴的正方向向右,y轴的正方向向上):左手右手相

2、信大多数人对图中的右手坐标系很眼熟,没错,这就是初高中数学教材用到的三维坐标系, 只是我们不一定知道它叫右手坐标系。左手坐标系我们之前很少接触,但是在计算机图形学中这种坐标系非常重要,比如iOS的 UlView使用的坐标系就是左手坐标系。有人可能会说,不对吧,UIView的坐标系是原点在 左上角,y轴正方向向下,图中的不是这样啊,其实没错啦,把图中的左手坐标系沿x轴旋 转180度就是原点在左上角的左手坐标系,区别就是旋转的角度不同而已。这是因为左手 坐标系或者右手坐标系整体旋转后性质是不变的。对坐标系使用左手与右手的命名,有一个作用就是用来方便判断旋转的正方向,这就是左手 法则和右手法则。例如

3、对左手坐标系,确定一个旋转轴后,左手握住拳头,拇指指向旋转轴 的正方向,四指弯曲的方向为旋转的正方向。相应地,右手坐标系就用右手来判定。确定了 旋转的正方向后,在公式计算中就很容易知道是该使用正角度还是负角度了。下图就是右手但是,这个判断旋转正方向的方法还是不够快。给定任意一个旋转角度的三维坐标系,如果 按上面的方法判断旋转正方向,首先,你得确定这个坐标系是左手坐标系还是右手坐标系, 这时你会先拿出一只手来,像上图一样摆好三根手指的姿势来比对给定坐标系的x、y、z 轴正方向看是否一致。然后根据旋转轴的正方向,用相应的手来判断旋转正方向。其实,完全没有必要这么麻烦。怎么更方便地判断,且看我慢慢道

4、来。先看第一个图的两个坐标系,左边的为左手坐标系,右边的为右手坐标系,两坐标系的x 轴和y轴正方向保持一致,z轴正方向相反。分别用左手法则与右手法则去判断它们各自绕 z轴旋转的正方向,那么从我们眼睛看屏幕的角度来看,它们绕z轴旋转的正方向都是逆时 针,这当然不会是巧合。观察这两个坐标系,就会发现这个逆时针方向与x轴正方向箭头顶 点指向y轴正方向箭头顶点的方向一致,这说明绕z轴旋转的正方向与x轴正方向箭头顶端 指向y轴正方向箭头顶端的方向有关联吗?我想是的。然后再尝试判断两坐标系绕x轴旋转的正方向,它与y轴正方向顶端指向z轴正方向顶端的 方向一致;而绕y轴旋转的正方向,与z轴正方向顶端指向x轴正

5、方向顶端的方向一致。结论一据此,我觉得可以得出一个结论:对于任意旋转角度的三维坐标系,绕某一坐标轴旋转的正 方向,与另外两个坐标轴的正方向顶端按XYZX的顺序进行指向的方向一致。这就意味着,判断三维坐标系绕某一坐标轴旋转的正方向,不用事先知晓这个坐标系是左手 坐标系还是右手坐标系,完全不需要你用手去比划.反过来,既然判断旋转正方向这么容易,我们也可以利用它来快速判断一个坐标系是左手坐 标系和右手坐标系:使用上述结论确定坐标系绕某一某旋转的正方向,然后逆用左手法则与 右手法则,大拇指指向该轴的正方向,如果左手四指弯曲的方向与旋转的正方向一致,该坐 标系就是左手坐标系,反之就是右手坐标系。不过这还

6、是复杂,还是需要用手比划。我突然想到了一个更好的方法:想象y轴是一面墙,你面朝前方斜靠在墙上,可以假设你的头部为y轴正方向顶点,脚为x 轴正方向顶点,那么z轴在你的左侧时就是左手坐标系,在右侧时就是右手坐标系。这个时 候,人体的生长方向也刚好是绕z轴旋转的正方向。结论二再扩展一下就是:对于任意旋转角度的三维坐标系,想象你的脚踩在一个坐标轴(如x轴) 正方向的顶点,头倚靠在其邻高坐标轴(如y轴)的正方向顶点,面朝背离原点的方向,那 么,第三轴正方向顶点在你的左手边时,这个坐标系就是左手坐标系,在右手边时就是右手 坐标系,而人体此时的生长方向就是绕第三轴(如z轴)旋转的正方向。(注:这里的邻高坐标

7、轴是我自己定义的一个概念,X轴的邻高坐标轴为Y轴,Y轴的邻高 坐标轴为Z轴,Z轴的邻高坐标轴为X轴.)在这个方法里,坐标系属性与绕坐标轴旋转正方向的判断达到了统一,从此可以抛弃左手法 则与右手法则,也可以抛弃手指比划的方式来判断左右手坐标系,是不是会觉得很简单?_三维坐标系据说有一次笛卡尔生病了,躺在床上休息,但是他的大脑却没有休息,一只在寻思着通过什 么手段把几何图形和代数方程关联起来,也就是几何图形中的每一个点怎么和方程的每一组 解关联起来。这个时候他看到房顶上有一只蜘蛛在织网,蜘蛛空中爬来爬去。他想地上墙角 的三面墙相交出三条线,把墙角作为原点,把这三条线作为数轴,那么蜘蛛某刻的位置可以

8、 通过这三条数轴上的数来表示,反过来,给定一组数便可以确定空间中的一点。后来笛卡尔 发明了平面直角坐标系,当然上面的故事是三维空间的,只是为了说明,坐标系的作用是为 了便于描述点的位置。(我们学过的除了平面直角坐标系这个二维坐标系外,还学过极坐标 系,通过到原点的距离以及夹角角度来表示一个点。)后人在笛卡尔的平面坐标系的基础上发明了三维坐标系,常用的三维坐标系分两种:左手坐 标系和右手坐标系。当确定了x轴,y轴方向之后可以通过左手或右手来确定z轴的方向。 下图则是左手坐标系和右手坐标系的规则示意图:左手右手弯曲拇指,食指和中指使它们两两相互垂直,拇指指向x轴正方向,食指指向y轴正方向, 中指指

9、向z轴正方向。左手坐标系使用左手,右手坐标系使用右手。(上面示意图中的左 手坐标系或者右手坐标系整体旋转后性质不变,比如左手坐标系旋转后,使得y轴正方向向 下,x轴正方向保持向右,它依然是左手坐标系。) 另外还有一个左手或者右手定则来判断旋转的正方向,握住拳头,拇指指向旋转轴的正方向, 四指弯曲的方向为旋转的正方向。左手坐标系使用左手来判定,右手坐标系使用右手来判定.下图是右手的例子:二Mac, iOS界面中的坐标系话说Mac,iOS中的各种坐标系总会让初学者摸不着头脑,一会儿这样一会儿那样。不过有 一点是不变的,z轴的正方向总是指向观察者,也就是垂直屏幕平面向上。1NSView坐标系在Mac

10、中NSView的坐标系默认是右手坐标系(View其实是二维坐标系,但是为了方便我 们可以假设其是三维坐标系,只是所有界面的变化都是在xy平面上),原点在左下角. NSView提供了一个可以用于覆盖的方法-(BOOL)isFlipped;此默认返回NO,当返回YES的时候,则坐标系变成左手坐标系,坐标原点变成左上角。Standard unfl ipped亡 oordinaLesFl ipped GQprdinates在Mac的AppKit中有很多界面组件本身就使用了 Flipped Coordinate System(覆盖了上面的 方法并返回YES),如NSButton,NSTableview,

11、 NSSplitView 更详细的看这里 其中Cocoa Use of Flipped Coordinates 这一节 https:/developer.apple.eom/library/mac/#documentation/Cocoa/Conceptual/CocoaDrawingGuide/ Transforms/Transforms.html2UIView坐标系0.0)9而在iOS的UlView中,则没有所谓的Flipped Coordinate的概念,统一使用左手坐标系,也 就是坐标原点在左上角.3Quartz坐标系Quartz(Core Graphics)坐标系使用的右手坐标系,原

12、点在左下角,所以所有使用Core Graphics 画图的坐标系都是右手坐标系,当使用CG的相关函数画图到UIView上的时候,需要注意 CTM的Flip变换,要不然会出现界面上图形倒过来的现象。由于UIKit的提供的高层方法 会自动处理CTM(比如UIImage的drawInRect方法),所以无需自己在CG的上下文中做 处理。参见 Quartz 2D Coordinate Systems4CALayer坐标系这个有些变态了,其坐标系和平台有关,在Mac中CALayer使用的是右手坐标系,其原点 在左下角;iOS中使用的左手坐标系,其原点在左上角。参见Layer Coordinate System 卢克 / 2012-06-22

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号