初探android的Camera和Matrix
2015-06-22 13:23
288 查看
camera的坐标系是左手坐标系。伸出左手,让拇指和食指成L形,大拇指向右,食指向上,中指指向前方,这样我们就建立了一个左手坐标系,拇指,食指,中指的指向分别代表了x,y,z轴的正方向。如下图所示:
下面是一些细节点:
1,camera位于坐标点(0,0),也就是视图的左上角;
2,camera.translate(10, 20, 30)的意思是把观察物体右移10,上移20,向前移30(即让物体远离camera,这样物体将会变小);
3,camera.rotateX(45)的意思是绕x轴顺时针旋转45度。举例来说,如果物体中间线和x轴重合的话,绕x轴顺时针旋转45度就是指物体上半部分向里翻转,下半部分向外翻转;
4,camera.rotateY(45)的意思是绕y轴顺时针旋转45度。举例来说,如果物体中间线和y轴重合的话,绕y轴顺时针旋转45度就是指物体右半部分向里翻转,左半部分向外翻转;
5,camera.rotateZ(45)的意思是绕z轴顺时针旋转45度。举例来说,如果物体中间线和z轴重合的话,绕z轴顺时针旋转45度就是指物体上半部分向左翻转,下半部分向右翻转;
------------------------------------------------------------------------------------------------
Matrix是一个3 x 3的2D空间矩阵,关于其具体请参见博文《Android
Matrix理论与应用详解》,这里补充说明一点:
1,下图中的MPERSP_2指的是投影变换
关于投影变换理论部分请参见博文《OpenGL笔记之矩阵变换(Matrix
Transformation)》,其实际作用就是如果MPERSP_2=0.5,那么物体是原来的4倍大小;如果MPERSP_2=2,那么物体是原来的1/4大小。
------------------------------------------------------------------------------------------------
Camera和Matrix的联合使用:一般情况下,如果我们需要进行3D变换,那么需要将Camera和Matrix联合使用,使用Camera进行x轴或y轴的旋转,使用Matrix进行平移或放大。
下面是一些细节点:
1,camera位于坐标点(0,0),也就是视图的左上角;
2,camera.translate(10, 20, 30)的意思是把观察物体右移10,上移20,向前移30(即让物体远离camera,这样物体将会变小);
3,camera.rotateX(45)的意思是绕x轴顺时针旋转45度。举例来说,如果物体中间线和x轴重合的话,绕x轴顺时针旋转45度就是指物体上半部分向里翻转,下半部分向外翻转;
4,camera.rotateY(45)的意思是绕y轴顺时针旋转45度。举例来说,如果物体中间线和y轴重合的话,绕y轴顺时针旋转45度就是指物体右半部分向里翻转,左半部分向外翻转;
5,camera.rotateZ(45)的意思是绕z轴顺时针旋转45度。举例来说,如果物体中间线和z轴重合的话,绕z轴顺时针旋转45度就是指物体上半部分向左翻转,下半部分向右翻转;
------------------------------------------------------------------------------------------------
Matrix是一个3 x 3的2D空间矩阵,关于其具体请参见博文《Android
Matrix理论与应用详解》,这里补充说明一点:
1,下图中的MPERSP_2指的是投影变换
关于投影变换理论部分请参见博文《OpenGL笔记之矩阵变换(Matrix
Transformation)》,其实际作用就是如果MPERSP_2=0.5,那么物体是原来的4倍大小;如果MPERSP_2=2,那么物体是原来的1/4大小。
------------------------------------------------------------------------------------------------
Camera和Matrix的联合使用:一般情况下,如果我们需要进行3D变换,那么需要将Camera和Matrix联合使用,使用Camera进行x轴或y轴的旋转,使用Matrix进行平移或放大。
相关文章推荐
- Android学习笔记之—采用Pull解析XML文件
- Android学习【AutoCompleteTextView】
- 安卓表格布局android:collapseColumns,android:shrinkColumns和stretchColumn
- Android学习笔记之—XML文件的序列化
- Android在View拉丝工艺和invalidate()和其他相关方法
- android中使用DisplayMetrics获取屏幕参数
- Android聊天软件的开发--聊天通信
- Android--MeasureSpec学习
- Android开发之Handler(五)回调函数拦截
- Fragment在Android机顶盒上的应用
- Android-ScrollView中listview控件高度正确显示
- Android学习笔记(四十):Preference使用
- Android 下载文件及写入SD卡
- Android:使用Gon解析解析Json
- android BitMap回收
- Android开发之Handler(五)几种常见的传值方式
- Android开发之handler(四)
- Android:Json解析库的选择
- Android开发之handler(三)handler真的是重新启动一个线程吗?
- android下屏幕适配