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;} }