예제 #1
0
        private IEnumerable <KeyValuePair <IPoint, IPoint> > CalculateSourceTargetPairs(
            [NotNull] IList <IPolycurve> sourceGeometries,
            [NotNull] IPointCollection targetIntersectionPoints)
        {
            // for all tuples -> calculate standard intersection points (possibly clip first and only use original shapes if none found?)

            if (sourceGeometries.Count <= 1)
            {
                return(new List <KeyValuePair <IPoint, IPoint> >(0));
            }

            IMultipoint sourceIntersectionPoints =
                CalculateSourceIntersections(sourceGeometries);

            // TODO: re-use SourceIntersections if selected features have not changed

            IPointCollection             unpairedSourcePoints;
            IDictionary <IPoint, IPoint> sourceTargetPairs =
                ReshapeUtils.PairByDistance((IPointCollection)sourceIntersectionPoints,
                                            targetIntersectionPoints, out unpairedSourcePoints);

            _unpairedSourceIntersectionPoints = unpairedSourcePoints;

            return(sourceTargetPairs);
        }