判断一个点与直线的位置

本文介绍了如何判断一个点与直线的位置关系,包括在直线上、右侧或左侧。通过直线的一般式计算出系数,并给出C++实现的类`Line2d`,该类包含计算点在线上的位置和分类点的位置的函数。
摘要由CSDN通过智能技术生成

来源于三角剖分过程:其中要判断第三个点与edge的位置关系。

第一步是布点,所以edge是由两个顶点构成的。假如有两个点p1(x1,y1)p2(x2,y2)则利用直线的一般式AX+BY+C=0。通过两个顶点来计算出

直线一般式的系数A,B,C。方法如下:将一般式转化为截距式可得到Y=-(C/B)-(A/B)X由两顶点可以算出K=(y2-y1)/(x2-x1)则K和-(A/B)是相等的。可得出

A=y2-y1;B=x1-x2;将求出的A,B带入到AX+BY+C=0,同时带入一点p1(x1,y1)综合可以得到C=-(y2-y1)*x1-(x1-x2)*y1故得到了所有的系数。

A=y2-y1;B=x1-x2;C=y1*(x2-x1)-x1*(y2-y1)

假如有第三个点p3(x3,y3)则判断p3与直线的位置关系可以按一下算法

将p3(x3,y3)带入到直线AX+BY+C=0{A=y2-y1;B=x1-x2;C=y1*(x2-x1)-x1*(y2-y1)}中

如果A*x3+B*y3+C=0则表示点p3(x3,y3)在直线上。

如果A*x3+B*y3+C>0则表示点p3(x3,y3)在直线右侧。

如果A*x3+B*y3+C<0则表示点p3(x3,y3)在直线左侧。

参考程序(别人的)

class Line2d
{
//构造函数
public:
    Line2d(void);//参数默认设置为1.0
    Line2d(const Point2d& p1, const Point2d& p2);/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值