Point3D
Espacio de nombres: Digi21.Math
Ensamblado: Digi21.DigiNG
Punto o vector en el espacio. Es el tipo de las coordenadas de las entidades.
public struct Point3D : IDesplazable
Implementa: IDesplazable.
Point3D es un tipo de valor: una asignación copia las coordenadas, y Offset modifica la variable sobre la que se llama. Una propiedad que devuelve un Point3D, como Point.Coordinate, devuelve una copia: para cambiar la coordenada de la entidad, asigna el punto modificado a la propiedad.
Los operadores == y != comparan cada coordenada con la tolerancia Precision.Epsilon. Equals, heredado de ValueType, compara las coordenadas sin tolerancia.
Constructores
| Constructor | Descripción |
|---|---|
Point3D(double x, double y, double z) |
Crea el punto (x, y, z). |
Point3D(double value) |
Crea el punto (value, value, value). |
Point3D(Point2D point) |
Crea el punto (point.X, point.Y, 0). |
Propiedades
| Propiedad | Descripción |
|---|---|
double X { get; set; } |
Coordenada X. |
double Y { get; set; } |
Coordenada Y. |
double Z { get; set; } |
Coordenada Z. |
Point2D Point2D { get; } |
Point2D con la X y la Y. |
double Module { get; } |
Módulo del vector: √(X² + Y² + Z²). |
double SquaredModule { get; } |
Cuadrado del módulo: X² + Y² + Z². |
Point3D Normalized { get; } |
Vector con la misma dirección y módulo 1. Si el módulo es 0, las coordenadas del resultado son NaN. |
bool IsEmpty { get; } |
true si X, Y y Z valen exactamente 0, sin tolerancia. |
Métodos
| Método | Descripción |
|---|---|
void Offset(Point2D offset)void Offset(double x, double y) |
Suma el incremento a X y a Y. La Z no cambia. |
void Offset(Point3D offset)void Offset(double x, double y, double z) |
Suma el incremento a X, Y y Z. |
string ToString() |
Devuelve (X,Y,Z). Los números se formatean con la referencia cultural actual: con es-ES, el punto (1,5; 2; 3) se escribe (1,5,2,3). |
Los métodos Offset implementan IDesplazable.Offset.
Métodos estáticos
| Método | Descripción |
|---|---|
double DotProduct(Point3D a, Point3D b) |
Producto escalar: a.X * b.X + a.Y * b.Y + a.Z * b.Z. |
Point3D CrossProduct(Point3D a, Point3D b) |
Producto vectorial a × b. |
double CalculateModule(Point3D a, Point3D b) |
Distancia entre a y b en el espacio. |
double CalculateModule(Point3D a, Point2D b)double CalculateModule(Point2D a, Point3D b) |
Distancia en el espacio entre el Point3D y el Point2D, con Z = 0 para el Point2D. Para la distancia en el plano X, Y, usa Point2D.CalculateModule. |
double CalculateSquaredModule(Point3D a, Point3D b) |
Cuadrado de la distancia entre a y b en el espacio. |
Operadores
| Operador | Descripción |
|---|---|
explicit operator Point2D(Point3D point) |
Convierte en el Point2D (X, Y). |
bool operator ==(Point3D a, Point3D b) |
true si X, Y y Z son iguales según Precision.Epsilon. |
bool operator !=(Point3D a, Point3D b) |
true si X, Y o Z son distintas según Precision.Epsilon. |
bool operator ==(Point3D a, Point2D b)bool operator ==(Point2D a, Point3D b) |
true si X e Y son iguales según Precision.Epsilon. La Z no se compara. |
bool operator !=(Point3D a, Point2D b)bool operator !=(Point2D a, Point3D b) |
true si X o Y son distintas según Precision.Epsilon. La Z no se compara. |
Point3D operator +(Point3D a, Point3D b) |
Suma coordenada a coordenada. |
Point3D operator -(Point3D a, Point3D b) |
Resta coordenada a coordenada: el vector que va de b a a. |
Point3D operator *(Point3D a, double factor) |
Multiplica X, Y y Z por factor. |
Point3D operator /(Point3D a, double factor) |
Divide X, Y y Z entre factor. |
Ejemplo
El ejemplo de Point2D calcula distancias, azimutes y productos vectoriales con Point3D, y compara un Point3D con un Point2D.