Plane

Un piano in forma normale assiana.

Descrizione

Rappresenta un'equazione di piano normalizzata. normal è la normale del piano (a, b, c normalizzati), e d è la distanza dall'origine al piano (nella direzione di "normale"). La parte superiore del piano è considerata il lato del piano verso cui punta la normale.

Tutorial

Proprietà

float

d

0.0

Vector3

normal

Vector3(0, 0, 0)

float

x

0.0

float

y

0.0

float

z

0.0

Costruttori

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)

Metodi

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

Operatori

bool

operator !=(right: Plane)

Plane

operator *(right: Transform3D)

bool

operator ==(right: Plane)

Plane

operator unary+()

Plane

operator unary-()


Costanti

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

Un piano che si estende lungo gli assi Y e Z (il vettore normale punta verso +X).

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

Un piano che si estende lungo gli assi X e Z (il vettore normale punta verso +Y).

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

Un piano che si estende lungo gli assi X e Y (il vettore normale punta verso +Z).


Descrizioni delle proprietà

float d = 0.0 🔗

La distanza dall'origine al piano, espressa in termini di normal (in base alla sua direzione e magnitudine). La distanza assoluta effettiva dall'origine al piano può essere calcolata come abs(d) / normal.length() (se normal ha lunghezza zero, allora questo Plane non rappresenta un piano valido).

Nell'equazione scalare del piano ax + by + cz = d, questo è d, mentre le coordinate (a, b, c) sono rappresentate dalla proprietà normal.


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

La normale del piano, in genere un vettore unitario. Non dovrebbe essere un vettore zero poiché un Plane con tale normal non rappresenta un piano valido.

Nell'equazione scalare del piano ax + by + cz = d, questo è il vettore (a, b, c), dove d è la proprietà d.


float x = 0.0 🔗

Il componente X del vettore normal del piano.


float y = 0.0 🔗

Il componente Y del vettore normal del piano.


float z = 0.0 🔗

Il componente Z del vettore normal del piano.


Descrizioni dei costruttori

Plane Plane() 🔗

Costruisce un Plane predefinito con tutti i componenti impostati su 0.


Plane Plane(from: Plane)

Costruisce un Plane come copia del Plane specificato.


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

Crea un piano dai quattro parametri. I tre componenti della normal del piano risultante sono a, b e c, e il piano ha una distanza di d dall'origine.


Plane Plane(normal: Vector3)

Crea un piano dal vettore normale. Il piano intersecherà l'origine.

Il normal del piano deve essere un vettore unitario.


Plane Plane(normal: Vector3, d: float)

Crea un piano dal vettore normale e dalla distanza del piano dall'origine.

Il normal del piano deve essere un vettore unitario.


Plane Plane(normal: Vector3, point: Vector3)

Crea un piano dal vettore normale e da un punto sul piano.

Il normal del piano deve essere un vettore unitario.


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

Crea un piano a partire da tre punti, forniti in senso orario.


Descrizioni dei metodi

float distance_to(point: Vector3) const 🔗

Restituisce la distanza più breve dal piano alla posizione point. Se il punto è sopra il piano, la distanza sarà positiva. Se è sotto, la distanza sarà negativa.


Vector3 get_center() const 🔗

Restituisce il centro del piano.


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

Restituisce true se la posizione point è all'interno del piano. Il confronto utilizza una soglia minima di tolleranza personalizzata (tolerance).


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

Restituisce il punto di intersezione dei tre piani b, c e questo piano. Se nessuna intersezione viene trovata, viene restituito null.


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

Restituisce il punto di intersezione di un raggio costituito dalla posizione from e dalla direzione normale dir con questo piano. Se nessuna intersezione viene trovata, viene restituito null.


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

Restituisce il punto di intersezione di un segmento dalla posizione from alla posizione to con questo piano. Se nessuna intersezione viene trovata, viene restituito null.


bool is_equal_approx(to_plane: Plane) const 🔗

Restituisce true se questo piano e to_plane sono approssimativamente eguali, chiamando @GlobalScope.is_equal_approx() su ogni componente.


bool is_finite() const 🔗

Restituisce true se questo piano è finito, chiamando @GlobalScope.is_finite() su ogni componente.


bool is_point_over(point: Vector3) const 🔗

Restituisce true se la posizione point si trova sopra il piano.


Plane normalized() const 🔗

Restituisce una copia del piano, con normal normalizzato (diventando un vettore unitario). Restituisce Plane(0, 0, 0, 0) se normal non può essere normalizzato (ha lunghezza zero).


Vector3 project(point: Vector3) const 🔗

Restituisce la proiezione ortogonale del punto point in un punto nel piano.


Descrizioni degli operatori

bool operator !=(right: Plane) 🔗

Restituisce true se i piani non sono uguali.

Nota: A causa di errori di precisione in virgola mobile, si consiglia di utilizzare invece is_equal_approx(), che è più affidabile.


Plane operator *(right: Transform3D) 🔗

Trasforma inversamente (moltiplica) il Plane per la matrice di trasformazione Transform3D fornita.

plane * transform è equivalente a transform.affine_inverse() * plane. Vedi Transform3D.affine_inverse().


bool operator ==(right: Plane) 🔗

Restituisce true se i piani sono esattamente uguali.

Nota: A causa di errori di precisione in virgola mobile, si consiglia di utilizzare invece is_equal_approx(), che è più affidabile.


Plane operator unary+() 🔗

Restituisce lo stesso valore come se + non ci fosse. Il + unario non fa nulla, ma a volte può rendere il tuo codice più leggibile.


Plane operator unary-() 🔗

Restituisce il valore negativo di Plane. Equivale a scrivere Plane(-p.normal, -p.d). Questa operazione inverte la direzione del vettore normale e inverte anche il valore della distanza, ottenendo un piano che si trova nello stesso posto, ma rivolto nella direzione opposta.