หาพิกัดทั้งหมดที่เป็นไปได้จากพิกัดสามจุดที่กำหนด เพื่อสร้างรูปสี่เหลี่ยมขนานที่มีพื้นที่ไม่เป็นศูนย์ สมมติ A, B, C เป็นสามจุดที่กำหนด เราสามารถมีสถานการณ์ที่เป็นไปได้เพียงสามแบบ
- AB, AC เป็นด้าน และ BC เป็นเส้นทแยงมุม
- AB, BC เป็นด้าน และ AC เป็นเส้นทแยงมุม
- BC, AC เป็นด้าน และ AB เป็นเส้นทแยงมุม
ดังนั้นเราสามารถบอกได้ว่ามีเพียงสามพิกัดที่เป็นไปได้ ซึ่งจากนั้นเราสามารถสร้างรูปสี่เหลี่ยมขนานได้ หากมีพิกัดสามจุด เนื่องจากด้านตรงข้ามเท่ากัน ดังนั้น AD = BC และ AB = CD เราจะคำนวณพิกัดของจุดที่หายไป D ดังนี้ −
(Dx - Ax, Dy - Ay) = (Cx - Bx, Cy - By) Dx = Ax + Cx - Bx Dy = Ay + Cy - By
ตัวอย่าง
#include <iostream>
using namespace std;
void printPoints(int ax, int ay, int bx, int by, int cx, int cy){
cout << ax + bx - cx << ", " << ay + by - cy << endl;
cout << ax + cx - bx << ", " << ay + cy - by << endl;
cout << cx + bx - ax << ", " << cy + by - ax << endl;
}
int main() {
int ax = 5, ay = 0; // พิกัดของ A
int bx = 1, by = 1; // พิกัดของ B
int cx = 2, cy = 5; // พิกัดของ C
printPoints(ax, ay, bx, by, cx, cy);
}
ผลลัพธ์
4, -4 6, 4 -2, 1