右手坐标系,原点在左下角,即x正方向向右,y正方向向上,z正方向向前指向观察者。

左手坐标系,原点在左上角,即x正方向向右,y正方向向下,z正方向向前指向观察者。

二. Mac,iOS界面中的坐标系

话说Mac,iOS中的各种坐标系总会让初学者摸不着头脑,一会儿这样一会儿那样。不过有一点是不变的,z轴的正方向总是指向观察者,也就是垂直屏幕平面向上。

1.NSView坐标系

在Mac中NSView的坐标系默认是右手坐标系(View其实是二维坐标系,但是为了方便我们可以假设其是三维坐标系,只是所有界面的变化都是在xy平面上),原点在左下角,即原点在左下角,即x正方向向右,y正方向向上,z正方向向前指向观察者. NSView提供了一个可以用于覆盖的方法

- (BOOL)isFlipped;

此默认返回NO,当返回YES的时候,则坐标系变成左手坐标系,坐标原点变成左上角。 

在Mac的AppKit中有很多界面组件本身就使用了Flipped Coordinate System(覆盖了上面的方法并返回YES),如NSButton,NSTableview,NSSplitView 更详细的看这里 其中Cocoa Use of Flipped Coordinates 这一节https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaDrawingGuide/Transforms/Transforms.html

2.UIView坐标系

而在iOS的UIView中,则没有所谓的Flipped Coordinate的概念,统一使用左手坐标系,也就是坐标原点在左上角. 

3.Quartz坐标系

Quartz(Core Graphics)坐标系使用的右手坐标系,原点在左下角,所以所有使用Core Graphics画图的坐标系都是右手坐标系,当使用CG的相关函数画图到UIView上的时候,需要注意CTM的Flip变换,要不然会出现界面上图形倒过来的现象。由于UIKit的提供的高层方法会自动处理CTM(比如UIImage的drawInRect方法),所以无需自己在CG的上下文中做处理。 参见Quartz 2D Coordinate Systems

4.CALayer坐标系

这个有些变态了,其坐标系和平台有关,在Mac中CALayer使用的是右手坐标系,其原点在左下角;iOS中使用的左手坐标系,其原点在左上角。 参见 Layer Coordinate System

Quartz坐标系 坐标系使用的右手坐标系,原点在左下角,即x正方向向右,y正方向向上,z正方向向前指向观察者。所有使用Core Graphics画图的坐标系都是右手坐标系,当使用CG的相关函数画图到UIView上的时候,需要注意CTM的Flip变换,要不然会出现界面上图形倒过来的现象。

CALayer坐标系

这个有些变态了,其坐标系和平台有关,在Mac中CALayer使用的是右手坐标系,其原点在左下角;iOS中使用的左手坐标系,其原点在左上角。 参见 Layer Coordinate System

原地址:http://geeklu.com/2012/06/3d-coordinate-system/

iOS界面中的三维坐标系相关推荐

  1. ios 图像坐标系_Mac,iOS界面中的三维坐标系

    原文:http://www.tuicool.com/articles/3IbQri 一. 三维坐标系 据说有一次笛卡尔生病了,躺在床上休息,但是他的大脑却没有休息,一只在寻思着通过什么手段把几何图形和 ...

  2. Matplotlib画图教程:在QT界面中嵌入三维图片

    Matplotlib画图教程:在QT界面中嵌入三维图片 需求: 做项目报告的时候,有这么一个想法,就是能通过UI随时调用matplotlib进行二维图和三维图的绘制.因此就诞生了做这么一个小模块的想法 ...

  3. matlab怎么画三维坐标的二维图,excel怎么画二维坐标表格图(如何在excel中绘制三维坐标系?)...

    在excle中怎么把二维图形变成三维图形 你说的是图表吗,如果是的话就这样操作 excel2007以上版本:选中图表-点击设计选项卡-最左面有更改图表类型-选择合适的类型-确定 excel2003也是 ...

  4. matlab 三维y轴平面图,#如何在excel中绘制三维坐标系?#excel怎么画图平面坐标图...

    用excel绘制曲线图时如何进行坐标轴转换 点"插入"->"图表"->"XY图","子图表类型"选择&quo ...

  5. matlab三维 旋转矩阵,matlab中的三维坐标系与旋转

    1. matlab中的三维坐标系 matlab中的三维坐标系是使用的右手坐标系: 输入以下代码: >> plot3(0,0,0) >> xlabel('axis X') > ...

  6. matlab中如何转动三维图_matlab中的三维坐标系与旋转

    1. matlab中的三维坐标系 matlab中的三维坐标系是使用的右手坐标系: 输入以下代码: >> plot3(0,0,0) >> xlabel('axis X') > ...

  7. xyz三维坐标系怎么画?

    坐标系统是描述物质存在的空间位置(坐标)的参照系,通过定义特定基准及其参数形式来实现.通过课本上的介绍,我们知道坐标系分为平面坐标系和三维坐标系,平面坐标系是很好画的,一般都是直角坐标系,那么三维坐标 ...

  8. 浅谈iOS 开发中的界面通信

    在任何的软件开发中都离不开界面与界面之间的通信,界面通信的最直接的方法就是界面传值. 在开发过程中我们在页面传值时我们通常使用的方法有:属性传值法,block传值法,代理传值法,以及单例传值法,通知传 ...

  9. IOS中 如何实现汽车报价大全主界面中选择车型的UI

    在IOS系统中,如何实现下图所示的效果. 在地图有一个TableView的列表,第几一项后,会从右边弹出另一个TableView 列表(记录车型),不知道怎么实现它. 求高手帮忙

最新文章

  1. 解决掉这些痛点和难点,让知识图谱不再是“噱头”
  2. 2018, 自动驾驶异常艰难的一年
  3. 《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式...
  4. docker+selenium web自动化测试环境的部署
  5. mysql如何建外建_mysql如何建立外键
  6. 《高性能MySQL》第5章 创建高性能的索引
  7. (1.2)mysql 索引概念
  8. Rust :fold
  9. idea 新建java类 乱码,Intellij IDEA 2019 最新乱码问题及解决必杀技(必看篇)
  10. 鼠标屏幕取词技术的原理和实现 (转)
  11. xp系统怎样添加桌面计算机,如何为XP系统计算机设置桌面
  12. 产品升级 | 7月产品及解决方案升级来袭!
  13. mt4的服务器在哪个文件,MT4服务器地址在哪个文件
  14. 浅谈Flink对象重用(object reuse)
  15. 个人如何搭建云手机出租?ARM服务器搭建机房教程
  16. 揭示win32 api拦截细节
  17. C++ 不高兴的津津
  18. Windows10怎么显示我的电脑
  19. ExpRe[29] Windows下的“bootstrap”深度神秘过程
  20. 使用StreamReader逐行读取文件

热门文章

  1. 人工智能与机器学习速查表
  2. 【Git】Authentication failed for 错误解决
  3. 知识不等于智慧,学得越多距离智慧越远
  4. 前端路由之hash路由与history路由 Orz
  5. CV17 HOG特征提取算法
  6. java int长度_java 中int 的范围
  7. LinuxCon 2010 会议日程表发布
  8. 有没有可以线上教学的软件?这里有4个在线课堂小助手
  9. 站在工业互联时代,看“新晋独角兽”思谋科技的“远方”与“现实”
  10. 阿里云安全ACP认证考试实验之云盾之云安全中心与态势感知入门体验