Plane

Un plano en forma normal de Hesse.

Descripción

Representa una ecuación de plano normalizada. normal es la normal del plano (a, b, c normalizados), y d es la distancia desde el origen al plano (en la dirección de "normal"). Se considera "Sobre" o "Por encima" del plano el lado del plano hacia donde apunta la normal.

Tutoriales

Propiedades

float

d

0.0

Vector3

normal

Vector3(0, 0, 0)

float

x

0.0

float

y

0.0

float

z

0.0

Constructores

Plane

Plane()

Plane

Plane(from: Plane)

Plane

Plane(a: float, b: float, c: float, d: float)

Plane

Plane(normal: Vector3)

Plane

Plane(normal: Vector3, d: float)

Plane

Plane(normal: Vector3, point: Vector3)

Plane

Plane(point1: Vector3, point2: Vector3, point3: Vector3)

Métodos

float

distance_to(point: Vector3) const

Vector3

get_center() const

bool

has_point(point: Vector3, tolerance: float = 1e-05) const

Variant

intersect_3(b: Plane, c: Plane) const

Variant

intersects_ray(from: Vector3, dir: Vector3) const

Variant

intersects_segment(from: Vector3, to: Vector3) const

bool

is_equal_approx(to_plane: Plane) const

bool

is_finite() const

bool

is_point_over(point: Vector3) const

Plane

normalized() const

Vector3

project(point: Vector3) const

Operadores

bool

operator !=(right: Plane)

Plane

operator *(right: Transform3D)

bool

operator ==(right: Plane)

Plane

operator unary+()

Plane

operator unary-()


Constantes

PLANE_YZ = Plane(1, 0, 0, 0) 🔗

Un plano que se extiende en los ejes Y y Z (puntos de vector normal +X).

PLANE_XZ = Plane(0, 1, 0, 0) 🔗

Un plano que se extiende en los ejes X y Z (puntos de vector normal +Y).

PLANE_XY = Plane(0, 0, 1, 0) 🔗

Un plano que se extiende en los ejes X e Y (puntos de vector normal +Z).


Descripciones de Propiedades

float d = 0.0 🔗

La distancia desde el origen hasta el plano, expresada en términos de normal (según su dirección y magnitud). La distancia absoluta real desde el origen al plano se puede calcular como abs(d) / normal.length() (si normal tiene longitud cero, entonces este Plane no representa un plano válido).

En la ecuación escalar del plano ax + by + cz = d, esto es d, mientras que las coordenadas (a, b, c) están representadas por la propiedad normal.


Vector3 normal = Vector3(0, 0, 0) 🔗

La normal del plano, típicamente un vector unitario. No debería ser un vector cero, ya que un Plane con tal normal no representa un plano válido.

En la ecuación escalar del plano ax + by + cz = d, este es el vector (a, b, c), donde d es la propiedad d.


float x = 0.0 🔗

El componente X del vector normal del plano.


float y = 0.0 🔗

El componente Y del vector normal del plano.


float z = 0.0 🔗

El componente Z del vector normal del plano.


Descripciones de Constructores

Plane Plane() 🔗

Construye un Plane inicializado por defecto con todos los componentes establecidos a 0.


Plane Plane(from: Plane)

Construye un Plane como una copia del Plane dado.


Plane Plane(a: float, b: float, c: float, d: float)

Crea un plano a partir de cuatro parámetros. Los tres componentes de la normal del plano resultante son a, b y c, y el plano tiene una distancia de d desde el origen.


Plane Plane(normal: Vector3)

Crea un plano a partir del vector normal. El plano intersecará con el origen.

El normal del plano debe ser un vector unitario.


Plane Plane(normal: Vector3, d: float)

Crea un plano a partir del vector normal y la distancia del plano al origen.

El normal del plano debe ser un vector unitario.


Plane Plane(normal: Vector3, point: Vector3)

Crea un plano a partir del vector normal y un punto en el plano.

El normal del plano debe ser un vector unitario.


Plane Plane(point1: Vector3, point2: Vector3, point3: Vector3)

Crea un plano a partir de los tres puntos, dados en el sentido de las agujas del reloj.


Descripciones de Métodos

float distance_to(point: Vector3) const 🔗

Devuelve la distancia más corta desde el plano a la posición point. Si el punto está por encima del plano, la distancia será positiva. Si está por debajo, la distancia será negativa.


Vector3 get_center() const 🔗

Devuelve el centro del plano.


bool has_point(point: Vector3, tolerance: float = 1e-05) const 🔗

Devuelve true si point está dentro del plano. La comparación utiliza un umbral mínimo personalizado de tolerance.


Variant intersect_3(b: Plane, c: Plane) const 🔗

Devuelve el punto de intersección de los tres planos b, c y este plano. Si no se encuentra ninguna intersección, se devuelve null.


Variant intersects_ray(from: Vector3, dir: Vector3) const 🔗

Devuelve el punto de intersección de un rayo que consiste en la posición from y la dirección normal dir con este plano. Si no se encuentra ninguna intersección, se devuelve null.


Variant intersects_segment(from: Vector3, to: Vector3) const 🔗

Devuelve el punto de intersección de un segmento desde la posición from hasta la posición to con este plano. Si no se encuentra ninguna intersección, se devuelve null.


bool is_equal_approx(to_plane: Plane) const 🔗

Devuelve true si este plano y to_plane son aproximadamente iguales, ejecutando @GlobalScope.is_equal_approx() en cada componente.


bool is_finite() const 🔗

Devuelve true si este plano es finito, llamando a @GlobalScope.is_finite() en cada componente.


bool is_point_over(point: Vector3) const 🔗

Devuelve true si point se encuentra por encima del plano.


Plane normalized() const 🔗

Devuelve una copia del plano, con normal normalizado (por lo que es un vector unitario). Devuelve Plane(0, 0, 0, 0) si normal no se puede normalizar (tiene longitud cero).


Vector3 project(point: Vector3) const 🔗

Devuelve la proyección ortogonal de point en un punto del plano.


Descripciones de Operadores

bool operator !=(right: Plane) 🔗

Returns true if the planes are not equal.

Note: Due to floating-point precision errors, consider using is_equal_approx() instead, which is more reliable.


Plane operator *(right: Transform3D) 🔗

Transforma inversamente (multiplica) el Plane por la matriz de transformación Transform3D dada.

plane * transform es equivalente a transform.affine_inverse() * plane. Véase Transform3D.affine_inverse().


bool operator ==(right: Plane) 🔗

Returns true if the planes are exactly equal.

Note: Due to floating-point precision errors, consider using is_equal_approx() instead, which is more reliable.


Plane operator unary+() 🔗

Devuelve el mismo valor como si el + no estuviera ahí. El + unario no hace nada, pero a veces puede hacer que tu código sea más legible.


Plane operator unary-() 🔗

Devuelve el valor negativo del Plane. Esto es lo mismo que escribir Plane(-p.normal, -p.d). Esta operación invierte la dirección del vector normal y también invierte el valor de la distancia, lo que da como resultado un Plano que está en el mismo lugar, pero mirando en la dirección opuesta.