// Fatory Methods public static Matrix3 rotation(Vector3 axis, final float angle) { if (angle == 0) return Identity; axis = axis.unit(); if (!axis.isFinite()) throw new RuntimeException(); final float c = GMath.cos(angle), s = GMath.sin(angle); return axis.mul(1 - c).mul(axis).add(Identity, c).add(axis.mul(s).tilda()); }