六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 216|回复: 0

如何将3D投影至2D平面--3D初探

[复制链接]

升级  42.67%

32

主题

32

主题

32

主题

秀才

Rank: 2

积分
114
 楼主| 发表于 2012-12-12 00:26:38 | 显示全部楼层 |阅读模式
<div id="cnblogs_post_body">前一段时间,组里分享一个关于3D投影至2D平面上的主题,一直没有时间细细的咀嚼一下。
  每天的代码大部分都是在写业务逻辑,细想一下,自从毕业上班以来,一直没有去写过关于图形展示方面的东东,所以决定先入个门,以后要是有需求了也可以快速上手,也当补充一下高中的数学知识。
  1,旋转
  处理旋转需要用到一个旋转变换公式:
  http://zh.wikipedia.org/wiki/%E5%8F%98%E6%8D%A2%E7%9F%A9%E9%98%B5#.E9.80.8F.E8.A7.86.E6.8A.95.E5.BD.B1
  绕原点逆时针旋转 θ 度角的变换公式是 ,用矩阵表示为:
  
  由于是x,y,z的三维坐标系,所以根据上面的公式,可以得到如下的转换公式:
  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:23fb6a6b-6db9-4cb6-85f7-3962f164d3c6" class="wlWriterEditableSmartContent">//向量旋转function rotateX(x, y, z, a) {//绕X轴旋转return {x: x,y: y * Math.cos(a) - z * Math.sin(a),z: y * Math.sin(a) + z * Math.cos(a)};}function rotateY(x, y, z, a) {//绕Y轴旋转return {x: x * Math.cos(a) + z * Math.sin(a),y: y,z: z * Math.cos(a) - x * Math.sin(a)};}function rotateZ(x, y, z, a) {//绕Z轴旋转return {x: x * Math.cos(a) - y * Math.sin(a),y: x * Math.sin(a) + y * Math.cos(a),z: z};}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表