在平面中,一個點繞任意點旋轉θ度后的點的坐標


平面中,一個點(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;
}
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM