Files
godot-docs-l10n/classes/it/class_geometry3d.rst

255 lines
22 KiB
ReStructuredText

:github_url: hide
.. _class_Geometry3D:
Geometry3D
==========
**Eredita:** :ref:`Object<class_Object>`
Fornisce metodi per alcune operazioni geometriche 3D comuni.
.. rst-class:: classref-introduction-group
Descrizione
----------------------
Fornisce una serie di funzioni di supporto per creare forme geometriche, calcolare intersezioni tra forme ed elaborare varie altre operazioni geometriche in 3D.
.. rst-class:: classref-reftable-group
Metodi
------------
.. table::
:widths: auto
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\] | :ref:`build_box_planes<class_Geometry3D_method_build_box_planes>`\ (\ extents\: :ref:`Vector3<class_Vector3>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\] | :ref:`build_capsule_planes<class_Geometry3D_method_build_capsule_planes>`\ (\ radius\: :ref:`float<class_float>`, height\: :ref:`float<class_float>`, sides\: :ref:`int<class_int>`, lats\: :ref:`int<class_int>`, axis\: :ref:`Axis<enum_Vector3_Axis>` = 2\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\] | :ref:`build_cylinder_planes<class_Geometry3D_method_build_cylinder_planes>`\ (\ radius\: :ref:`float<class_float>`, height\: :ref:`float<class_float>`, sides\: :ref:`int<class_int>`, axis\: :ref:`Axis<enum_Vector3_Axis>` = 2\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`clip_polygon<class_Geometry3D_method_clip_polygon>`\ (\ points\: :ref:`PackedVector3Array<class_PackedVector3Array>`, plane\: :ref:`Plane<class_Plane>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`compute_convex_mesh_points<class_Geometry3D_method_compute_convex_mesh_points>`\ (\ planes\: :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\]\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector3<class_Vector3>` | :ref:`get_closest_point_to_segment<class_Geometry3D_method_get_closest_point_to_segment>`\ (\ point\: :ref:`Vector3<class_Vector3>`, s1\: :ref:`Vector3<class_Vector3>`, s2\: :ref:`Vector3<class_Vector3>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector3<class_Vector3>` | :ref:`get_closest_point_to_segment_uncapped<class_Geometry3D_method_get_closest_point_to_segment_uncapped>`\ (\ point\: :ref:`Vector3<class_Vector3>`, s1\: :ref:`Vector3<class_Vector3>`, s2\: :ref:`Vector3<class_Vector3>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_closest_points_between_segments<class_Geometry3D_method_get_closest_points_between_segments>`\ (\ p1\: :ref:`Vector3<class_Vector3>`, p2\: :ref:`Vector3<class_Vector3>`, q1\: :ref:`Vector3<class_Vector3>`, q2\: :ref:`Vector3<class_Vector3>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector3<class_Vector3>` | :ref:`get_triangle_barycentric_coords<class_Geometry3D_method_get_triangle_barycentric_coords>`\ (\ point\: :ref:`Vector3<class_Vector3>`, a\: :ref:`Vector3<class_Vector3>`, b\: :ref:`Vector3<class_Vector3>`, c\: :ref:`Vector3<class_Vector3>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Variant<class_Variant>` | :ref:`ray_intersects_triangle<class_Geometry3D_method_ray_intersects_triangle>`\ (\ from\: :ref:`Vector3<class_Vector3>`, dir\: :ref:`Vector3<class_Vector3>`, a\: :ref:`Vector3<class_Vector3>`, b\: :ref:`Vector3<class_Vector3>`, c\: :ref:`Vector3<class_Vector3>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`segment_intersects_convex<class_Geometry3D_method_segment_intersects_convex>`\ (\ from\: :ref:`Vector3<class_Vector3>`, to\: :ref:`Vector3<class_Vector3>`, planes\: :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\]\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`segment_intersects_cylinder<class_Geometry3D_method_segment_intersects_cylinder>`\ (\ from\: :ref:`Vector3<class_Vector3>`, to\: :ref:`Vector3<class_Vector3>`, height\: :ref:`float<class_float>`, radius\: :ref:`float<class_float>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`segment_intersects_sphere<class_Geometry3D_method_segment_intersects_sphere>`\ (\ from\: :ref:`Vector3<class_Vector3>`, to\: :ref:`Vector3<class_Vector3>`, sphere_position\: :ref:`Vector3<class_Vector3>`, sphere_radius\: :ref:`float<class_float>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Variant<class_Variant>` | :ref:`segment_intersects_triangle<class_Geometry3D_method_segment_intersects_triangle>`\ (\ from\: :ref:`Vector3<class_Vector3>`, to\: :ref:`Vector3<class_Vector3>`, a\: :ref:`Vector3<class_Vector3>`, b\: :ref:`Vector3<class_Vector3>`, c\: :ref:`Vector3<class_Vector3>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedInt32Array<class_PackedInt32Array>` | :ref:`tetrahedralize_delaunay<class_Geometry3D_method_tetrahedralize_delaunay>`\ (\ points\: :ref:`PackedVector3Array<class_PackedVector3Array>`\ ) |
+--------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Descrizioni dei metodi
--------------------------------------------
.. _class_Geometry3D_method_build_box_planes:
.. rst-class:: classref-method
:ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\] **build_box_planes**\ (\ extents\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Geometry3D_method_build_box_planes>`
Restituisce un array con 6 :ref:`Plane<class_Plane>` che descrivono i lati di un riquadro centrato sull'origine. Le dimensioni del riquadro sono definite da ``extents``, che rappresenta un angolo (positivo) del riquadro (ovvero la metà delle sue dimensioni effettive).
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_build_capsule_planes:
.. rst-class:: classref-method
:ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\] **build_capsule_planes**\ (\ radius\: :ref:`float<class_float>`, height\: :ref:`float<class_float>`, sides\: :ref:`int<class_int>`, lats\: :ref:`int<class_int>`, axis\: :ref:`Axis<enum_Vector3_Axis>` = 2\ ) :ref:`🔗<class_Geometry3D_method_build_capsule_planes>`
Restituisce un array di :ref:`Plane<class_Plane>` che delimitano da vicino una capsula sfaccettata centrata sull'origine con raggio ``radius`` e altezza ``height``. Il parametro ``sides`` definisce quanti piani saranno generati per la parte laterale della capsula, mentre ``lats`` fornisce il numero di gradini latitudinali nella parte inferiore e superiore della capsula. Il parametro ``axis`` descrive l'asse lungo il quale è orientata la capsula (0 per X, 1 per Y, 2 per Z).
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_build_cylinder_planes:
.. rst-class:: classref-method
:ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\] **build_cylinder_planes**\ (\ radius\: :ref:`float<class_float>`, height\: :ref:`float<class_float>`, sides\: :ref:`int<class_int>`, axis\: :ref:`Axis<enum_Vector3_Axis>` = 2\ ) :ref:`🔗<class_Geometry3D_method_build_cylinder_planes>`
Restituisce un array di :ref:`Plane<class_Plane>` che delimitano da vicino un cilindro sfaccettato centrato sull'origine con raggio ``radius`` e altezza ``height``. Il parametro ``sides`` definisce quanti piani saranno generati per la parte rotonda del cilindro. Il parametro ``axis`` descrive l'asse lungo il quale è orientato il cilindro (0 per X, 1 per Y, 2 per Z).
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_clip_polygon:
.. rst-class:: classref-method
:ref:`PackedVector3Array<class_PackedVector3Array>` **clip_polygon**\ (\ points\: :ref:`PackedVector3Array<class_PackedVector3Array>`, plane\: :ref:`Plane<class_Plane>`\ ) :ref:`🔗<class_Geometry3D_method_clip_polygon>`
Ritaglia il poligono definito dai punti in ``points`` rispetto al piano ``plane`` e restituisce i punti del poligono ritagliato.
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_compute_convex_mesh_points:
.. rst-class:: classref-method
:ref:`PackedVector3Array<class_PackedVector3Array>` **compute_convex_mesh_points**\ (\ planes\: :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\]\ ) :ref:`🔗<class_Geometry3D_method_compute_convex_mesh_points>`
Calcola e restituisce tutti i vertici di una forma convessa definita da un array di piani (``planes``).
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_get_closest_point_to_segment:
.. rst-class:: classref-method
:ref:`Vector3<class_Vector3>` **get_closest_point_to_segment**\ (\ point\: :ref:`Vector3<class_Vector3>`, s1\: :ref:`Vector3<class_Vector3>`, s2\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Geometry3D_method_get_closest_point_to_segment>`
Restituisce il punto 3D sul segmento 3D (``s1``, ``s2``) che è più vicino a ``point``. Il punto restituito sarà sempre all'interno del segmento specificato.
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_get_closest_point_to_segment_uncapped:
.. rst-class:: classref-method
:ref:`Vector3<class_Vector3>` **get_closest_point_to_segment_uncapped**\ (\ point\: :ref:`Vector3<class_Vector3>`, s1\: :ref:`Vector3<class_Vector3>`, s2\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Geometry3D_method_get_closest_point_to_segment_uncapped>`
Restituisce il punto 3D sulla linea 3D definita da (``s1``, ``s2``) che è più vicino a ``point``. Il punto restituito può essere all'interno del segmento (``s1``, ``s2``) o all'esterno di esso, ovvero da qualche parte sulla linea che si estende dal segmento.
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_get_closest_points_between_segments:
.. rst-class:: classref-method
:ref:`PackedVector3Array<class_PackedVector3Array>` **get_closest_points_between_segments**\ (\ p1\: :ref:`Vector3<class_Vector3>`, p2\: :ref:`Vector3<class_Vector3>`, q1\: :ref:`Vector3<class_Vector3>`, q2\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Geometry3D_method_get_closest_points_between_segments>`
Forniti i due segmenti 3D (``p1``, ``q1``) e (``p2``, ``q2``), trova quei due punti sui due segmenti più vicini tra loro. Restituisce un :ref:`PackedVector3Array<class_PackedVector3Array>` che contiene questo punto su (``p1``, ``q1``) e il punto corrispondente su (``p2``, ``q2``).
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_get_triangle_barycentric_coords:
.. rst-class:: classref-method
:ref:`Vector3<class_Vector3>` **get_triangle_barycentric_coords**\ (\ point\: :ref:`Vector3<class_Vector3>`, a\: :ref:`Vector3<class_Vector3>`, b\: :ref:`Vector3<class_Vector3>`, c\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Geometry3D_method_get_triangle_barycentric_coords>`
Restituisce un :ref:`Vector3<class_Vector3>` contenente pesi basati su quanto una posizione 3D (``point``) è vicina ai diversi vertici di un triangolo (``a``, ``b`` e ``c``). Questo è utile per l'interpolazione tra i dati di diversi vertici in un triangolo. Un esempio di caso d'uso di questo metodo è per ruotare in modo fluido su una mesh invece di affidarsi esclusivamente alle normali delle facce.
\ `Ecco una spiegazione più dettagliata delle coordinate baricentriche. <https://it.wikipedia.org/wiki/Coordinate_baricentriche>`__
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_ray_intersects_triangle:
.. rst-class:: classref-method
:ref:`Variant<class_Variant>` **ray_intersects_triangle**\ (\ from\: :ref:`Vector3<class_Vector3>`, dir\: :ref:`Vector3<class_Vector3>`, a\: :ref:`Vector3<class_Vector3>`, b\: :ref:`Vector3<class_Vector3>`, c\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Geometry3D_method_ray_intersects_triangle>`
Verifica se il raggio 3D che inizia da ``from`` con la direzione di ``dir`` interseca il triangolo specificato da ``a``, ``b`` e ``c``. Se sì, restituisce il punto di intersezione come :ref:`Vector3<class_Vector3>`. Se non si verifica alcuna intersezione, restituisce ``null``.
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_segment_intersects_convex:
.. rst-class:: classref-method
:ref:`PackedVector3Array<class_PackedVector3Array>` **segment_intersects_convex**\ (\ from\: :ref:`Vector3<class_Vector3>`, to\: :ref:`Vector3<class_Vector3>`, planes\: :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\]\ ) :ref:`🔗<class_Geometry3D_method_segment_intersects_convex>`
Dato un hull convesso definito tramite i :ref:`Plane<class_Plane>` nell'array ``planes``, verifica se il segmento (``from``, ``to``) interseca tale hull. Se viene trovata un'intersezione, restituisce un :ref:`PackedVector3Array<class_PackedVector3Array>` contenente il punto di intersezione e la normale dell'hull. Altrimenti, restituisce un array vuoto.
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_segment_intersects_cylinder:
.. rst-class:: classref-method
:ref:`PackedVector3Array<class_PackedVector3Array>` **segment_intersects_cylinder**\ (\ from\: :ref:`Vector3<class_Vector3>`, to\: :ref:`Vector3<class_Vector3>`, height\: :ref:`float<class_float>`, radius\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Geometry3D_method_segment_intersects_cylinder>`
Verifica se il segmento (``from``, ``to``) interseca il cilindro con altezza ``height`` che è centrato nell'origine e ha raggio ``radius``. Se no, restituisce un :ref:`PackedVector3Array<class_PackedVector3Array>` vuoto. Se si verifica un'intersezione, l'array restituito contiene il punto di intersezione e la normale del cilindro nel punto di intersezione.
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_segment_intersects_sphere:
.. rst-class:: classref-method
:ref:`PackedVector3Array<class_PackedVector3Array>` **segment_intersects_sphere**\ (\ from\: :ref:`Vector3<class_Vector3>`, to\: :ref:`Vector3<class_Vector3>`, sphere_position\: :ref:`Vector3<class_Vector3>`, sphere_radius\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Geometry3D_method_segment_intersects_sphere>`
Verifica se il segmento (``from``, ``to``) interseca la sfera che si trova in ``sphere_position`` e ha raggio ``sphere_radius``. Se no, restituisce un :ref:`PackedVector3Array<class_PackedVector3Array>` vuoto. Altrimenti, restituisce un :ref:`PackedVector3Array<class_PackedVector3Array>` contenente il punto di intersezione e la normale della sfera nel punto di intersezione.
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_segment_intersects_triangle:
.. rst-class:: classref-method
:ref:`Variant<class_Variant>` **segment_intersects_triangle**\ (\ from\: :ref:`Vector3<class_Vector3>`, to\: :ref:`Vector3<class_Vector3>`, a\: :ref:`Vector3<class_Vector3>`, b\: :ref:`Vector3<class_Vector3>`, c\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Geometry3D_method_segment_intersects_triangle>`
Verifica se il segmento (``from``, ``to``) interseca il triangolo ``a``, ``b``, ``c``. Se sì, restituisce il punto di intersezione come :ref:`Vector3<class_Vector3>`. Se non si verifica alcuna intersezione, restituisce ``null``.
.. rst-class:: classref-item-separator
----
.. _class_Geometry3D_method_tetrahedralize_delaunay:
.. rst-class:: classref-method
:ref:`PackedInt32Array<class_PackedInt32Array>` **tetrahedralize_delaunay**\ (\ points\: :ref:`PackedVector3Array<class_PackedVector3Array>`\ ) :ref:`🔗<class_Geometry3D_method_tetrahedralize_delaunay>`
Tetraedralizza il volume specificato da una serie discreto di punti (``points``) nello spazio 3D, assicurando che nessun punto si trovi all'interno della circumsfera di alcun tetraedro risultante. Il metodo restituisce un :ref:`PackedInt32Array<class_PackedInt32Array>` in cui ogni tetraedro è costituito da quattro indici di punti consecutivi nell'array ``points`` (che risulta in un array con ``n * 4`` elementi, dove ``n`` è il numero di tetraedri trovati). Se la tetraedralizzazione non riesce, viene restituito un :ref:`PackedInt32Array<class_PackedInt32Array>` vuoto.
.. |virtual| replace:: :abbr:`virtual (Questo metodo dovrebbe solitamente essere sovrascritto dall'utente per aver un effetto.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Questo metodo non ha effetti collaterali. Non modifica alcuna variabile appartenente all'istanza.)`
.. |vararg| replace:: :abbr:`vararg (Questo metodo accetta qualsiasi numero di argomenti oltre a quelli descritti qui.)`
.. |constructor| replace:: :abbr:`constructor (Questo metodo è utilizzato per creare un tipo.)`
.. |static| replace:: :abbr:`static (Questo metodo non necessita di alcun'istanza per essere chiamato, quindi può essere chiamato direttamente usando il nome della classe.)`
.. |operator| replace:: :abbr:`operator (Questo metodo descrive un operatore valido da usare con questo tipo come operando di sinistra.)`
.. |bitfield| replace:: :abbr:`BitField (Questo valore è un intero composto da una maschera di bit dei seguenti flag.)`
.. |void| replace:: :abbr:`void (Nessun valore restituito.)`