axisAngle.setZ(rot10 - rot01); double mag = axisAngle.getX() * axisAngle.getX() + axisAngle.getY() * axisAngle.getY() + axisAngle.getZ() * axisAngle.getZ(); axisAngle.setX(axisAngle.getX() * invMag); axisAngle.setY(axisAngle.getY() * invMag); axisAngle.setZ(axisAngle.getZ() * invMag); axisAngle.setZ(0.0); axisAngle.setAngle(0.0);
axisAngle.setZ(mat10 - mat01); double mag = axisAngle.getX() * axisAngle.getX() + axisAngle.getY() * axisAngle.getY() + axisAngle.getZ() * axisAngle.getZ(); axisAngle.setX(axisAngle.getX() * invMag); axisAngle.setY(axisAngle.getY() * invMag); axisAngle.setZ(axisAngle.getZ() * invMag); axisAngle.setZ(cos45); axisAngle.setZ(xz / axisAngle.getX()); axisAngle.setZ(cos45); axisAngle.setZ(yz / axisAngle.getY()); axisAngle.setZ(0.0); axisAngle.setZ(Math.sqrt(zz)); axisAngle.setX(xz / axisAngle.getZ()); axisAngle.setY(yz / axisAngle.getZ());
public static boolean axisAngleEpsilonEqualsIgnoreFlippedAxes(AxisAngle4d original, AxisAngle4d result, double epsilon) { if (original.epsilonEquals(result, epsilon)) { return true; } else { AxisAngle4d originalNegated = originalAxisAngleForEpsilonEquals.get(); originalNegated.set(original); originalNegated.setAngle(originalNegated.getAngle() * -1.0); originalNegated.setX(originalNegated.getX() * -1.0); originalNegated.setY(originalNegated.getY() * -1.0); originalNegated.setZ(originalNegated.getZ() * -1.0); return originalNegated.epsilonEquals(result, epsilon); } } }