寻找一个能返回两条相交直线交点坐标的方法。
请高手告诉我此方法来自哪个包的哪个类。

解决方案 »

  1.   

    如果是没有,那应该怎么写呢?我现在只知道两条直线的起点和终点坐标(x1,y1)(x2,y2)
      

  2.   

    答:当然可以自己写。但我想,使用apache.commons.math的JAVA数学包很方便。如:
    设第一条直线的两个端点分(x1,y1)、(x2,y2)如:(0,0)到(1,1)
    设第二条直线的两个端点分(m1,n1)、(m2,n2)如:(1,0)到(0,1)
    求它们的交点。代码如下:
    mport org.apache.commons.math.linear.* ;
    import org.apache.commons.math.*;
    public class Line {
    public static void main(String[] args) {

    //设第一条直线的两个端点分(x1,y1)、(x2,y2)如:(0,0)到(1,1)
    //设第二条直线的两个端点分(m1,n1)、(m2,n2)如:(1,0)到(0,1)
    //求它们的交点
    double x1=0,y1=0,x2=1,y2=1,m1=1,n1=0,m2=0,n2=1;

    //开始计算
    /*
      其实就是解方程:
      a1*x+y=b1
      a2*x+y=b2
      的解
    */
    double a1=-(y2-y1)/(x2-x1),b1=y1-x1*(y2-y1)/(x2-x1),
           a2=-(n2-n1)/(m2-m1),b2=n1-m1*(n2-n1)/(m2-m1);

    double[][] coefficientsData = {{a1, 1}, {a2, 1}};
    RealMatrix coefficients = new RealMatrixImpl(coefficientsData);
    double[] constants = {b1,b2};
    double[] solution = coefficients.solve(constants);
    System.out.println("它们的交点是:x="+solution[0]+"y="+solution[1]); }}
      

  3.   

    纯粹的数学方法public class Main {    /**
         * @param args the command line arguments
         */
    public static void main(String[] args){
         double x1=6,y1=-5,x2=15,y2=-9;    //设x1,y1;x2,y2为第一个直线方程上的2个坐标点,
         double x3=4,y3=8,x4=7,y4=9;    //设x1,y1;x2,y2为第二个直线方程上的2个坐标点,
         double a1=(y1-y2)/(x1-x2);        //设直线 方程为y=a*x+b;根据两点可以常量a和b;
         double b1=y1-(x1*a1);             //a1和b1为第一个方程的常量。
         double a2=(y3-y4)/(x3-x4);
         double b2=y3-(x3*a2);             //a2和b2为第一个方程的常量。
         double x,y;
        // double y=a1*x+b1;               第一条直线方程
         //y=a2*x+b2;                      第二个直线方程。
         //两条直线方程组成方程组在求解出x和y,x和y就是所求的交点。
         x=(b2-b1)/(a1-a2);
         y=a1*x+b1;
         System.out.println("两条直线的交点为:"+"("+x+","+y+")");
    }
      

  4.   

    斥责 Sun公司的员工不干活!