PointLine

Espacio de nombres: Digi21.DigiNG.Entities.Relations
Ensamblado: Digi21.DigiNG

Métodos que analizan la relación entre un punto y una línea.

public static class PointLine

El primer parámetro, point, es un ReadOnlyPoint, y el segundo, line, una ReadOnlyLine.

Los métodos comparan la coordenada del punto con los vértices de la línea; no analizan los lados. Un punto sobre un lado de la línea que no coincide con ningún vértice es disjunto de la línea.

Disjoint devuelve el valor contrario de Coincident || CoincidentAndTerminate. Coincident y CoincidentAndTerminate solo devuelven true a la vez si la línea pasa dos veces por el punto: una por un vértice intermedio y otra por un extremo.

Métodos estáticos

Método Descripción
Coincident true si el punto coincide con un vértice intermedio de la línea.
CoincidentAndTerminate true si el punto coincide con el primer o el último vértice de la línea.
Disjoint true si el punto no coincide con ningún vértice de la línea.

Todos los métodos lanzan ArgumentNullException si point o line es null.

Ejemplo

Este programa crea en memoria una línea y tres puntos y analiza la relación de cada punto con la línea:

using Digi21.DigiNG.Entities;
using Digi21.DigiNG.Entities.Relations;
using Digi21.Math;

static Point Punto(string código, double x, double y) => new Point(new Code(código)) { Coordinate = new Point3D(x, y, 0) };

var línea = new Line(new Code("LINEA"));
línea.Points.Add(new[] { new Point3D(0, 0, 0), new Point3D(5, 0, 0), new Point3D(10, 0, 0) });

var intermedio = Punto("INTERMEDIO", 5, 0);
var extremo = Punto("EXTREMO", 10, 0);
var fuera = Punto("FUERA", 5, 1);

Console.WriteLine($"Coincident(INTERMEDIO): {PointLine.Coincident(intermedio, línea)}");                         // True
Console.WriteLine($"CoincidentAndTerminate(INTERMEDIO): {PointLine.CoincidentAndTerminate(intermedio, línea)}"); // False
Console.WriteLine($"CoincidentAndTerminate(EXTREMO): {PointLine.CoincidentAndTerminate(extremo, línea)}");       // True
Console.WriteLine($"Disjoint(FUERA): {PointLine.Disjoint(fuera, línea)}");                                       // True