在C++中求二維平面上點到直線的垂足


假設我們有一個二維平面上的點P和一條直線的方程,任務是找到從P到該直線的垂足。

直線的方程為ax + by + c = 0。經過P點且垂直於該直線的直線方程為ay – bx + d = 0。 設P(x1, y1),Q(x2, y2),將P點的座標代入方程。

ay₁ - bx₁ + d = 0, 所以 d = bx₁ - ay₁

Q點是已知直線和經過P點和Q點的直線的交點,因此我們將求解這兩個方程。

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

由於a,b,c,d都是已知的,我們可以使用以下公式求解:

$$\frac{x-x_{1}}{a}=\frac{y-y_{1}}{b}=\frac{-(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)

更新於:2019年12月18日

1K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告