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.
Checking the stable version of the documentation...
Plane
Літак в шестигранній нормальній формі.
Опис
Представляє нормалізоване рівняння площини. normal — це нормаль до площини (нормалізована у векторах a, b, c), а d — відстань від початку координат до площини (у напрямку «нормалі»). Сторона площини, у бік якої вказує нормаль, вважається «над» або «вище» площини.
Примітка: У булевому контексті площина буде обчислюватися як false, якщо всі її компоненти дорівнюють 0. В іншому випадку площина завжди обчислюватиметься як true.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
Конструктори
Plane() |
|
Методи
distance_to(point: Vector3) const |
|
get_center() const |
|
intersect_3(b: Plane, c: Plane) const |
|
intersects_ray(from: Vector3, dir: Vector3) const |
|
intersects_segment(from: Vector3, to: Vector3) const |
|
is_equal_approx(to_plane: Plane) const |
|
is_finite() const |
|
is_point_over(point: Vector3) const |
|
normalized() const |
|
Оператори
operator !=(right: Plane) |
|
operator *(right: Transform3D) |
|
operator ==(right: Plane) |
|
Константи
PLANE_YZ = Plane(1, 0, 0, 0) 🔗
У літаку Y та Z (нормальні векторні точки +X).
PLANE_XZ = Plane(0, 1, 0, 0) 🔗
Літак, що розширюється в осях X і Z (нормальні векторні точки + Y).
PLANE_XY = Plane(0, 0, 1, 0) 🔗
Літак, що простягається в осях X і Y (звичайні векторні точки +Z).
Описи властивостей
Відстань від початку координат до площини, виражена через normal (відповідно до її напрямку та величини). Фактична абсолютна відстань від початку координат до площини може бути обчислена як abs(d) / normal.length() (якщо normal має нульову довжину, то ця Plane не є дійсною площиною).
У скалярному рівнянні площини ax + by + cz = d це d, тоді як координати (a, b, c) представлені властивістю normal.
Vector3 normal = Vector3(0, 0, 0) 🔗
Норма площини, як правило, вектор блоку. Чи не є нульовим вектором, як Plane з такими normal не представляє дійсну площину.
У scalar рівняння площини ax + від + cz = d, це вектор (a, b, c), де d is the d майно.
Компонента X вектора normal площини.
Компонента Y вектора normal площини.
Компонента Z вектора normal площини.
Описи конструкторів
Створює стандартну ініціалізацію Plane з усіма компонентами, встановленими на 0.
Constructs a Plane як копія даної Plane.
Plane Plane(a: float, b: float, c: float, d: float)
Створює площину з чотирьох параметрів. Три компоненти normal результуючої площини - це a, b та c, а площина має відстань d від походження.
Створює площину з нормального вектора. У літаку буде перетинати походження.
normal площини повинна бути вектором.
Plane Plane(normal: Vector3, d: float)
Створює площину від нормального вектора і відстані площини від походження.
normal площини повинна бути вектором.
Plane Plane(normal: Vector3, point: Vector3)
Створює площину з нормального вектора і точки на площині.
normal площини повинна бути вектором.
Plane Plane(point1: Vector3, point2: Vector3, point3: Vector3)
Створює площину з трьох точок, з урахуванням годинникового порядку.
Описи методів
float distance_to(point: Vector3) const 🔗
Повертає найкоротшу відстань від площини до позиції point. Якщо точка знаходиться над площиною, відстань буде додатною. Якщо нижче, відстань буде від'ємною.
Повертає центр площини.
bool has_point(point: Vector3, tolerance: float = 1e-05) const 🔗
Повертає true, якщо point знаходиться всередині площини. Порівняння використовує власне мінімальне порогове значення tolerance.
Variant intersect_3(b: Plane, c: Plane) const 🔗
Повертає точку перетину три площини b, c і цей літак. null повертається.
Variant intersects_ray(from: Vector3, dir: Vector3) const 🔗
Повертає точку перетину променя, що складається з позиції from та нормалі напрямку dir з цією площиною. Якщо перетин не знайдено, повертається null.
Variant intersects_segment(from: Vector3, to: Vector3) const 🔗
Повертає точку перетину від позиції from до положення to з цією площиною. Якщо не знайдено перетину, null повертається.
bool is_equal_approx(to_plane: Plane) const 🔗
Повертає true, якщо ця площина і to_plane приблизно рівні, запустивши @GlobalScope.is_equal_about() на кожному компоненті.
Повертає true, якщо цей літак скінчив, викликаючи @GlobalScope.is_finite() на кожному компоненті.
bool is_point_over(point: Vector3) const 🔗
Повертає true, якщо point розташований над площиною.
Повертає копію площини з нормалізованою normal (тобто це одиничний вектор). Повертає Plane(0, 0, 0, 0), якщо нормаль члена не може бути нормалізована (вона має нульову довжину).
Vector3 project(point: Vector3) const 🔗
Повертає ортогональну проекцію point у точку на площині.
Описи операторів
bool operator !=(right: Plane) 🔗
Повертає true, якщо літаки не рівні.
Примітка: У зв'язку з похибками з плаваючою точкою, розглянемо використання is_equal_approx() замість того, яка є більш надійним.
Plane operator *(right: Transform3D) 🔗
Безперервно трансформується (мультати) Plane заданим Transform3D матрицею перетворення.
plane * трансформатор еквівалент transform.affine_inverse() * літак. Transform3D.affine_inverse().
bool operator ==(right: Plane) 🔗
Повертає true, якщо літаки рівно рівні.
Примітка: У зв'язку з похибками з плаваючою точкою, розглянемо використання is_equal_approx() замість того, яка є більш надійним.
Повертає однакову вартість, якщо + не було. `` +`` нічого не робить, але іноді це може зробити ваш код більш читабельним.
Повернення негативного значення Plane. Plane(-p.normal, -p.d). Ця операція застібає напрямок нормального вектора, а також затискає значення відстані, що призводить до площини, що знаходиться в тому ж місці, але облицювання протилежного напрямку.