Documentation
¶
Overview ¶
Provides a set of helper functions to create geometric shapes, compute intersections between shapes, and process various other geometric operations in 3D.
Index ¶
- func Advanced() class
- func BuildBoxPlanes(extents Vector3.XYZ) []Plane.NormalD
- func BuildCapsulePlanes(radius Float.X, height Float.X, sides int, lats int) []Plane.NormalD
- func BuildCapsulePlanesOptions(radius Float.X, height Float.X, sides int, lats int, axis Vector3.Axis) []Plane.NormalD
- func BuildCylinderPlanes(radius Float.X, height Float.X, sides int) []Plane.NormalD
- func BuildCylinderPlanesOptions(radius Float.X, height Float.X, sides int, axis Vector3.Axis) []Plane.NormalD
- func ClipPolygon(points []Vector3.XYZ, plane Plane.NormalD) []Vector3.XYZ
- func ComputeConvexMeshPoints(planes []Plane.NormalD) []Vector3.XYZ
- func GetClosestPointToSegment(point Vector3.XYZ, s1 Vector3.XYZ, s2 Vector3.XYZ) Vector3.XYZ
- func GetClosestPointToSegmentUncapped(point Vector3.XYZ, s1 Vector3.XYZ, s2 Vector3.XYZ) Vector3.XYZ
- func GetClosestPointsBetweenSegments(p1 Vector3.XYZ, p2 Vector3.XYZ, q1 Vector3.XYZ, q2 Vector3.XYZ) []Vector3.XYZ
- func GetTriangleBarycentricCoords(point Vector3.XYZ, a Vector3.XYZ, b Vector3.XYZ, c Vector3.XYZ) Vector3.XYZ
- func RayIntersectsTriangle(from Vector3.XYZ, dir Vector3.XYZ, a Vector3.XYZ, b Vector3.XYZ, c Vector3.XYZ) any
- func SegmentIntersectsConvex(from Vector3.XYZ, to Vector3.XYZ, planes []Plane.NormalD) []Vector3.XYZ
- func SegmentIntersectsCylinder(from Vector3.XYZ, to Vector3.XYZ, height Float.X, radius Float.X) []Vector3.XYZ
- func SegmentIntersectsSphere(from Vector3.XYZ, to Vector3.XYZ, sphere_position Vector3.XYZ, ...) []Vector3.XYZ
- func SegmentIntersectsTriangle(from Vector3.XYZ, to Vector3.XYZ, a Vector3.XYZ, b Vector3.XYZ, c Vector3.XYZ) any
- func TetrahedralizeDelaunay(points []Vector3.XYZ) []int32
- type Extension
- type ID
- type Instance
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Advanced ¶
func Advanced() class
Advanced exposes a 1:1 low-level instance of the class, undocumented, for those who know what they are doing.
func BuildBoxPlanes ¶
Returns an array with 6 [Plane.NormalD]s that describe the sides of a box centered at the origin. The box size is defined by 'extents', which represents one (positive) corner of the box (i.e. half its actual size).
func BuildCapsulePlanes ¶
Returns an array of [Plane.NormalD]s closely bounding a faceted capsule centered at the origin with radius 'radius' and height 'height'. The parameter 'sides' defines how many planes will be generated for the side part of the capsule, whereas 'lats' gives the number of latitudinal steps at the bottom and top of the capsule. The parameter 'axis' describes the axis along which the capsule is oriented (0 for X, 1 for Y, 2 for Z).
func BuildCapsulePlanesOptions ¶
func BuildCapsulePlanesOptions(radius Float.X, height Float.X, sides int, lats int, axis Vector3.Axis) []Plane.NormalD
Returns an array of [Plane.NormalD]s closely bounding a faceted capsule centered at the origin with radius 'radius' and height 'height'. The parameter 'sides' defines how many planes will be generated for the side part of the capsule, whereas 'lats' gives the number of latitudinal steps at the bottom and top of the capsule. The parameter 'axis' describes the axis along which the capsule is oriented (0 for X, 1 for Y, 2 for Z).
func BuildCylinderPlanes ¶
Returns an array of [Plane.NormalD]s closely bounding a faceted cylinder centered at the origin with radius 'radius' and height 'height'. The parameter 'sides' defines how many planes will be generated for the round part of the cylinder. The parameter 'axis' describes the axis along which the cylinder is oriented (0 for X, 1 for Y, 2 for Z).
func BuildCylinderPlanesOptions ¶
func BuildCylinderPlanesOptions(radius Float.X, height Float.X, sides int, axis Vector3.Axis) []Plane.NormalD
Returns an array of [Plane.NormalD]s closely bounding a faceted cylinder centered at the origin with radius 'radius' and height 'height'. The parameter 'sides' defines how many planes will be generated for the round part of the cylinder. The parameter 'axis' describes the axis along which the cylinder is oriented (0 for X, 1 for Y, 2 for Z).
func ClipPolygon ¶
Clips the polygon defined by the points in 'points' against the 'plane' and returns the points of the clipped polygon.
func ComputeConvexMeshPoints ¶
Calculates and returns all the vertex points of a convex shape defined by an array of 'planes'.
func GetClosestPointToSegment ¶
Returns the 3D point on the 3D segment ('s1', 's2') that is closest to 'point'. The returned point will always be inside the specified segment.
func GetClosestPointToSegmentUncapped ¶
func GetClosestPointToSegmentUncapped(point Vector3.XYZ, s1 Vector3.XYZ, s2 Vector3.XYZ) Vector3.XYZ
Returns the 3D point on the 3D line defined by ('s1', 's2') that is closest to 'point'. The returned point can be inside the segment ('s1', 's2') or outside of it, i.e. somewhere on the line extending from the segment.
func GetClosestPointsBetweenSegments ¶
func GetClosestPointsBetweenSegments(p1 Vector3.XYZ, p2 Vector3.XYZ, q1 Vector3.XYZ, q2 Vector3.XYZ) []Vector3.XYZ
Given the two 3D segments ('p1', 'p2') and ('q1', 'q2'), finds those two points on the two segments that are closest to each other. Returns a [][Vector3.XYZ] that contains this point on ('p1', 'p2') as well the accompanying point on ('q1', 'q2').
func GetTriangleBarycentricCoords ¶
func GetTriangleBarycentricCoords(point Vector3.XYZ, a Vector3.XYZ, b Vector3.XYZ, c Vector3.XYZ) Vector3.XYZ
Returns a [Vector3.XYZ] containing weights based on how close a 3D position ('point') is to a triangle's different vertices ('a', 'b' and 'c'). This is useful for interpolating between the data of different vertices in a triangle. One example use case is using this to smoothly rotate over a mesh instead of relying solely on face normals.
Here is a more detailed explanation of barycentric coordinates.
func RayIntersectsTriangle ¶
func RayIntersectsTriangle(from Vector3.XYZ, dir Vector3.XYZ, a Vector3.XYZ, b Vector3.XYZ, c Vector3.XYZ) any
Tests if the 3D ray starting at 'from' with the direction of 'dir' intersects the triangle specified by 'a', 'b' and 'c'. If yes, returns the point of intersection as [Vector3.XYZ]. If no intersection takes place, returns null.
func SegmentIntersectsConvex ¶
func SegmentIntersectsConvex(from Vector3.XYZ, to Vector3.XYZ, planes []Plane.NormalD) []Vector3.XYZ
Given a convex hull defined though the [Plane.NormalD]s in the array 'planes', tests if the segment ('from', 'to') intersects with that hull. If an intersection is found, returns a [][Vector3.XYZ] containing the point the intersection and the hull's normal. Otherwise, returns an empty array.
func SegmentIntersectsCylinder ¶
func SegmentIntersectsCylinder(from Vector3.XYZ, to Vector3.XYZ, height Float.X, radius Float.X) []Vector3.XYZ
Checks if the segment ('from', 'to') intersects the cylinder with height 'height' that is centered at the origin and has radius 'radius'. If no, returns an empty [][Vector3.XYZ]. If an intersection takes place, the returned array contains the point of intersection and the cylinder's normal at the point of intersection.
func SegmentIntersectsSphere ¶
func SegmentIntersectsSphere(from Vector3.XYZ, to Vector3.XYZ, sphere_position Vector3.XYZ, sphere_radius Float.X) []Vector3.XYZ
Checks if the segment ('from', 'to') intersects the sphere that is located at 'sphere_position' and has radius 'sphere_radius'. If no, returns an empty [][Vector3.XYZ]. If yes, returns a [][Vector3.XYZ] containing the point of intersection and the sphere's normal at the point of intersection.
func SegmentIntersectsTriangle ¶
func SegmentIntersectsTriangle(from Vector3.XYZ, to Vector3.XYZ, a Vector3.XYZ, b Vector3.XYZ, c Vector3.XYZ) any
Tests if the segment ('from', 'to') intersects the triangle 'a', 'b', 'c'. If yes, returns the point of intersection as [Vector3.XYZ]. If no intersection takes place, returns null.
func TetrahedralizeDelaunay ¶
Tetrahedralizes the volume specified by a discrete set of 'points' in 3D space, ensuring that no point lies within the circumsphere of any resulting tetrahedron. The method returns a []int32 where each tetrahedron consists of four consecutive point indices into the 'points' array (resulting in an array with n * 4 elements, where n is the number of tetrahedra found). If the tetrahedralization is unsuccessful, an empty []int32 is returned.
Types ¶
type Extension ¶
Extension can be embedded in a new struct to create an extension of this class. T should be the type that is embedding this Extension
type ID ¶
ID is a typed object ID (reference) to an instance of this class, use it to store references to objects with unknown lifetimes, as an ID will not panic on use if the underlying object has been destroyed.
type Instance ¶
type Instance [1]gdclass.Geometry3D
Instance of the class with convieniently typed arguments and results.