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

Tsecer的回音岛

Tsecer的博客

 
 
 

日志

 
 

坐标系旋转之后坐标位置的计算  

2017-02-16 21:24:11|  分类: 计算机图形学 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

零、坐标系旋转

在有些简单的场景中,我们希望判断一个倾斜的矩形和一个球体是否碰撞,这个时候最好把倾斜的图形转换为“正规”图形,也就是矩形边和坐标系垂直(或平行),而球体在旋转之后形状不变,所以判断起来比较简单。

一、直观描述

下图参考了这个这个文档:

坐标系旋转之后坐标位置的计算 - Tsecer - Tsecer的回音岛

 

在坐标系逆时针旋转a度之后,点A在新坐标系中的位置为:

X = OD = OA * cos (b - a) = OA (cos(b) * cos(a) + sin(b) * sin(a)) = OA * cos(b) * cos(a) + OA * sin(b) * sin(a) = OC * cos(a) + OB * sin(a) = x * cos(a) + y * sin(a)

Y = OE = OA * sin (b - a) = OA (sin(b) * cos(a) - cos(b) * sin(a)) = OA * sin(b) * cos(a) - OA * cos(b) * sin(a) = OB * cos(a) - OC * sin(a) = y * cos(a) - x * sin(a)

二、旋转之后任意两点的距离

假设(x0,y0), (x1, y1) 按照前面旋转为 (X0,Y0),(X1,Y1),则两点之间距离的平方为

(X1 - X0)^2  + (Y1 - Y0)^2 =

(x1 * cos(a) + y1 * sin(a) - (x0 * cos(a) + y0 * sin(a))) ^2 + ( y1 * cos(a) - x1 * sin(a)) -  y0 * cos(a) - x0 * sin(a)) )^2 =

( (x1 - x0) * cos(a) + (y1 - y0) * sin(a) ) ^ 2 + ( (y1 - y0) * cos(a) - (x1 - x0) * sin (a)) ^2 =

(dx * cos (a)) ^2 + (dy * sin (a)) ^ 2  + 2dx * dy * sin (a) * cos(a) + (dy * cos (a)) ^ 2 + (dx * sin (a)) ^ 2 - 2 dx * dy * sin(a) * cos(a) = 

(dx * cos (a)) ^2  + (dx * sin (a)) ^ 2   + (dy * sin (a)) ^ 2 + (dy * cos (a)) ^ 2 + 2dx * dy * sin (a) * cos(a) - 2 dx * dy * sin(a) * cos(a)

=dx * dx (cos(a) * cos(a) + sin(a) * sin(a)) + dy * dy *(cos(a) ^2 + sin(a)^2)

= dx * dx + dy *dy

也就是任意两点之间的距离在旋转之后不变,所以可以看作是刚体运动

三、斜率为k的直线坐标逆时针旋转a度之后

旋转之前,直线y = tan (a) * x + b 上点的坐标为(x,tan(a) * x + b),逆时针旋转a之后该直线上点的Y坐标为

y * cos(a) - x * sin(a) = 

(tan(a) * x + b) * cos(a) - x * sin(a) =

sin(a) * x + b * cos(a) -  x * sin(a) =

b * cos (a)

也就是转换之后该线段上点的Y坐标变为常量值,这意味着这条线和X轴平行

四、备注

这个是图形中比较常见和基础的概念,这里简单总结记录下。由于公式编辑和绘图比较麻烦,所以内容很粗糙。

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

历史上的今天

评论

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

页脚

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