坐标系旋转变换函数

因工作需要,有时要把直角坐标系绕原点旋转。假如旋转之前坐标系某点坐标是(x,y),旋转之后坐标是(x1,y1)两者如何转换呢?

本文介绍一个函数 vRotationTransform(),能够在两者间转换。、函数的输入变量是dX,dY,是旋转之前的坐标;旋转角度是dAngle。旋转后的坐标iNewX,iNewY是输出变量

#include "rotatetransform.h"
#include 

void vRotationTransform(double dX, double dY, double dAngle, int & iNewX, int & iNewY)
{
    /*假如有一个点(dX,dY).这个点绕原点逆时针旋转角度dAngle(弧度)。运行到新位置的坐标是:
      (iNewX, iNewY)。
      或者等价的说,保持这个点不动,但是新坐标系相对于旧坐标系绕原点顺时针转动dAngle,(dX,dY)在
      新坐标系的坐标是(iNewX, iNewY).*/
    iNewX = dX * cos(dAngle) - dY * sin(dAngle);
    iNewY = dX * sin(dAngle) + dY * cos(dAngle);
} 

正如在注释里解释的的,新坐标与旧坐标的关系也可以理解为保持点不动,让坐标系绕原点做顺时针转动dAngle。该点在新坐标系的坐标就是(x1,y1)

你可能感兴趣的:(坐标系旋转变换函数)