:github_url: hide .. _class_Curve: Curve ===== **Eredita:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` Una curva matematica. .. rst-class:: classref-introduction-group Descrizione ---------------------- Questa risorsa descrive una curva matematica definendo una serie di punti e tangenti in ogni punto. Come predefinito, varia tra ``0`` e ``1`` sugli assi X e Y, ma Γ¨ possibile cambiare questi intervalli. Si noti che molte risorse e nodi presumono di avere *curve unitarie*. Una curva unitaria Γ¨ una curva il cui dominio (l'asse X) Γ¨ compreso tra ``0`` e ``1``. Alcuni esempi di utilizzo di una curva unitaria sono :ref:`CPUParticles2D.angle_curve` e :ref:`Line2D.width_curve`. .. rst-class:: classref-reftable-group ProprietΓ  ------------------ .. table:: :widths: auto +---------------------------+--------------------------------------------------------------+---------+ | :ref:`int` | :ref:`bake_resolution` | ``100`` | +---------------------------+--------------------------------------------------------------+---------+ | :ref:`float` | :ref:`max_domain` | ``1.0`` | +---------------------------+--------------------------------------------------------------+---------+ | :ref:`float` | :ref:`max_value` | ``1.0`` | +---------------------------+--------------------------------------------------------------+---------+ | :ref:`float` | :ref:`min_domain` | ``0.0`` | +---------------------------+--------------------------------------------------------------+---------+ | :ref:`float` | :ref:`min_value` | ``0.0`` | +---------------------------+--------------------------------------------------------------+---------+ | :ref:`int` | :ref:`point_count` | ``0`` | +---------------------------+--------------------------------------------------------------+---------+ .. rst-class:: classref-reftable-group Metodi ------------ .. table:: :widths: auto +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`add_point`\ (\ position\: :ref:`Vector2`, left_tangent\: :ref:`float` = 0, right_tangent\: :ref:`float` = 0, left_mode\: :ref:`TangentMode` = 0, right_mode\: :ref:`TangentMode` = 0\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`bake`\ (\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clean_dupes`\ (\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear_points`\ (\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_domain_range`\ (\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`TangentMode` | :ref:`get_point_left_mode`\ (\ index\: :ref:`int`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_point_left_tangent`\ (\ index\: :ref:`int`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`get_point_position`\ (\ index\: :ref:`int`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`TangentMode` | :ref:`get_point_right_mode`\ (\ index\: :ref:`int`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_point_right_tangent`\ (\ index\: :ref:`int`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_value_range`\ (\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`remove_point`\ (\ index\: :ref:`int`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`sample`\ (\ offset\: :ref:`float`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`sample_baked`\ (\ offset\: :ref:`float`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_point_left_mode`\ (\ index\: :ref:`int`, mode\: :ref:`TangentMode`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_point_left_tangent`\ (\ index\: :ref:`int`, tangent\: :ref:`float`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`set_point_offset`\ (\ index\: :ref:`int`, offset\: :ref:`float`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_point_right_mode`\ (\ index\: :ref:`int`, mode\: :ref:`TangentMode`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_point_right_tangent`\ (\ index\: :ref:`int`, tangent\: :ref:`float`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_point_value`\ (\ index\: :ref:`int`, y\: :ref:`float`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Segnali -------------- .. _class_Curve_signal_domain_changed: .. rst-class:: classref-signal **domain_changed**\ (\ ) :ref:`πŸ”—` Emesso quando :ref:`max_domain` o :ref:`min_domain` vengono modificati. .. rst-class:: classref-item-separator ---- .. _class_Curve_signal_range_changed: .. rst-class:: classref-signal **range_changed**\ (\ ) :ref:`πŸ”—` Emesso quando :ref:`max_value` o :ref:`min_value` viene modificato. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Enumerazioni ------------------------ .. _enum_Curve_TangentMode: .. rst-class:: classref-enumeration enum **TangentMode**: :ref:`πŸ”—` .. _class_Curve_constant_TANGENT_FREE: .. rst-class:: classref-enumeration-constant :ref:`TangentMode` **TANGENT_FREE** = ``0`` La tangente su questo lato del punto Γ¨ definita dall'utente. .. _class_Curve_constant_TANGENT_LINEAR: .. rst-class:: classref-enumeration-constant :ref:`TangentMode` **TANGENT_LINEAR** = ``1`` La curva calcola la tangente su questo lato del punto come la pendenza a metΓ  strada verso il punto adiacente. .. _class_Curve_constant_TANGENT_MODE_COUNT: .. rst-class:: classref-enumeration-constant :ref:`TangentMode` **TANGENT_MODE_COUNT** = ``2`` Il numero totale di modalitΓ  tangenti disponibili. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Descrizioni delle proprietΓ  ------------------------------------------------------ .. _class_Curve_property_bake_resolution: .. rst-class:: classref-property :ref:`int` **bake_resolution** = ``100`` :ref:`πŸ”—` .. rst-class:: classref-property-setget - |void| **set_bake_resolution**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_bake_resolution**\ (\ ) Il numero di punti da includere nei dati della curva precalcolati (ovvero memorizzati nella cache). .. rst-class:: classref-item-separator ---- .. _class_Curve_property_max_domain: .. rst-class:: classref-property :ref:`float` **max_domain** = ``1.0`` :ref:`πŸ”—` .. rst-class:: classref-property-setget - |void| **set_max_domain**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_max_domain**\ (\ ) Il dominio massimo (la coordinata x) che i punti possono avere. .. rst-class:: classref-item-separator ---- .. _class_Curve_property_max_value: .. rst-class:: classref-property :ref:`float` **max_value** = ``1.0`` :ref:`πŸ”—` .. rst-class:: classref-property-setget - |void| **set_max_value**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_max_value**\ (\ ) Il valore massimo (coordinata y) che i punti possono avere. Le tangenti possono causare valori piΓΉ alti tra i punti. .. rst-class:: classref-item-separator ---- .. _class_Curve_property_min_domain: .. rst-class:: classref-property :ref:`float` **min_domain** = ``0.0`` :ref:`πŸ”—` .. rst-class:: classref-property-setget - |void| **set_min_domain**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_min_domain**\ (\ ) Il dominio minimo (la coordinata x) che i punti possono avere. .. rst-class:: classref-item-separator ---- .. _class_Curve_property_min_value: .. rst-class:: classref-property :ref:`float` **min_value** = ``0.0`` :ref:`πŸ”—` .. rst-class:: classref-property-setget - |void| **set_min_value**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_min_value**\ (\ ) Il valore minimo (coordinata y) che i punti possono avere. Le tangenti possono causare valori piΓΉ bassi tra i punti. .. rst-class:: classref-item-separator ---- .. _class_Curve_property_point_count: .. rst-class:: classref-property :ref:`int` **point_count** = ``0`` :ref:`πŸ”—` .. rst-class:: classref-property-setget - |void| **set_point_count**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_point_count**\ (\ ) Il numero di punti che descrivono la curva. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Descrizioni dei metodi -------------------------------------------- .. _class_Curve_method_add_point: .. rst-class:: classref-method :ref:`int` **add_point**\ (\ position\: :ref:`Vector2`, left_tangent\: :ref:`float` = 0, right_tangent\: :ref:`float` = 0, left_mode\: :ref:`TangentMode` = 0, right_mode\: :ref:`TangentMode` = 0\ ) :ref:`πŸ”—` Aggiunge un punto alla curva. Per ciascun lato, se il ``*_mode`` Γ¨ :ref:`TANGENT_LINEAR`, l'angolo ``*_tangente`` (in gradi) utilizza la pendenza della curva definita rispetto alla semidistanza dal punto adiacente. Consente di specificare tangenti personalizzate con ``*_tangent`` se ``*_mode`` Γ¨ impostato su :ref:`TANGENT_FREE`. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_bake: .. rst-class:: classref-method |void| **bake**\ (\ ) :ref:`πŸ”—` Ricalcola la cache dei punti della curva. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_clean_dupes: .. rst-class:: classref-method |void| **clean_dupes**\ (\ ) :ref:`πŸ”—` Rimuove i punti duplicati, ossia i punti che sono lontani meno di 0,00001 unitΓ  (valore epsilon del motore) dal loro vicino sulla curva. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_clear_points: .. rst-class:: classref-method |void| **clear_points**\ (\ ) :ref:`πŸ”—` Rimuove tutti i punti dalla curva. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_domain_range: .. rst-class:: classref-method :ref:`float` **get_domain_range**\ (\ ) |const| :ref:`πŸ”—` Restituisce la differenza tra :ref:`min_domain` e :ref:`max_domain`. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_point_left_mode: .. rst-class:: classref-method :ref:`TangentMode` **get_point_left_mode**\ (\ index\: :ref:`int`\ ) |const| :ref:`πŸ”—` Restituisce il :ref:`TangentMode` sinistro per il punto all'indice ``index``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_point_left_tangent: .. rst-class:: classref-method :ref:`float` **get_point_left_tangent**\ (\ index\: :ref:`int`\ ) |const| :ref:`πŸ”—` Restituisce l'angolo tangente sinistro (in gradi) per il punto all'indice ``index``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_point_position: .. rst-class:: classref-method :ref:`Vector2` **get_point_position**\ (\ index\: :ref:`int`\ ) |const| :ref:`πŸ”—` Restituisce le coordinate della curva per il punto all'indice ``index``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_point_right_mode: .. rst-class:: classref-method :ref:`TangentMode` **get_point_right_mode**\ (\ index\: :ref:`int`\ ) |const| :ref:`πŸ”—` Restituisce il :ref:`TangentMode` destro per il punto all'indice ``index``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_point_right_tangent: .. rst-class:: classref-method :ref:`float` **get_point_right_tangent**\ (\ index\: :ref:`int`\ ) |const| :ref:`πŸ”—` Restituisce l'angolo tangente destro (in gradi) per il punto all'indice ``index``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_value_range: .. rst-class:: classref-method :ref:`float` **get_value_range**\ (\ ) |const| :ref:`πŸ”—` Restituisce la differenza tra :ref:`min_value` e :ref:`max_value`. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_remove_point: .. rst-class:: classref-method |void| **remove_point**\ (\ index\: :ref:`int`\ ) :ref:`πŸ”—` Rimuove il punto all'indice ``index`` dalla curva. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_sample: .. rst-class:: classref-method :ref:`float` **sample**\ (\ offset\: :ref:`float`\ ) |const| :ref:`πŸ”—` Restituisce il valore Y per il punto che esisterebbe nell'``offset`` di posizione X lungo la curva. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_sample_baked: .. rst-class:: classref-method :ref:`float` **sample_baked**\ (\ offset\: :ref:`float`\ ) |const| :ref:`πŸ”—` Restituisce il valore Y per il punto che esisterebbe nell'``offset`` di posizione X lungo la curva usando la cache precalcolata. Precalcola i punti della curva se non sono giΓ  stati calcolati. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_left_mode: .. rst-class:: classref-method |void| **set_point_left_mode**\ (\ index\: :ref:`int`, mode\: :ref:`TangentMode`\ ) :ref:`πŸ”—` Imposta il :ref:`TangentMode` sinistro per il punto all'indice ``index`` su ``mode``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_left_tangent: .. rst-class:: classref-method |void| **set_point_left_tangent**\ (\ index\: :ref:`int`, tangent\: :ref:`float`\ ) :ref:`πŸ”—` Imposta l'angolo tangente sinistro per il punto all'indice ``index`` su ``tangent``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_offset: .. rst-class:: classref-method :ref:`int` **set_point_offset**\ (\ index\: :ref:`int`, offset\: :ref:`float`\ ) :ref:`πŸ”—` Imposta l'offset da ``0.5``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_right_mode: .. rst-class:: classref-method |void| **set_point_right_mode**\ (\ index\: :ref:`int`, mode\: :ref:`TangentMode`\ ) :ref:`πŸ”—` Imposta il :ref:`TangentMode` destro per il punto all'indice ``index`` su ``mode``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_right_tangent: .. rst-class:: classref-method |void| **set_point_right_tangent**\ (\ index\: :ref:`int`, tangent\: :ref:`float`\ ) :ref:`πŸ”—` Imposta l'angolo tangente destro per il punto all'indice ``index`` su ``tangent``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_value: .. rst-class:: classref-method |void| **set_point_value**\ (\ index\: :ref:`int`, y\: :ref:`float`\ ) :ref:`πŸ”—` Assegna la posizione verticale ``y`` al punto all'indice ``index``. .. |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.)`