public static Matrix4d createRotation(Quaterniond rot) { rot = rot.normalize(); return new Matrix4d( 1 - 2 * rot.getY() * rot.getY() - 2 * rot.getZ() * rot.getZ(), 2 * rot.getX() * rot.getY() - 2 * rot.getW() * rot.getZ(), 2 * rot.getX() * rot.getZ() + 2 * rot.getW() * rot.getY(), 0, 2 * rot.getX() * rot.getY() + 2 * rot.getW() * rot.getZ(), 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getZ() * rot.getZ(), 2 * rot.getY() * rot.getZ() - 2 * rot.getW() * rot.getX(), 0, 2 * rot.getX() * rot.getZ() - 2 * rot.getW() * rot.getY(), 2 * rot.getY() * rot.getZ() + 2 * rot.getX() * rot.getW(), 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getY() * rot.getY(), 0, 0, 0, 0, 1); }
public static Matrix3d createRotation(Quaterniond rot) { rot = rot.normalize(); return new Matrix3d( 1 - 2 * rot.getY() * rot.getY() - 2 * rot.getZ() * rot.getZ(), 2 * rot.getX() * rot.getY() - 2 * rot.getW() * rot.getZ(), 2 * rot.getX() * rot.getZ() + 2 * rot.getW() * rot.getY(), 2 * rot.getX() * rot.getY() + 2 * rot.getW() * rot.getZ(), 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getZ() * rot.getZ(), 2 * rot.getY() * rot.getZ() - 2 * rot.getW() * rot.getX(), 2 * rot.getX() * rot.getZ() - 2 * rot.getW() * rot.getY(), 2 * rot.getY() * rot.getZ() + 2 * rot.getX() * rot.getW(), 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getY() * rot.getY()); } }
public static Matrix4d createRotation(Quaterniond rot) { rot = rot.normalize(); return new Matrix4d( 1 - 2 * rot.getY() * rot.getY() - 2 * rot.getZ() * rot.getZ(), 2 * rot.getX() * rot.getY() - 2 * rot.getW() * rot.getZ(), 2 * rot.getX() * rot.getZ() + 2 * rot.getW() * rot.getY(), 0, 2 * rot.getX() * rot.getY() + 2 * rot.getW() * rot.getZ(), 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getZ() * rot.getZ(), 2 * rot.getY() * rot.getZ() - 2 * rot.getW() * rot.getX(), 0, 2 * rot.getX() * rot.getZ() - 2 * rot.getW() * rot.getY(), 2 * rot.getY() * rot.getZ() + 2 * rot.getX() * rot.getW(), 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getY() * rot.getY(), 0, 0, 0, 0, 1); }
public static Matrix3d createRotation(Quaterniond rot) { rot = rot.normalize(); return new Matrix3d( 1 - 2 * rot.getY() * rot.getY() - 2 * rot.getZ() * rot.getZ(), 2 * rot.getX() * rot.getY() - 2 * rot.getW() * rot.getZ(), 2 * rot.getX() * rot.getZ() + 2 * rot.getW() * rot.getY(), 2 * rot.getX() * rot.getY() + 2 * rot.getW() * rot.getZ(), 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getZ() * rot.getZ(), 2 * rot.getY() * rot.getZ() - 2 * rot.getW() * rot.getX(), 2 * rot.getX() * rot.getZ() - 2 * rot.getW() * rot.getY(), 2 * rot.getY() * rot.getZ() + 2 * rot.getX() * rot.getW(), 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getY() * rot.getY()); } }
public static MatrixNd createRotation(int size, Quaterniond rot) { if (size < 3) { throw new IllegalArgumentException("Minimum matrix size is 3"); } final MatrixNd m = new MatrixNd(size); rot = rot.normalize(); m.set(0, 0, 1 - 2 * rot.getY() * rot.getY() - 2 * rot.getZ() * rot.getZ()); m.set(0, 1, 2 * rot.getX() * rot.getY() - 2 * rot.getW() * rot.getZ()); m.set(0, 2, 2 * rot.getX() * rot.getZ() + 2 * rot.getW() * rot.getY()); m.set(1, 0, 2 * rot.getX() * rot.getY() + 2 * rot.getW() * rot.getZ()); m.set(1, 1, 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getZ() * rot.getZ()); m.set(1, 2, 2 * rot.getY() * rot.getZ() - 2 * rot.getW() * rot.getX()); m.set(2, 0, 2 * rot.getX() * rot.getZ() - 2 * rot.getW() * rot.getY()); m.set(2, 1, 2 * rot.getY() * rot.getZ() + 2 * rot.getX() * rot.getW()); m.set(2, 2, 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getY() * rot.getY()); return m; }
public static MatrixNd createRotation(int size, Quaterniond rot) { if (size < 3) { throw new IllegalArgumentException("Minimum matrix size is 3"); } final MatrixNd m = new MatrixNd(size); rot = rot.normalize(); m.set(0, 0, 1 - 2 * rot.getY() * rot.getY() - 2 * rot.getZ() * rot.getZ()); m.set(0, 1, 2 * rot.getX() * rot.getY() - 2 * rot.getW() * rot.getZ()); m.set(0, 2, 2 * rot.getX() * rot.getZ() + 2 * rot.getW() * rot.getY()); m.set(1, 0, 2 * rot.getX() * rot.getY() + 2 * rot.getW() * rot.getZ()); m.set(1, 1, 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getZ() * rot.getZ()); m.set(1, 2, 2 * rot.getY() * rot.getZ() - 2 * rot.getW() * rot.getX()); m.set(2, 0, 2 * rot.getX() * rot.getZ() - 2 * rot.getW() * rot.getY()); m.set(2, 1, 2 * rot.getY() * rot.getZ() + 2 * rot.getX() * rot.getW()); m.set(2, 2, 1 - 2 * rot.getX() * rot.getX() - 2 * rot.getY() * rot.getY()); return m; }