Files
godot-docs-l10n/classes/uk/class_curve2d.rst

393 lines
29 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. _class_Curve2D:
Curve2D
=======
**Успадковує:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
Опишіть криву Bézier на 2D площі.
.. rst-class:: classref-introduction-group
Опис
--------
Цей клас описує криву Bézier на 2D площі. В основному використовується для додавання форми до :ref:`Path2D<class_Path2D>`, але може бути вручну зразка для інших цілей.
Забезпечує кеш заготовлених точок по криві, щоб прискорити подальші розрахунки.
.. rst-class:: classref-reftable-group
Властивості
----------------------
.. table::
:widths: auto
+---------------------------+------------------------------------------------------------+---------+
| :ref:`float<class_float>` | :ref:`bake_interval<class_Curve2D_property_bake_interval>` | ``5.0`` |
+---------------------------+------------------------------------------------------------+---------+
| :ref:`int<class_int>` | :ref:`point_count<class_Curve2D_property_point_count>` | ``0`` |
+---------------------------+------------------------------------------------------------+---------+
.. rst-class:: classref-reftable-group
Методи
------------
.. table::
:widths: auto
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_point<class_Curve2D_method_add_point>`\ (\ position\: :ref:`Vector2<class_Vector2>`, in\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0), out\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0), index\: :ref:`int<class_int>` = -1\ ) |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`clear_points<class_Curve2D_method_clear_points>`\ (\ ) |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`float<class_float>` | :ref:`get_baked_length<class_Curve2D_method_get_baked_length>`\ (\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_baked_points<class_Curve2D_method_get_baked_points>`\ (\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`float<class_float>` | :ref:`get_closest_offset<class_Curve2D_method_get_closest_offset>`\ (\ to_point\: :ref:`Vector2<class_Vector2>`\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2<class_Vector2>` | :ref:`get_closest_point<class_Curve2D_method_get_closest_point>`\ (\ to_point\: :ref:`Vector2<class_Vector2>`\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2<class_Vector2>` | :ref:`get_point_in<class_Curve2D_method_get_point_in>`\ (\ idx\: :ref:`int<class_int>`\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2<class_Vector2>` | :ref:`get_point_out<class_Curve2D_method_get_point_out>`\ (\ idx\: :ref:`int<class_int>`\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2<class_Vector2>` | :ref:`get_point_position<class_Curve2D_method_get_point_position>`\ (\ idx\: :ref:`int<class_int>`\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`remove_point<class_Curve2D_method_remove_point>`\ (\ idx\: :ref:`int<class_int>`\ ) |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2<class_Vector2>` | :ref:`sample<class_Curve2D_method_sample>`\ (\ idx\: :ref:`int<class_int>`, t\: :ref:`float<class_float>`\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2<class_Vector2>` | :ref:`sample_baked<class_Curve2D_method_sample_baked>`\ (\ offset\: :ref:`float<class_float>` = 0.0, cubic\: :ref:`bool<class_bool>` = false\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Transform2D<class_Transform2D>` | :ref:`sample_baked_with_rotation<class_Curve2D_method_sample_baked_with_rotation>`\ (\ offset\: :ref:`float<class_float>` = 0.0, cubic\: :ref:`bool<class_bool>` = false\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2<class_Vector2>` | :ref:`samplef<class_Curve2D_method_samplef>`\ (\ fofs\: :ref:`float<class_float>`\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_point_in<class_Curve2D_method_set_point_in>`\ (\ idx\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`\ ) |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_point_out<class_Curve2D_method_set_point_out>`\ (\ idx\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`\ ) |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_point_position<class_Curve2D_method_set_point_position>`\ (\ idx\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`\ ) |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`tessellate<class_Curve2D_method_tessellate>`\ (\ max_stages\: :ref:`int<class_int>` = 5, tolerance_degrees\: :ref:`float<class_float>` = 4\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`tessellate_even_length<class_Curve2D_method_tessellate_even_length>`\ (\ max_stages\: :ref:`int<class_int>` = 5, tolerance_length\: :ref:`float<class_float>` = 20.0\ ) |const| |
+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описи властивостей
------------------------------------
.. _class_Curve2D_property_bake_interval:
.. rst-class:: classref-property
:ref:`float<class_float>` **bake_interval** = ``5.0`` :ref:`🔗<class_Curve2D_property_bake_interval>`
.. rst-class:: classref-property-setget
- |void| **set_bake_interval**\ (\ value\: :ref:`float<class_float>`\ )
- :ref:`float<class_float>` **get_bake_interval**\ (\ )
Відстань між двома суміжними пунктами кешування. Зміна кешу, щоб бути переведеним в наступний раз, функція :ref:`get_baked_points()<class_Curve2D_method_get_baked_points>`. Чим менша відстань, тим більше точок в кеші і чим більше пам'яті буде споживати, тому використовуйте з обережністю.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_property_point_count:
.. rst-class:: classref-property
:ref:`int<class_int>` **point_count** = ``0`` :ref:`🔗<class_Curve2D_property_point_count>`
.. rst-class:: classref-property-setget
- |void| **set_point_count**\ (\ value\: :ref:`int<class_int>`\ )
- :ref:`int<class_int>` **get_point_count**\ (\ )
Кількість точок, що описують криву.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описи методів
--------------------------
.. _class_Curve2D_method_add_point:
.. rst-class:: classref-method
|void| **add_point**\ (\ position\: :ref:`Vector2<class_Vector2>`, in\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0), out\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0), index\: :ref:`int<class_int>` = -1\ ) :ref:`🔗<class_Curve2D_method_add_point>`
Додає точку з вказаною ``position`` відносно власної позиції кривої, з контрольними точками в ``in`` і ``out``. Додає нову точку в кінці списку точок.
Якщо вказано ``index``, нова точка вставляється перед уже наявною, визначеною ``index``. Кожна наявна точка, починаючи з ``index``, передається далі в список точок. Індекс повинен бути більшим чи рівним ``0`` і не повинен перевищувати кількість наявних точок в рядку. Дивитись :ref:`point_count<class_Curve2D_property_point_count>`.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_clear_points:
.. rst-class:: classref-method
|void| **clear_points**\ (\ ) :ref:`🔗<class_Curve2D_method_clear_points>`
Видаліть всі точки з кривої.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_get_baked_length:
.. rst-class:: classref-method
:ref:`float<class_float>` **get_baked_length**\ (\ ) |const| :ref:`🔗<class_Curve2D_method_get_baked_length>`
Повертає загальну довжину кривої на основі кешованих точок. За умови достатньої щільності (див. :ref:`bake_interval<class_Curve2D_property_bake_interval>`) вона має бути достатньо приблизною.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_get_baked_points:
.. rst-class:: classref-method
:ref:`PackedVector2Array<class_PackedVector2Array>` **get_baked_points**\ (\ ) |const| :ref:`🔗<class_Curve2D_method_get_baked_points>`
Повертає кеш точок як :ref:`PackedVector2Array<class_PackedVector2Array>`.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_get_closest_offset:
.. rst-class:: classref-method
:ref:`float<class_float>` **get_closest_offset**\ (\ to_point\: :ref:`Vector2<class_Vector2>`\ ) |const| :ref:`🔗<class_Curve2D_method_get_closest_offset>`
Повертає найближче зміщення до ``to_point``. Це зміщення призначене для використання в :ref:`sample_baked()<class_Curve2D_method_sample_baked>`.
\ ``to_point`` має бути в локальному просторі цієї кривої.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_get_closest_point:
.. rst-class:: classref-method
:ref:`Vector2<class_Vector2>` **get_closest_point**\ (\ to_point\: :ref:`Vector2<class_Vector2>`\ ) |const| :ref:`🔗<class_Curve2D_method_get_closest_point>`
Повертає найближчу точку на запечених сегментах (у локальному просторі кривої) до ``to_point``.
\ ``to_point`` має бути в локальному просторі цієї кривої.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_get_point_in:
.. rst-class:: classref-method
:ref:`Vector2<class_Vector2>` **get_point_in**\ (\ idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Curve2D_method_get_point_in>`
Повертає позицію контрольної точки, що веде до вершини ``idx``. Повернуте положення відносно вершини ``idx``. Якщо індекс вимкнено з меж, функція надсилає помилку до консолі, і повертає ``(0, 0)``.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_get_point_out:
.. rst-class:: classref-method
:ref:`Vector2<class_Vector2>` **get_point_out**\ (\ idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Curve2D_method_get_point_out>`
Повертає позицію контрольної точки, що ведеться з вершини ``idx``. Повернуте положення відносно вершини ``idx``. Якщо індекс вимкнено з меж, функція надсилає помилку до консолі, і повертає ``(0, 0)``.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_get_point_position:
.. rst-class:: classref-method
:ref:`Vector2<class_Vector2>` **get_point_position**\ (\ idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Curve2D_method_get_point_position>`
Повертає позицію вершини ``idx``. Якщо індекс вимкнено з меж, функція надсилає помилку до консолі, і повертає ``(0, 0)``.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_remove_point:
.. rst-class:: classref-method
|void| **remove_point**\ (\ idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Curve2D_method_remove_point>`
Видаляє точку ``idx`` з кривої. Виводить помилку в консоль, якщо ``idx`` виходить за межі.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_sample:
.. rst-class:: classref-method
:ref:`Vector2<class_Vector2>` **sample**\ (\ idx\: :ref:`int<class_int>`, t\: :ref:`float<class_float>`\ ) |const| :ref:`🔗<class_Curve2D_method_sample>`
Повертає позицію між вершиною ``idx`` і вершиною ``idx + 1``, де ``t`` контролює, якщо точка є першою вершиною (``t = 0.0``), останнього вершини (``t = 1.0``), або між. Значення ``t`` за межі (``0.0 <= т <= 1.0``) дають дивний, але передбачуваний результат.
Якщо ``idx`` є з меж, він truncated to the first or last vertex, і ``t`` ігнорується. Якщо крива не має точок, функція надсилає помилку в консолі, і повертає ``(0, 0)``.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_sample_baked:
.. rst-class:: classref-method
:ref:`Vector2<class_Vector2>` **sample_baked**\ (\ offset\: :ref:`float<class_float>` = 0.0, cubic\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_Curve2D_method_sample_baked>`
Повертає точку в межах кривої на позиції ``offset``, де ``offset`` вимірюється як піксельна відстань вздовж кривої.
З цією метою шукаються дві кешовані точки, між якими знаходиться ``offset``, а потім відбувається інтерполяція значень. Ця інтерполяція є кубічною, якщо ``cubic`` встановлено на ``true``, або лінійною, якщо встановлено на ``false``.
Кубічна інтерполяція має бути краще слідувати вигинам, але лінійна швидше (і часто досить точна).
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_sample_baked_with_rotation:
.. rst-class:: classref-method
:ref:`Transform2D<class_Transform2D>` **sample_baked_with_rotation**\ (\ offset\: :ref:`float<class_float>` = 0.0, cubic\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_Curve2D_method_sample_baked_with_rotation>`
Подібний до :ref:`sample_baked()<class_Curve2D_method_sample_baked>`, але повертає :ref:`Transform2D<class_Transform2D>`, що включає обертання вздовж кривої, з :ref:`Transform2D.origin<class_Transform2D_property_origin>` як позицією точки і вектором :ref:`Transform2D.x<class_Transform2D_property_x>`, що вказує на напрямок шляху в цій точці. Повертає порожнє перетворення, якщо довжина кривої дорівнює ``0``.
::
var baked = curve.sample_baked_with_rotation(offset)
# Повернуте Transform2D можна задати безпосередньо.
transform = baked
# Ви також можете прочитати початок координат і поворот окремо від повернутого Transform2D.
position = baked.get_origin()
rotation = baked.get_rotation()
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_samplef:
.. rst-class:: classref-method
:ref:`Vector2<class_Vector2>` **samplef**\ (\ fofs\: :ref:`float<class_float>`\ ) |const| :ref:`🔗<class_Curve2D_method_samplef>`
Повертає позицію у вершині ``fofs``. Викликає метод :ref:`sample()<class_Curve2D_method_sample>`, використовуючи цілу частину ``fofs`` як ``idx``, а його дробову частину як ``t``.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_set_point_in:
.. rst-class:: classref-method
|void| **set_point_in**\ (\ idx\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_Curve2D_method_set_point_in>`
Налаштовує позицію контрольної точки, що веде до вершини ``idx``. Якщо індекс виходить з меж, функція відправляє помилку в консолі. Позиція відносно вершини.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_set_point_out:
.. rst-class:: classref-method
|void| **set_point_out**\ (\ idx\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_Curve2D_method_set_point_out>`
Налаштовує позицію контрольної точки, що ведеться з вершини ``idx``. Якщо індекс виходить з меж, функція відправляє помилку в консолі. Позиція відносно вершини.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_set_point_position:
.. rst-class:: classref-method
|void| **set_point_position**\ (\ idx\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_Curve2D_method_set_point_position>`
Встановлює позицію для вершини ``idx``. Якщо індекс виходить з меж, функція відправляє помилку в консолі.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_tessellate:
.. rst-class:: classref-method
:ref:`PackedVector2Array<class_PackedVector2Array>` **tessellate**\ (\ max_stages\: :ref:`int<class_int>` = 5, tolerance_degrees\: :ref:`float<class_float>` = 4\ ) |const| :ref:`🔗<class_Curve2D_method_tessellate>`
Повертає список точок вздовж вигину, з нахилом контрольованої щільності точки. Що це, деталі кривих будуть мати більше точок, ніж прямі частини.
Ця апроксимація робить прямі сегменти між кожною точкою, потім позбавляє від цих сегментів до тих пір, поки отримана форма аналогічна.
\ ``max_stages`` контролює, як багато підрозділів кривого сегмента може зіткнутися до того, як він вважається досить наближеним. Кожен підрозділ розбиває сегмент навпіл, тому етапи за замовчуванням 5 може означати до 32 підрозділів на кривому сегменті. Підвищений догляд!
\ ``толерантність_degrees`` контролює, скільки ступенів середньої точки сегмента може відхилити від реальної кривої, до того, як сегмент повинен бути відхилений.
.. rst-class:: classref-item-separator
----
.. _class_Curve2D_method_tessellate_even_length:
.. rst-class:: classref-method
:ref:`PackedVector2Array<class_PackedVector2Array>` **tessellate_even_length**\ (\ max_stages\: :ref:`int<class_int>` = 5, tolerance_length\: :ref:`float<class_float>` = 20.0\ ) |const| :ref:`🔗<class_Curve2D_method_tessellate_even_length>`
Повертає список точок вздовж вигину, з майже рівномірною щільністю. ``max_stages`` контролює, як багато підрозділів кривого сегмента може зіткнутися до того, як він вважається досить наближеним. Кожен підрозділ розбиває сегмент навпіл, тому етапи за замовчуванням 5 може означати до 32 підрозділів на кривому сегменті. Підвищений догляд!
\ ``толерантність_довжина`` контролює максимальну відстань між двома сусідніми точками, перш ніж сегмент повинен бути підпорядкований.
.. |virtual| replace:: :abbr:`virtual (Зазвичай, цей метод перевизначається користувачем, щоб він мав вплив.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Цей метод не має побічних ефектів. Не змінює ніяку змінну екземпляра об'єкта.)`
.. |vararg| replace:: :abbr:`vararg (Цей метод приймає будь-яке число аргументів після описаних тут.)`
.. |constructor| replace:: :abbr:`constructor (Цей метод використовується для побудови типів.)`
.. |static| replace:: :abbr:`static (Цей метод не потребує екземпляра для виклику, його можна викликати безпосередньо за допомогою назви класу.)`
.. |operator| replace:: :abbr:`operator (Цей метод описує дійсний оператор для взаємодії з цим типом як з лівим операндом.)`
.. |bitfield| replace:: :abbr:`BitField (Це значення є цілим числом, складеним у вигляді бітової маски з наступних прапорів.)`
.. |void| replace:: :abbr:`void (Значення не повертається.)`