已知两条线line1(x1,y1,x2,y2),line2(x1,y1,x2,y2),如何判断这两条线是否相交,如果相交,则求出交叉点的坐标?希望大家帮忙解决!!

解决方案 »

  1.   

    基本思路:直线方程:
    aX+b = y把两点坐标带入得到a,b的值得到两条直线的直线方程将两条直线的方程连立方程组求解,解为焦点坐标。以下Sample.不过这种东西自己复习一下应该就可以搞定。初中数学问题。public class Intersection 

    public static double[] getIntersection(double a1,double b1,double c1, 
    double a2,double b2,double c2) 

    double[] res=new double[2]; 
    res[0]=(c1*b2-c2*b1)/(a1*b2-a2*b1); 
    res[1]=(a1*c2-a2*c1)/(a1*b2-a2*b1); return res; 
    } public static double[] getIntersection(double[] fun1,double[] fun2) 

    if(fun1.length!=3||fun2.length!=3) 
    return null; 
    else 
    return getIntersection(fun1[0],fun1[1],fun1[2], 
    fun2[0],fun2[1],fun2[2]); 
    } public static void main(String[] args) 

    double[] f1={2.0312,-1.0,-24.6972}; 
    double[] f2={-0.4073,-1.0,-0.6230}; 
    double[] f3={-0.995,-1.0,0}; 
    double[] res=getIntersection(f3,f2); 
    for(double r:res) 
    System.out.println (r); 

    }
      

  2.   

    问题已解决,其实我第一次思考的时候也是解议程组,但是对于该项目具体的需求,有点复杂。
    解决方法:
    先生成两上Line2D对象,利用该对象的line1.intersectsLine(line2)方法判断是否相交,
    再利用一条线上的点与另一条线的距离是否为零来求交叉坐标。谢谢大家!