การหมุนจุด X รอบจุดกำเนิดทำได้โดยมุม θ ในทิศทางทวนเข็มนาฬิกาทำได้โดย −
X โดย θ เกี่ยวกับต้นกำเนิด anti-clRotateockwise:X*polar( 1.0,θ )
ในที่นี้ ฟังก์ชันขั้วสำหรับจำนวนเชิงซ้อนถูกกำหนดภายใต้ไฟล์ส่วนหัว
การหมุนของจุด 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)