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)); }