Point2f pointIntersection(Point2f p1, Point2f p2, Point2f p3, Point2f p4)
{
//p1,p2所在一条直线,p3,p4所在一条直线,求两条直线的交点
//p1,p2所成的直线
BOOL flag1=FALSE,flag2=FALSE;
Point2f p;//存放最后的交点
float k1,k2,b1,b2;
if(p2.x==p1.x)//分母不能为0
p.x=p2.x;
else
{
flag1=TRUE;
k1=(p2.y-p1.y)/(p2.x-p1.x);
b1=p2.y-k1*p2.x;
}
//p3,p4所成的直线
if(p4.x==p3.x)
p.x=p3.x;
else
{
flag2=TRUE;
k2=(p4.y-p3.y)/(p4.x-p3.x);
b2=p4.y-k2*p4.x;
}
//两直线的交点
if(flag1==FALSE&&flag2==TRUE)
{
p.y=k2*p.x+b2;
return p;
}
if(flag1==TRUE&&flag2==FALSE)
{
p.y=k1*p.x+b1;
return p;
}
if(flag1==TRUE&&flag2==TRUE)
{
p.x=(b2-b1)/(k1-k2);
p.y=k1*p.x+b1;
return p;}
}