code: private static double getPlaneAngle(float[] v1, float[] v2, float[] v3, float[] u1, float[] u2, float[] u3) {
  		float[] cross1 = Vector.crossProduct(new float[] { v2[0] - v1[0], v2[1] - v1[1], v2[2] - v1[2] }, new float[] { v3[0] - v1[0], v3[1] - v1[1], v3[2] - v1[2] });
  		float[] cross2 = Vector.crossProduct(new float[] { u2[0] - u1[0], u2[1] - u1[1], u2[2] - u1[2] }, new float[] { u3[0] - u1[0], u3[1] - u1[1], u3[2] - u1[2] });
  
  		float num = Vector.dot(cross1, cross2);
  		float den = Vector.length(cross1) * Vector.length(cross2);
  
  		float a = num / den;
  		if (a > 1) {
  			a = 1;
  		}
  		if (a < -1) {
  			a = -1;
  		}
  		double result = Math.acos(a);
  
  		return result;
  	}
docs: Get the angle in radians between two planes
  
  @param v1
  @param v2
  @param v3
  @param u1
  @param u2
  @param u3
  @return