// (Y_2 - Y_1) . (Y_2 - Y_1)
Vector3D z2 = z1.subtract(y2MinusY1.crossProduct(z1.subtract(y1)).crossProduct(y2MinusY1).divide(y2MinusY1.dotProduct(y2MinusY1)));
Vector3D zAxis = z1.subtract(z2).toUnitVector();
if (absolute.get(order[2]).getZ() == 0.0)
zAxis = zAxis.negate();
Vector3D xAxis = yAxis.crossProduct(zAxis).toUnitVector();
double rotationX = asin(-xAxis.getZ());
double rotationZ = atan2( -xAxis.rotateOverX(rotationX).getY() / cos(rotationX), xAxis.rotateOverX(rotationX).getX() / cos(rotationX));