ในปัญหานี้ เราได้รับพิกัดของสองจุดของเส้น จุดเริ่มต้น A(xA, yA) และจุดกึ่งกลาง M(xM, yM) ภารกิจของเราคือ หาจุดปลายอีกข้างของเส้นโดยมีจุดปลายหนึ่งและจุดกึ่งกลาง
มาดูตัวอย่างเพื่อเข้าใจปัญหา
อินพุต
A = [1, 2], M = [3, 0]
เอาต์พุต
[5, -2]
คำอธิบาย
เส้นคือ -

วิธีการแก้ปัญหา
เพื่อแก้ปัญหานี้ เราจะใช้แนวคิดทางเรขาคณิตที่เราเรียนในคณิตศาสตร์ หากคุณจำได้ มีสูตรจุดกึ่งกลางสำหรับทุกเส้น ซึ่งคือ
mid(x) = (x1 + x2) / 2 mid(y) = (y1 + y2) / 2
แต่เราได้รับค่าจุดกึ่งกลางในโจทย์และต้องการค่า x2 และ y2 ดังนั้น เราจะเปลี่ยนสูตรตามนั้น
x2 = 2*mid(x) - x1 y2 = 2*mid(y) - y1
ใช้สูตรด้านบน เราสามารถหาค่าจุดปลายอีกข้างโดยใช้จุดกึ่งกลางและจุดหนึ่งของเส้น
ตัวอย่าง
โปรแกรมสาธิตการทำงานของวิธีแก้ปัญหาของเรา
#include <iostream> using namespace std; void findMissingPointLine(float x1, float y1, float xm, float ym){ float x2 = (2 * xm) - x1; float y2 = (2 * ym) - y1; cout<<"B(x, y) = "<<"( "<<x2<<", "<<y2<<" )"; } int main() { float x1 = -4, y1 = -1, xm = 3, ym = 5; cout<<"The other end point of the line is \n"; findMissingPointLine(x1, y1, xm, ym); return 0; }
เอาต์พุต
The other end point of the line is B(x, y) = ( 10, 11 )