Beispiel #1
0
  static OrderedTriple[] sectPlanes(
      OrderedTriple p11,
      OrderedTriple p12,
      OrderedTriple p13,
      OrderedTriple p21,
      OrderedTriple p22,
      OrderedTriple p23) {
    OrderedTriple n1 = p11.minus(p12).cross(p12.minus(p13));
    OrderedTriple n2 = p21.minus(p22).cross(p22.minus(p23));
    OrderedTriple n3 = n1.cross(n2);

    double[] m1 = {n1.x, n1.y, n1.z};
    double[] m2 = {n2.x, n2.y, n2.z};
    double[] m3 = {n3.x, n3.y, n3.z};
    double[][] m = {m1, m2, m3};
    Matrix M = new Matrix(m);
    double[] b1 = {n1.dot(p11)};
    double[] b2 = {n2.dot(p21)};
    double[] b3 = {0};
    double[][] b = {b1, b2, b3};
    Matrix B = new Matrix(b);
    Matrix S = M.inverse().times(B);
    // OrderedTriple s1 = new OrderedTriple( S.mat[0][0], S.mat[1][0],
    // S.mat[2][0] );
    OrderedTriple s1 = new OrderedTriple(S.mat[0][0], S.mat[1][0], S.mat[2][0]);
    OrderedTriple s2 = s1.plus(n3);
    OrderedTriple[] answer = {s1, s2};
    return answer;
  }