坐标系旋转变换函数

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

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

#include "rotatetransform.h"
#include <MATH.H>

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值