public static void GetPoint(float majorAngle, float minorAngle, out TorusPointInfo info) { Vector3 minorCenterDir = Quaternion.AngleAxis(majorAngle, Vector3.up) * Vector3.forward; info.minorCenterPoint = minorCenterDir * MajorRadius; info.minorCenterRight = Vector3.Cross(Vector3.up, minorCenterDir); info.minorCenterForward = Quaternion.AngleAxis(minorAngle, info.minorCenterRight) * minorCenterDir; info.minorCenterUp = Vector3.Cross(info.minorCenterForward, info.minorCenterRight); info.targetPoint = info.minorCenterPoint + info.minorCenterForward * MinorRadius; }
public static void GetPoint(Vector3 targetPoint, out TorusPointInfo info) { GetAngle(targetPoint, out float majorAngle, out float minorAngle); GetPoint(majorAngle, minorAngle, out info); }