Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

2D 평면의 한 점에서 C++의 선까지 수직인 발 찾기

<시간/>

2D 평면에 점 P가 있고 선 방정식이 있다고 가정하면 작업은 P에서 선까지 수직선의 발을 찾는 것입니다.

직선의 방정식은 ax + by + c =0입니다. 직선이 P를 지나고 직선에 수직인 방정식입니다. P와 Q를 지나는 직선의 방정식은 ay – bx + d =0이 됩니다. 또한 P(x1, y1), Q(x2, y2)도 방정식에 P의 좌표를 대입합니다.

ay 1−bx 1+d=0이므로 d=bx1−ay 1

또한 Q는 주어진 선과 P와 Q를 지나는 선의 교점이므로 이 두 방정식의 해를 구합니다.

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

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)