在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)
廣告