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
Плоскость в нормальной форме Гессе (Hessian).
Описание
Represents a normalized plane equation. normal is the normal of the plane (a, b, c normalized), and d is the distance from the origin to the plane (in the direction of "normal"). "Over" or "Above" the plane is considered the side of the plane towards where the normal is pointing.
Note: In a boolean context, a plane will evaluate to false if all its components equal 0. Otherwise, a plane will always evaluate to 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 не представляет допустимую плоскость.
В скалярном уравнении плоскости ax + by + cz = d это вектор (a, b, c), где d — свойство d.
Компонент X вектора normal плоскости.
Компонент Y вектора normal плоскости.
Компонент Z вектора normal плоскости.
Описания конструктора
Создает инициализированную по умолчанию Plane со всеми компонентами, установленными на 0.
Создает 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 находится внутри плоскости. Сравнение использует пользовательский минимальный порог allowance.
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_approx() для каждого компонента.
Возвращает true, если эта плоскость конечна, вызывая @GlobalScope.is_finite() для каждого компонента.
bool is_point_over(point: Vector3) const 🔗
Возвращает true, если point расположена над плоскостью.
Возвращает копию плоскости с нормализованным normal (то есть это единичный вектор). Возвращает Plane(0, 0, 0, 0), если normal не может быть нормализован (он имеет нулевую длину).
Vector3 project(point: Vector3) const 🔗
Возвращает ортогональную проекцию point на точку на плоскости.
Описания оператора
bool operator !=(right: Plane) 🔗
Возвращает true, если плоскости не равны.
Примечание: Из-за ошибок точности с плавающей точкой рассмотрите возможность использования is_equal_approx() вместо этого, что более надежно.
Plane operator *(right: Transform3D) 🔗
Обратно преобразует (умножает) Plane на заданную матрицу преобразования Transform3D.
plane * transform эквивалентно transform.affine_inverse() * plane. См. Transform3D.affine_inverse().
bool operator ==(right: Plane) 🔗
Возвращает true, если плоскости точно равны.
Примечание: Из-за ошибок точности с плавающей точкой рассмотрите возможность использования is_equal_approx(), который более надежен.
Возвращает то же значение, как если бы + не было. Унарный + ничего не делает, но иногда он может сделать ваш код более читаемым.
Возвращает отрицательное значение Plane. Это то же самое, что и запись Plane(-p.normal, -p.d). Эта операция меняет направление вектора нормали, а также меняет значение расстояния, в результате чего Plane находится в том же месте, но смотрит в противоположном направлении.