求C++程序:二维平面内,两个线段是否相交。

来源:百度知道 编辑:UC知道 时间:2024/06/07 01:41:57
已知二维坐标内:
一直线两个端点x0,y0,另一个端点x1,y1;
另一条直线两个端点x2,y2,另一个端点x3,y3。

如何使用程序快速判断这两条直线是否相交?焦点是多少?
线段的两个端点,不是直线。
更正一下:
一线段两个端点x0,y0,另一个端点x1,y1;
另一条线段两个端点x2,y2,另一个端点x3,y3。
--------------------------
请直接贴代码。

#include <iostream.h>
class mPoint{
public:
int x;
int y;
mPoint(int pX,int pY){
x=pX;
y=pY;
}
};
void main(){
long Linep1,Linep2;
mPoint pFirst1(1,1),pSecond1(3,1),pFirst2(2,0),pSecond2(2,4);
Linep1 = pFirst1.x * (pSecond1.y - pFirst2.y) +

pFirst2.x * (pFirst1.y - pSecond1.y) +

pSecond1.x * (pFirst2.y - pFirst1.y);

Linep2 = pFirst1.x * (pSecond2.y - pFirst2.y) +

pFirst2.x * (pFirst1.y - pSecond2.y) +

pSecond2.x * (pFirst2.y - pFirst1.y);

if ( ((Linep1 ^ Linep2) >= 0 ) && !(Linep1==0 && Linep2==0))//符号位异或为0:pSecond1和pSecond2在pFirst1->pFirst2同侧
{
cout<<"线段相交"<<endl;
return;
}

//判断pFirst1和pFirst2是否在pSecond1->pSecond2两侧

Linep1 = pSecond1.x * (pFirst1.y - pSecond2.y) +

pSecond2.x * (pSecond1.y - pFirst1.y) +

pF