Esempio n. 1
0
 public static List <Orientation> GetOrientationsToTarget(Orientation startOrientation,
                                                          Orientation targetOrientation)
 {
     return(OrientationInnerData.GetOrientationInnerDatasToTarget(GetInnerData(startOrientation), GetInnerData(targetOrientation))
            .Select(GetOrientation).ToList());
 }
Esempio n. 2
0
 public OrientationInnerData CalculateLocalDirection(OrientationInnerData globalDirection)
 {
     return(AllOrientationInnerDatasClockwise[
                (AllOrientationInnerDatasClockwise.Count + globalDirection._indexClockwise - this._indexClockwise) %
                AllOrientationInnerDatasClockwise.Count]);
 }
Esempio n. 3
0
 private static Orientation GetOrientation(OrientationInnerData orientationInnerData)
 {
     return(OrientationUtils.AllOrientationsClockwise[OrientationInnerData.AllOrientationInnerDatasClockwise.IndexOf(orientationInnerData)]);
 }
Esempio n. 4
0
            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);
                }
            }