而与二维旋转问题对偶的另一个问题便是二维坐标系旋转变换。这两个问题的形式基本一样,只是旋转的角度相差一个负号。就是这个容易搞混,所以做个笔记,以备查用。 1. 二维旋转公式(算法) 而(此文只针对二维)...
二维旋转公式
ros的tf工具包可以很方便的实现任意坐标系之间的坐标转换。但是,如果只是想简单的测试想法,而又不想编写过于庞杂的代码,考虑自己写二维旋转的函数。而与二维旋转问题对偶的另一个问题便是二维坐标系旋转变换。这两个问题的形式基本一样,只是旋转的角度相差一个负号。就是这个容易搞混,所以做个笔记,以备查用。
1. 二维旋转公式(算法)
而(此文只针对二维)旋转则是表示某一坐标点(x1,y1)(x_1, y_1)(x1,y1)某一坐标系下绕原点逆时针(正向)旋转角度θ\thetaθ后得到新的坐标点(x2,y2)(x_2, y_2)(x2,y2)。
推导:
假定v=(x,y)v=(x, y)v=(x,y),v′=(x′,y′)v'=(x',y')v′=(x′,y′),如上图有x=rcos(ϕ),y=rsin(ϕ),x′=rcos(ϕ+θ),y′=rsin(ϕ+θ)x=rcos(\phi),y=rsin(\phi),x'=rcos(\phi+\theta),y'=rsin(\phi+\theta)x=rcos(ϕ),y=rsin(ϕ),x′=rcos(ϕ+θ),y′=rsin(ϕ+θ)(注意,上图有几处错误,坐标轴边上的cos/sin(θ)cos/sin(\theta)cos/sin(θ)应改为cos/sin(ϕ+θcos/sin(\phi+\thetacos/sin(ϕ+θ)。展开x′,y′x',y'x′,y′可得:
x′=rcos(ϕ)cos(θ)−rsin(ϕ)sin(θ)=xcos(θ)−ysin(θ)x'=rcos(\phi)cos(\theta)-rsin(\phi)sin(\theta)=xcos(\theta)-ysin(\theta)x′=rcos(ϕ)cos(θ)−rsin(ϕ)sin(θ)=xcos(θ)−ysin(θ)
y′=rsin(ϕ)cos(θ)+rcos(ϕ)sin(θ)=xsin(θ)+ycos(θ)y