code: public static Coordinate getLineWithPlaneIntersection( Coordinate lC1, Coordinate lC2, Coordinate pC1, Coordinate pC2,
              Coordinate pC3 ) {
          double[] p = getPlaneCoefficientsFrom3Points(pC1, pC2, pC3);
  
          double denominator = p[0] * (lC1.x - lC2.x) + p[1] * (lC1.y - lC2.y) + p[2] * (lC1.z - lC2.z);
          if (denominator == 0.0) {
              return null;
          }
          double u = (p[0] * lC1.x + p[1] * lC1.y + p[2] * lC1.z + p[3]) / //
                  denominator;
          double x = lC1.x + (lC2.x - lC1.x) * u;
          double y = lC1.y + (lC2.y - lC1.y) * u;
          double z = lC1.z + (lC2.z - lC1.z) * u;
          return new Coordinate(x, y, z);
      }
docs: Get the intersection coordinate between a line and plane.
  
  <p>The line is defined by 2 3d coordinates and the plane by 3 3d coordinates.</p>
  
  <p>from http://paulbourke.net/geometry/pointlineplane/</p>
  
  @param lC1 line coordinate 1.
  @param lC2 line coordinate 2.
  @param pC1 plane coordinate 1.
  @param pC2 plane coordinate 2.
  @param pC3 plane coordinate 3.
  @return the intersection coordinate or <code>null</code> if the line is parallel to the plane.