Plane
Літак в шестигранній нормальній формі.
Опис
Представлено нормалізоване рівняння площини. normal - норма площини (а, б, c нормалізовано), а d - відстань від походження до площини (в напрямку «нормального»). "Овер" або "Абов" площина вважається боком площини, на якій знаходиться норма.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
Конструктори
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). Ця операція застібає напрямок нормального вектора, а також затискає значення відстані, що призводить до площини, що знаходиться в тому ж місці, але облицювання протилежного напрямку.