2D旋转的数据基础

2D旋转的数据基础


最近看Direct3d 游戏编程基础(二版),附录c数学入门-3d中的点中"将一点按逆时针旋转θ弧度,可使用下面的公式:

x′ = x * cos θ – y * sin θ; y′ = y * cos θ + x * sin θ",没有推倒,我又看忘了的公式,最后在http://dev.yesky.com/221/2504221.shtml上"在J2ME/MIDP中实现图像旋转"解释不错,留个纪念.先给出两角和公式:

sin(A+B)=sinAcosB+cosAsinBsin(A-B)=sinAcosB-sinBcosA
cos(A+B)=cosAcosB-sinAsinBcos(A-B)=cosAcosB+sinAsinB

  考虑笛卡儿直角坐标系中单个点旋转的情况。如图二示,这里点P(x,y)到原点O绕O点逆时针旋转角度θ后到点P′(x′,y′)。由三角函数的几何意义,有x = r*cos α ,y = r*si n α和x′ = r*cos(α +θ) , y′ = r*sin(α + θ),推出:

x′ = x * cos θ – y * sin θ
y′ = y * cos θ + x * sin θ

  当把旋转点一般化为Q(x0,y0),得到:

x′ = x0 + (x - x0) cos θ - (y - y0) sin θ
y′ = y0 + (y - y0) cos θ + (x - x0) sin θ

  在开发时,我们使用设备坐标系,它以屏幕的左上角为坐标原点,y轴方向向下。此时,我们不妨视θ为饶旋转点顺时针旋转的角度,这样,上面的公式依然成立。


图二 2D点的旋转

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值