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.
/// <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