Quay điểm X quanh gốc gốc bởi góc θ theo chiều ngược kim đồng hồ được thực hiện bằng:
X * polar(1.0, θ)
Hàm polar cho số phức được định nghĩa trong <complex>, dùng để tìm số phức từ góc pha và độ lớn. polar(mag, angle) trả về số phức.
Quay điểm X quanh điểm Y
Để quay một điểm quanh điểm khác, ta dùng phép tịnh tiến - di chuyển tất cả tọa độ theo một hướng xác định.

Các bước quay X quanh Y
- Tịnh tiến X đến Y, để Y trở thành gốc mới. Trừ Y từ tất cả điểm. X thành X-Y.
- Quay (X-Y) quanh gốc mới: (X-Y) * polar(1.0, θ)
- Tịnh tiến ngược bằng cách cộng Y vào tất cả điểm.
Công thức: (X-Y) * polar(1.0, θ) + Y
Mã minh họa quay điểm quanh điểm khác:
Ví dụ
#include <iostream>
#include <complex>
using namespace std;
typedef complex<double> point;
#define x real()
#define y imag()
int main() {
// Quay P quanh Q
point X(5.0, 3.0);
point Y(2.0, 4.0);
// Góc quay 90 độ
double theta = 3.14 / 2;
point Xnew = (X - Y) * polar(1.0, theta) + Y;
cout << "Quay X 90 độ ngược kim đồng hồ quanh Y thành: ";
cout << "(" << Xnew.x << ", " << Xnew.y << ")" << endl;
return 0;
}
Đầu ra
Quay X 90 độ ngược kim đồng hồ quanh Y thành: (3.00239, 6.9992)