Feedback

C# - Point - IsInRangeOf

Veröffentlicht von am 29.09.2013
(0 Bewertungen)
Mithilfe dieser Erweiterungsmethode kann man überprüfen, ob sich 2 Punkte in einem Gemeinsamen Bereich liegen.

Mithilfe der Enumeration kann man angeben, wie der Abstand gemessen werden soll.
Snippet in VB übersetzen
        /// <summary>
        /// Bestimmt, ob sich ein Punkt in der näher zu diesem Punkt befindet.
        /// </summary>
        /// <param name="point1">Der erste Punkt.</param>
        /// <param name="point2">Der zweite, zu prüfende Punkt.</param>
        /// <param name="accuracy">Der höchste Abstand zwischen den 2 Punkten.</param>
        /// <param name="rangeType">Die Art, wie die Distanz berechnet werden soll.</param>
        /// <returns><c>True</c>, wenn sich <paramref name="point2"/> in der Nähe von diesem Punkt befindet. Andernfalls <c>False</c>.</returns>
        public static bool IsInRangeOf(this Point point1, Point point2, double accuracy, PointInRangeMatchOptions rangeType)
        {
            switch (rangeType)
            {
                case PointInRangeMatchOptions.Sqare:
                    return point1.X - accuracy <= point2.X && point1.X + accuracy >= point2.X
                        && point1.Y - accuracy <= point2.Y && point1.Y + accuracy >= point2.Y;
                case PointInRangeMatchOptions.Circle:
                    return Math.Sqrt((point1.X - point2.X) * (point1.X - point2.X) + (point1.Y - point2.Y) * (point1.Y - point2.Y)) < accuracy;
                default:
                    throw new ArgumentOutOfRangeException("Invalid enum value.");
            }
        }

        /// <summary>
        /// Stellt die verschiedenen Modi bereit, mit denen Überprüft werden kann, ob 2 Punkte im selben Bereich liegen.
        /// </summary>
        public enum PointInRangeMatchOptions
        {
            /// <summary>
            /// Der Bereich um den ersten Punkt ist quadratisch bzw. Würfelförmig.
            /// </summary>
            Sqare,
            /// <summary>
            /// Der Bereich um den ersten Punkt ist Kreis bzw. Kugelförmig.
            /// </summary>
            Circle,
        }

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!