注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

享受编码

    的乐趣

 
 
 

日志

 
 

2D(俯视角度)到2.5D(斜45°角视图)的转换公式  

2011-11-02 23:10:56|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://monzon.blogbus.com/logs/57257935.html

为毛我会写这种东西= =
好吧,主要工作中程序大叔要用,网上找了半天没找到现成的,都是只有坐标平移、旋转或者平移兼旋转的变换公式,于是只好自己推,既然推了,就顺便搬过来= =(可是写了n页草稿纸的东西啊,自从大学毕业后我都没这么跟数学近距离亲密接触过了,一开始连怎么在计算器按开方和反三角函数都忘了= =)

设2D坐标系有点A(x,y),到原点O(0,0)的距离为e,AO与x轴所成角度为α,
求2.5D坐标系影射到原2D坐标系的点A’(x’,y’),,距离e’和角度α’。

α’ = arctan [ sin(α - 45°) / 2cos(α - 45°) ]

y’ = sin(α - 45°)*e / 2
x’ = y’/ tanα’
e’ = 根号(x’^2+y’^2)

e’ = [sin(α - 45°)*e / 2] / sinα’
x’= cosα’ * e’
y’= sinα’ * e’

两个x’、y’、e’ 公式可以互相验证

也有一个比较简便的求x’,y’方法,就是按照2.5D是2D坐标系旋转45度,然后高度压缩一半来求,于是

x’= x*cos45°-y*sin45°
y’= (x*sin45°+y*cos45°) / 2 

以上是一个数学上常见的正常坐标系,但其实在计算机应用时,通常不一定用这个坐标系,而是用屏幕坐标系(左上角为原点,y轴向下符号为正,角度旋转顺时针符号为正),而坐标旋转的中心点又不在原点而在另设的一个中心点C(w, z)

则简便方法有:
x’=(x-w)*cos45°- (y-z)*sin45° + w
y’’=(x-w)*sin45° + (y-z)*cos45° + z
若y’’< z,则y’= y’’+ (z-y’’)/2
若y’’> z,则y’= y’’- (y’’- z)/2 

至于复杂方法转换也差不多,例如

α’ = arctan [ sin(α + 45°) / 2cos(α + 45°) ]
y’ = sin(α + 45°)*e / 2 + z
x’ = y’/ tanα’ + w
e’则是三角形知道两直角边求斜边的公式了

用的时候还有考虑过除了变换之外还要缩放的问题,缩放比例如果已知还是挺简单的,不过工作上因为比例是不已知的而且中心点和原点在2D和2.5D坐标系里并不完全对应,于是总是出现一些误差= =

其实这份工作简直啥都做,从计算到编程到画图到写作等等等……不过也因此没那么枯燥,不过问题是钱不多,偶尔也会有机械性重复劳动,我怕死机械性重复和总是做同一样东西了= =不过通常时间则是因为人少所以氛围轻松自由随便,随了确实在做事情没啥在上班的感觉,可是这样会死于安乐的吧……可是一想到其他地方可能会出现的流水线枯燥无味和重复以及严肃例如实习时所在的公司,我就觉得暗无天日了(连一个月都差点熬不下去啊= =)

  评论这张
 
阅读(1318)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017