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.

属性

构造函数

PlanePlane ( )
PlanePlane ( from: Plane )
PlanePlane ( a: float, b: float, c: float, d: float )
PlanePlane ( normal: Vector3 )
PlanePlane ( normal: Vector3, d: float )
PlanePlane ( normal: Vector3, point: Vector3 )
PlanePlane ( point1: Vector3, point2: Vector3, point3: Vector3 )

方法

floatdistance_to ( point: Vector3 ) const1
Vector3get_center ( ) const1
boolhas_point ( point: Vector3, tolerance: float = 1e-05 ) const1
Variantintersect_3 ( b: Plane, c: Plane ) const1
Variantintersects_ray ( from: Vector3, dir: Vector3 ) const1
Variantintersects_segment ( from: Vector3, to: Vector3 ) const1
boolis_equal_approx ( to_plane: Plane ) const1
boolis_finite ( ) const1
boolis_point_over ( point: Vector3 ) const1
Planenormalized ( ) const1
Vector3project ( point: Vector3 ) const1

运算符


常量

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.


Plane Plane ( from: Plane )

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.


Vector3 get_center ( ) const1

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.


bool is_finite ( ) const1

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.


Plane normalized ( ) const1

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.

2

本方法通常需要用户覆盖才能生效。

1

本方法无副作用,不会修改该实例的任何成员变量。

3

本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。

4

本方法用于构造某个类型。

5

调用本方法无需实例,可直接使用类名进行调用。

6

本方法描述的是使用本类型作为左操作数的有效运算符。

7

这个值是由下列位标志构成位掩码的整数。

8

无返回值。