Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm chân đường vuông góc từ một điểm trong mặt phẳng 2D đến một đường thẳng trong C ++

Xét chúng ta có một điểm P trong mặt phẳng 2D và phương trình của một đường thẳng, nhiệm vụ là tìm chân đường trung trực từ P đến đường thẳng.

Phương trình của đường thẳng là ax + by + c =0. Phương trình của đường thẳng đi qua P và vuông góc với đường thẳng. Phương trình của đường thẳng đi qua P và Q sẽ là ay - bx + d =0. Ngoài ra P (x1, y1) và Q (x2, y2), vì vậy chúng ta đưa tọa độ của P vào phương trình.

ay 1 − bx 1 + d =0, do đó d =bx1 − ay 1

Ngoài ra Q là giao điểm của đường thẳng đã cho và đường thẳng đi qua P và Q nên chúng ta sẽ tìm nghiệm cho hai phương trình này.

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

Vì a, b, c, d đều đã biết, chúng ta có thể tìm thấy bằng cách sử dụng công thức này -

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

Ví dụ

#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);
}

Đầu ra

The coordinate is: (3, 2)