平面中,一个点(x,y)绕任意点(dx,dy)顺时针旋转a度后的坐标
xx= (x - dx)*cos(-a) - (y - dy)*sin(-a) + dx ;
yy= (x - dx)*sin(-a) + (y - dy)*cos(-a) +dy ;
平面中,一个点(x,y)绕任意点(dx,dy)逆时针旋转a度后的坐标
xx= (x - dx)*cos(a) - (y - dy)*sin(a) + dx ;
yy= (x - dx)*sin(a) + (y - dy)*cos(a) +dy ;
C++实现:
#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <stdio.h>
#define PI 3.141592654
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int x = 1, y = 2;//旋转的点
int dx = 1, dy = 1;//被绕着旋转的点
for (int i = 0; i <= 8; i++)
{
//int angle = 45 * i;//逆时针
int angle = -45 * i;//顺时针
double xx = (x - dx)*cos(angle * PI / 180) - (y-dy)*sin(angle * PI / 180) + dx;
double yy = (y-dy)*cos(angle * PI / 180) + (x-dx)*sin(angle * PI / 180) + dy;
cout << xx <<' '<< yy << endl;
}
return 0;
}