Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Plane

Un piano in forma normale assiana.

Descrizione

Represents a normalized plane equation. normal is the normal of the plane (a, b, c normalized), and d is the distance from the origin to the plane (in the direction of "normal"). "Over" or "Above" the plane is considered the side of the plane towards where the normal is pointing.

Note: In a boolean context, a plane will evaluate to false if all its components equal 0. Otherwise, a plane will always evaluate to true.

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.