Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาเชิงตั้งฉากจากจุดในระนาบ 2 มิติไปยังเส้นใน C++


พิจารณาว่าเรามีจุด P ในระนาบ 2 มิติและสมการของเส้นตรง ภารกิจคือการหาเท้าของเส้นตั้งฉากจาก P ถึงเส้นตรง

สมการของเส้นตรงคือ ax + โดย + c =0 สมการของเส้นตรงที่ลากผ่าน P และตั้งฉากกับเส้นตรง สมการของเส้นที่ลากผ่าน P และ Q จะเป็น ay – bx + d =0 นอกจากนี้ P(x1, y1) และ Q(x2, y2) เราจึงใส่พิกัดของ P ลงในสมการ

คือ 1−bx 1+d=0, ดังนั้น d=bx1−ay 1

นอกจากนี้ Q คือจุดตัดของเส้นที่กำหนดและเส้นที่ผ่าน P และ Q ดังนั้นเราจะพบคำตอบสำหรับสมการทั้งสองนี้

ax+by+c=0,∧ay−bx+(bx1−ay 1)=0

เท่าที่ทราบ a, b, c, d เราสามารถหาได้โดยใช้สูตรนี้ -

$$\frac{x-x_{1}}{a}=\frac{y-y_{1}}{b}=\frac{f-(ax_{1}+by_{1}+c)}{ a^{2}+b^{2}}$$

ตัวอย่าง

#include<iostream>
using namespace std;
void getFootCoordinate(double a, double b, double c, double x1, double y1) {
   double p = -1 * (a * x1 + b * y1 + c) / (a * a + b * b);
   double x = p * a + x1;
   double y = p * b + y1;
   cout << "(" << x << ", " << y <<")";
}
int main() {
   double a = 0.0;
   double b = 1.0;
   double c = -2;
   double x1 = 3.0;
   double y1 = 3.0;  
   cout << "The coordinate is: ";
   getFootCoordinate(a, b, c, x1, y1);
}

ผลลัพธ์

The coordinate is: (3, 2)