UIKit坐标,OpenGL坐标,NodeSpace坐标的一些理解
来源:互联网 发布:sql 撤销 默认值 约束 编辑:程序博客网 时间:2024/05/04 06:30
做cocos2d开发时经常会遇到坐标转换,下面这三行代码是很常见的:
第一行 [touchlocationInView: [touchview]] 返回UITouch对象在指定View坐标系统中的位置,这个通常用来返回触摸点的屏幕UIKit坐标。
第二行 [[CCDirectorsharedDirector]convertToGL: touchLocation] 把一个UIKit坐标转换为OpenGL坐标。
第三行 [selfconvertToNodeSpace:touchLocation] 把一个本地坐标转换为世界坐标,也就是地图坐标。
现在举一个例子详细说明下:
这是一张宽:50x32,高:50x32像素的地图。红色边框为iphone屏幕当前显示区域。
如果我们点击屏幕上某一点,
上面三行代码得到的坐标分别是多少呢?如下图,点击紫色区域
Activate Console输出为:
UIKit的坐标为 (23,456)
OpenGL的坐标为(456,23)
地图坐标为 (1576,23)
这是为什么呢。
(1)首先要清楚屏幕尺寸为480x320个点,当屏幕以LandscapeRight横向显示时,横向有480个点,纵向有320个点。
(2)对于UIKit坐标,它的x取值在320个点里,y取值在480个点里,LandscapeRight横向显示时,坐标原点在左下角,x变成了表示竖直方向,y变成了表示水平方向。(如果不理解,想象一下把设备顺时针旋转90度后,坐标原点是不是回到了熟悉的左上角,x也表示习惯的水平方向,y表示竖直方向,紫色区域在左下角,它的坐标就是(23,456))
(3)OpenGL的坐标可以理解为,它的坐标原点在屏幕左下角,横向向右x值增加,纵向向上y值增加,所以它的坐标为(456,23)
(4)地图坐标,因为触摸点在整张地图(50x32,50x32)的右下角,地图坐标系统的原点在地图左下角,向右向上坐标值依次增加,所以紫色区域对它来说是一个x值很大,y值很小的点,即(1576,23)。
以上这些是我对UIKit,OpenGL,nodeSpace坐标的初步理解,
以后有深入体会再来补充!
- UIKit坐标,OpenGL坐标,NodeSpace坐标的一些理解
- opengl 坐标的理解
- OpenGL坐标的问题?
- Opengl的坐标系统
- OpenGL的坐标变换
- OPENGL 的世界坐标和 纹理坐标
- OPENGL 的世界坐标和 纹理坐标
- Opengl 坐标
- OpenGL--坐标
- opengl es坐标变换理解
- unity坐标点的一些理解
- 坐标
- 坐标
- 坐标
- 坐标
- 坐标
- 坐标
- 坐标
- 第十七章——配置SQLServer(3)——配置“对即时负载的优化”
- 数据库连接driverClass和jdbcUrl大全
- 在Java程序中,通过JDBC访问数据库
- 第十七章——配置SQLServer(4)——优化SQLServer实例的配置
- 文件空洞测试
- UIKit坐标,OpenGL坐标,NodeSpace坐标的一些理解
- cocos2d-x设计模式之九:委托模式
- winpcap数据包分析
- C51,ARM,AVR,PIC单片机,PLC
- Mysql设置Blob数据类型存储大小
- JDBC for rdf3x
- C程序设计课程-2012电子信息 第五堂课后作业
- Android三种实现定时器的方法
- c++ 操作符优先级