pub fn from_axis_angle<A: Into<Rad<S>>>(axis: Vector3<S>, angle: A) -> Matrix4<S> {
        let (s, c) = Rad::sin_cos(angle.into());
        let _1subc = S::one() - c;

        #[cfg_attr(rustfmt, rustfmt_skip)]
        Matrix4::new(
            _1subc * axis.x * axis.x + c,
            _1subc * axis.x * axis.y + s * axis.z,
            _1subc * axis.x * axis.z - s * axis.y,
            S::zero(),

            _1subc * axis.x * axis.y - s * axis.z,
            _1subc * axis.y * axis.y + c,
            _1subc * axis.y * axis.z + s * axis.x,
            S::zero(),

            _1subc * axis.x * axis.z + s * axis.y,
            _1subc * axis.y * axis.z - s * axis.x,
            _1subc * axis.z * axis.z + c,
            S::zero(),

            S::zero(), S::zero(), S::zero(), S::one(),
        )
    }
Create a homogeneous transformation matrix from an angle around an arbitrary axis.

The specified axis **must be normalized**, or it represents an invalid rotation.
src/matrix.rs