C++中关于一个点绕另一个点旋转
点X绕原点逆时针旋转θ角度的操作如下:
绕原点逆时针旋转X的角度θ:X*polar( 1.0,θ )。
此处,复数的polar函数定义在<complex>头文件中,用于使用相位角和幅值查找复数。polar(mag,angle) 返回一个复数。
点X绕点Y旋转
要使一个点绕另一个点旋转,我们将使用平移,其中所有坐标的移动都发生在特定方向上。

X绕Y旋转的步骤。
将X平移到Y,使Y成为新的原点。这可以通过从所有点中减去Y来完成。X现在变为X-Y。
使用上述公式围绕新原点旋转(X-Y):(X-Y)*polar( 1.0,θ )
通过向所有点添加Y进行反向平移。
X绕Y旋转的结果为:(X-Y)*polar( 1.0,θ ) + Y
以下是演示点绕另一个点旋转的代码
示例
#include <iostream>
#include <complex>
using namespace std;
typedef complex<double> point;
#define x real()
#define y imag()
int main(){
// Rotate P about Q
point X(5.0, 3.0);
point Y(2.0, 4.0);
// Angle of rotation is 90 degrees
double theta = 3.14/2;
point Xnew=(X-Y) * polar(1.0, theta) + Y;
cout << "rotating X 90 degrees anti-clockwise about Y becomes:";
cout << "(" << Xnew.x << ", " << Xnew.y << ")" << endl;
return 0;
}输出
rotating X 90 degrees anti-clockwise about Y becomes:(3.00239, 6.9992)
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP