public static UnityEngine.Vector3 AroundAxis(this IRandom rng, Vector3 axis)
        {
            var a = rng.Angle();

            if (VectorUtil.NearSameAxis(axis, Vector3.forward))
            {
                return(Quaternion.AngleAxis(a, axis) * VectorUtil.GetForwardTangent(Vector3.up, axis));
            }
            else
            {
                return(Quaternion.AngleAxis(a, axis) * VectorUtil.GetForwardTangent(Vector3.forward, axis));
            }
        }
 /// <summary>
 /// Returns a rotation of up attempting to face in the general direction of forward.
 /// </summary>
 /// <param name="up"></param>
 /// <param name="targForward"></param>
 /// <returns></returns>
 public static Quaternion FaceRotation(Vector3 forward, Vector3 up)
 {
     forward = VectorUtil.GetForwardTangent(forward, up);
     return(Quaternion.LookRotation(forward, up));
 }