การหมุนจุด X รอบจุดกำเนิด (origin) ด้วยมุม θ ในทิศทาง عكسเข็มนาฬิกา (anti-clockwise) ทำได้โดย:
X หมุน θ รอบจุดกำเนิด anti-clockwise: X * polar(1.0, θ)
ที่นี่ ฟังก์ชัน polar สำหรับจำนวนเชิงซ้อน (complex numbers) ถูกกำหนดใน header <complex> และใช้หาจำนวนเชิงซ้อนจากมุมเฟส (phase angle) และขนาด (magnitude) polar(mag, angle) คืนค่าจำนวนเชิงซ้อน
การหมุนจุด X รอบจุด Y
เพื่อหมุนจุดรอบจุดอื่น เราจะใช้การแปลกะทบ (translation) ซึ่งเป็นการเคลื่อนย้ายพิกัดทั้งหมดในทิศทางหนึ่ง

ขั้นตอนการหมุน 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() {
// หมุน P รอบ Q
point X(5.0, 3.0);
point Y(2.0, 4.0);
// มุมหมุน 90 องศา
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)