平面中,一个点绕任意点旋转θ度后的坐标(C++实现)

平面中,一个点(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 <<'\t'<< yy << endl;
	}
	return 0;
}

 

猜你喜欢

转载自blog.csdn.net/maitianpt/article/details/84983599