Plane
A plane in Hessian normal form.
描述
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.
属性
构造函数
Plane | Plane ( ) |
Plane | Plane ( from: Plane ) |
Plane | Plane ( a: float , b: float , c: float , d: float ) |
Plane | Plane ( normal: Vector3 ) |
Plane | Plane ( normal: Vector3 , d: float ) |
Plane | Plane ( normal: Vector3 , point: Vector3 ) |
Plane | Plane ( point1: Vector3 , point2: Vector3 , point3: Vector3 ) |
方法
float | distance_to ( point: Vector3 ) const1 |
Vector3 | get_center ( ) const1 |
bool | has_point ( point: Vector3 , tolerance: float = 1e-05 ) const1 |
Variant | intersect_3 ( b: Plane , c: Plane ) const1 |
Variant | intersects_ray ( from: Vector3 , dir: Vector3 ) const1 |
Variant | intersects_segment ( from: Vector3 , to: Vector3 ) const1 |
bool | is_equal_approx ( to_plane: Plane ) const1 |
bool | is_finite ( ) const1 |
bool | is_point_over ( point: Vector3 ) const1 |
Plane | normalized ( ) const1 |
Vector3 | project ( point: Vector3 ) const1 |
运算符
bool | operator != ( right: Plane ) |
Plane | operator * ( right: Transform3D ) |
bool | operator == ( right: Plane ) |
Plane | operator unary+ ( ) |
Plane | operator unary- ( ) |
常量
PLANE_YZ = Plane(1, 0, 0, 0)
A plane that extends in the Y and Z axes (normal vector points +X).
PLANE_XZ = Plane(0, 1, 0, 0)
A plane that extends in the X and Z axes (normal vector points +Y).
PLANE_XY = Plane(0, 0, 1, 0)
A plane that extends in the X and Y axes (normal vector points +Z).
属性说明
float
d = 0.0
The distance from the origin to the plane, expressed in terms of normal
(according to its direction and magnitude). Actual absolute distance from the origin to the plane can be calculated as abs(d) / normal.length()
(if normal
has zero length then this Plane does not represent a valid plane).
In the scalar equation of the plane ax + by + cz = d
, this is d
, while the (a, b, c)
coordinates are represented by the normal
property.
Vector3
normal = Vector3(0, 0, 0)
The normal of the plane, typically a unit vector. Shouldn't be a zero vector as Plane with such normal
does not represent a valid plane.
In the scalar equation of the plane ax + by + cz = d
, this is the vector (a, b, c)
, where d
is the d
property.
float
x = 0.0
The X component of the plane's normal
vector.
float
y = 0.0
The Y component of the plane's normal
vector.
float
z = 0.0
The Z component of the plane's normal
vector.
构造函数说明
Plane
Plane ( )
Constructs a default-initialized Plane with all components set to 0
.
Constructs a Plane as a copy of the given Plane.
Plane
Plane ( a: float
, b: float
, c: float
, d: float
)
Creates a plane from the four parameters. The three components of the resulting plane's normal
are a
, b
and c
, and the plane has a distance of d
from the origin.
Plane
Plane ( normal: Vector3
)
Creates a plane from the normal vector. The plane will intersect the origin.
The normal
of the plane must be a unit vector.
Plane
Plane ( normal: Vector3
, d: float
)
Creates a plane from the normal vector and the plane's distance from the origin.
The normal
of the plane must be a unit vector.
Plane
Plane ( normal: Vector3
, point: Vector3
)
Creates a plane from the normal vector and a point on the plane.
The normal
of the plane must be a unit vector.
Plane
Plane ( point1: Vector3
, point2: Vector3
, point3: Vector3
)
Creates a plane from the three points, given in clockwise order.
方法说明
float
distance_to ( point: Vector3
) const1
Returns the shortest distance from the plane to the position point
. If the point is above the plane, the distance will be positive. If below, the distance will be negative.
Returns the center of the plane.
bool
has_point ( point: Vector3
, tolerance: float
= 1e-05 ) const1
Returns true
if point
is inside the plane. Comparison uses a custom minimum tolerance
threshold.
Variant
intersect_3 ( b: Plane
, c: Plane
) const1
Returns the intersection point of the three planes b
, c
and this plane. If no intersection is found, null
is returned.
Variant
intersects_ray ( from: Vector3
, dir: Vector3
) const1
Returns the intersection point of a ray consisting of the position from
and the direction normal dir
with this plane. If no intersection is found, null
is returned.
Variant
intersects_segment ( from: Vector3
, to: Vector3
) const1
Returns the intersection point of a segment from position from
to position to
with this plane. If no intersection is found, null
is returned.
bool
is_equal_approx ( to_plane: Plane
) const1
Returns true
if this plane and to_plane
are approximately equal, by running @GlobalScope.is_equal_approx
on each component.
Returns true
if this plane is finite, by calling @GlobalScope.is_finite
on each component.
bool
is_point_over ( point: Vector3
) const1
Returns true
if point
is located above the plane.
Returns a copy of the plane, with normalized normal
(so it's a unit vector). Returns Plane(0, 0, 0, 0)
if normal
can't be normalized (it has zero length).
Vector3
project ( point: Vector3
) const1
Returns the orthogonal projection of point
into a point in the plane.
运算符说明
bool
operator != ( right: Plane
)
Returns true
if the planes are not equal.
Note: Due to floating-point precision errors, consider using is_equal_approx
instead, which is more reliable.
Plane
**operator *** ( right: Transform3D
)
Inversely transforms (multiplies) the Plane by the given Transform3D
transformation matrix.
plane * transform
is equivalent to transform.affine_inverse() * plane
. See Transform3D.affine_inverse
.
bool
operator == ( right: Plane
)
Returns true
if the planes are exactly equal.
Note: Due to floating-point precision errors, consider using is_equal_approx
instead, which is more reliable.
Plane
operator unary+ ( )
Returns the same value as if the +
was not there. Unary +
does nothing, but sometimes it can make your code more readable.
Plane
operator unary- ( )
Returns the negative value of the Plane. This is the same as writing Plane(-p.normal, -p.d)
. This operation flips the direction of the normal vector and also flips the distance value, resulting in a Plane that is in the same place, but facing the opposite direction.
本方法通常需要用户覆盖才能生效。
本方法无副作用,不会修改该实例的任何成员变量。
本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。
本方法用于构造某个类型。
调用本方法无需实例,可直接使用类名进行调用。
本方法描述的是使用本类型作为左操作数的有效运算符。
这个值是由下列位标志构成位掩码的整数。
无返回值。