public static List <Orientation> GetOrientationsToTarget(Orientation startOrientation, Orientation targetOrientation) { return(OrientationInnerData.GetOrientationInnerDatasToTarget(GetInnerData(startOrientation), GetInnerData(targetOrientation)) .Select(GetOrientation).ToList()); }
public OrientationInnerData CalculateLocalDirection(OrientationInnerData globalDirection) { return(AllOrientationInnerDatasClockwise[ (AllOrientationInnerDatasClockwise.Count + globalDirection._indexClockwise - this._indexClockwise) % AllOrientationInnerDatasClockwise.Count]); }
private static Orientation GetOrientation(OrientationInnerData orientationInnerData) { return(OrientationUtils.AllOrientationsClockwise[OrientationInnerData.AllOrientationInnerDatasClockwise.IndexOf(orientationInnerData)]); }
public static List <OrientationInnerData> GetOrientationInnerDatasToTarget(OrientationInnerData startOrientationInnerData, OrientationInnerData targetOrientationInnerData) { List <OrientationInnerData> clockwiseOrientationInnerDatas = new List <OrientationInnerData>(); List <OrientationInnerData> counterCloskwiseOrientationInnerDatas = new List <OrientationInnerData>(); int startIndex = AllOrientationInnerDatasClockwise.IndexOf(startOrientationInnerData); int targetIndex = AllOrientationInnerDatasClockwise.IndexOf(targetOrientationInnerData); if (startIndex == targetIndex) { return(new List <OrientationInnerData>()); } if (targetIndex > startIndex) { clockwiseOrientationInnerDatas = Enumerable.Range(startIndex + 1, targetIndex - startIndex) .Select(i => AllOrientationInnerDatasClockwise[i]).ToList(); } else { clockwiseOrientationInnerDatas = Enumerable.Range(startIndex + 1, AllOrientationInnerDatasClockwise.Count + targetIndex - startIndex) .Select(i => AllOrientationInnerDatasClockwise[i % AllOrientationInnerDatasClockwise.Count]).ToList(); } if (startIndex > targetIndex) { counterCloskwiseOrientationInnerDatas = Enumerable.Range(targetIndex, startIndex - targetIndex).Reverse() .Select(i => AllOrientationInnerDatasClockwise[i]) .ToList(); } else { counterCloskwiseOrientationInnerDatas = Enumerable.Range(targetIndex, AllOrientationInnerDatasClockwise.Count + startIndex - targetIndex) .Reverse() .Select(i => AllOrientationInnerDatasClockwise[i % AllOrientationInnerDatasClockwise.Count]).ToList(); } if (clockwiseOrientationInnerDatas.Count <= counterCloskwiseOrientationInnerDatas.Count) { return(clockwiseOrientationInnerDatas); } else { return(counterCloskwiseOrientationInnerDatas); } }