Processing math: 100%

在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都是已知的,我们可以使用以下公式求解:

xx1a=yy1b=(ax1+by1+c)a2+b2

示例

 在线演示

#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+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告