判断点在另外两点的直线上C++代码
时间: 2023-07-28 18:06:48 浏览: 103
判断两直线相交的算法
5星 · 资源好评率100%
以下是一个简单的用C++实现的函数,用于判断点P是否在另外两点A、B所在的直线上:
```c++
#include <iostream>
#include <cmath>
using namespace std;
const double EPS = 1e-6; // 设置一个误差范围,用于判断浮点数相等
bool isPointOnLine(double Px, double Py, double Ax, double Ay, double Bx, double By)
{
if (fabs(Ax - Bx) < EPS) // 如果直线AB垂直于x轴
{
return fabs(Px - Ax) < EPS; // 判断点P是否在直线上
}
else // 否则,计算直线AB的斜率k和截距b
{
double k = (By - Ay) / (Bx - Ax);
double b = Ay - k * Ax;
double d = fabs(k * Px - Py + b) / sqrt(k * k + 1); // 计算点P到直线AB的距离
return d < EPS; // 判断点P是否在直线上
}
}
int main()
{
double Px, Py, Ax, Ay, Bx, By;
cin >> Px >> Py >> Ax >> Ay >> Bx >> By;
if (isPointOnLine(Px, Py, Ax, Ay, Bx, By))
{
cout << "Point P is on line AB." << endl;
}
else
{
cout << "Point P is not on line AB." << endl;
}
return 0;
}
```
在这个实现中,我们首先判断直线AB是否垂直于x轴,如果是,则直接判断点P的横坐标是否等于Ax或Bx;否则,我们计算直线AB的斜率k和截距b,然后代入点P的坐标计算点P到直线AB的距离d,最后判断d是否小于误差范围EPS。
阅读全文