来源于三角剖分过程:其中要判断第三个点与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);/