Geometry3D

package
v0.0.0-...-e1beaa7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2025 License: MIT Imports: 25 Imported by: 0

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

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

func BuildBoxPlanes(extents Vector3.XYZ) []Plane.NormalD

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

func BuildCapsulePlanes(radius Float.X, height Float.X, sides int, lats int) []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 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

func BuildCylinderPlanes(radius Float.X, height Float.X, sides int) []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 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

func ClipPolygon(points []Vector3.XYZ, plane Plane.NormalD) []Vector3.XYZ

Clips the polygon defined by the points in 'points' against the 'plane' and returns the points of the clipped polygon.

func ComputeConvexMeshPoints

func ComputeConvexMeshPoints(planes []Plane.NormalD) []Vector3.XYZ

Calculates and returns all the vertex points of a convex shape defined by an array of 'planes'.

func GetClosestPointToSegment

func GetClosestPointToSegment(point Vector3.XYZ, s1 Vector3.XYZ, s2 Vector3.XYZ) Vector3.XYZ

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

func TetrahedralizeDelaunay(points []Vector3.XYZ) []int32

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

type Extension[T gdclass.Interface] struct{ gdclass.Extension[T, Instance] }

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

func (*Extension[T]) AsObject

func (self *Extension[T]) AsObject() [1]gd.Object

type ID

type ID Object.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.

func (ID) Instance

func (id ID) Instance() (Instance, bool)

type Instance

type Instance [1]gdclass.Geometry3D

Instance of the class with convieniently typed arguments and results.

func (Instance) AsObject

func (self Instance) AsObject() [1]gd.Object

func (Instance) ID

func (self Instance) ID() ID

func (*Instance) SetObject

func (self *Instance) SetObject(obj [1]gd.Object) bool

func (Instance) Virtual

func (self Instance) Virtual(name string) reflect.Value

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL