代码改变世界

2D中点的旋转的推导

2011-01-18 22:18  CoolJie  阅读(428)  评论(0编辑  收藏  举报

首先要记住四个公式,就是三角函数的和差公式:

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

接下来看图:

这个图很清晰了,比如要知道旋转后的P'(x',y'),那么可以先求P(x,y),当然在实际编程中,P(x,y)的坐标是已知条件。


cosα = x / r 可以得到 x = r * cosα

sinα = y / r 可以得到 y = r * sinα


而cos(α+θ) = x' / r 可以得到 x' = r * cos(α + θ)

   sin(α + θ) = y' / r可以得到 y' = r * sin(α + θ)


再根据三角函数的和差公式可以知道

x' = r*cosα*cosθ - r*sinα*sinθ = x * cos θ – y * sin θ

y' = r*sinα*cosθ+r*cosα*sinθ = y * cos θ + x * sin θ