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