查找从2D平面中的点到C ++中的直线的垂直脚
考虑到我们在2D平面中有一个点P和一条直线方程,任务是找到从P到直线的垂直线的底角。
直线方程为ax+by+c=0。穿过P且垂直于直线的线方程。通过P和Q的直线方程为ay–bx+d=0。同时P(x1,y1)和Q(x2,y2),因此我们将P的坐标放在方程上。
ay1−bx1+d=0,所以d=bx1−ay1
Q也是给定线与穿过P和Q的线的交点,因此我们将找到这两个方程的解。
ax+by+c=0,∧ay-bx+(bx1-ay1)=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)