概述
```csharp
/// <summary>
/// 判断点和直线的位置关系
/// </summary>
/// <param name="LinePntA">直线上的一点</param>
/// <param name="LinePntB">直线上的另一点</param>
/// <param name="PntM">需要判断的点</param>
/// <returns></returns>
private int JudgePointToLine(Point3d LinePntA, Point3d LinePntB, Point3d PntM)
{
int nResult = 0;
double ax = LinePntB.X - LinePntA.X;
double ay = LinePntB.Y - LinePntA.Y;
double bx = PntM.X - LinePntA.X;
double by = PntM.Y - LinePntA.Y;
double judge = ax * by - ay * bx;
if (judge > 0)
{
nResult = 1;
}
else if (judge < 0)
{
nResult = -1;
}
else
{
nResult = 0;
}
return nResult;
}
1、点在线的左边还是右边
设线段端点为从 A(x1, y1)到 B(x2, y2), 线外一点 P(x0,y0),
判断该点位于有向线 A→B 的那一侧。
a = ( x2-x1, y2-y1)
b = (x0-x1, y0-y1)
a x b = | a | | b | sinφ (φ为两向量的夹角)
| a | | b | ≠ 0 时, a x b 决定点 P的位置
所以 a x b 的 z 方向大小决定 P位置
(x2-x1)(y0-y1) – (y2-y1)(x0-x1) > 0 左侧
(x2-x1)(y0-y1) – (y2-y1)(x0-x1) < 0 右侧
(x2-x1)(y0-y1) – (y2-y1)(x0-x1) = 0 线段上
最后
以上就是感性悟空为你收集整理的判断点和直线的位置关系的全部内容,希望文章能够帮你解决判断点和直线的位置关系所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复