summaryrefslogtreecommitdiff
path: root/doc/classes/Geometry3D.xml
blob: d37b0b7b814ff275593045d04550aa23c69a7531 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?xml version="1.0" encoding="UTF-8" ?>
<class name="Geometry3D" inherits="Object" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		Helper node to calculate generic geometry operations in 3D space.
	</brief_description>
	<description>
		Geometry3D provides users with a set of helper functions to create geometric shapes, compute intersections between shapes, and process various other geometric operations.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="build_box_planes">
			<return type="Plane[]" />
			<param index="0" name="extents" type="Vector3" />
			<description>
				Returns an array with 6 [Plane]s that describe the sides of a box centered at the origin. The box size is defined by [param extents], which represents one (positive) corner of the box (i.e. half its actual size).
			</description>
		</method>
		<method name="build_capsule_planes">
			<return type="Plane[]" />
			<param index="0" name="radius" type="float" />
			<param index="1" name="height" type="float" />
			<param index="2" name="sides" type="int" />
			<param index="3" name="lats" type="int" />
			<param index="4" name="axis" type="int" enum="Vector3.Axis" default="2" />
			<description>
				Returns an array of [Plane]s closely bounding a faceted capsule centered at the origin with radius [param radius] and height [param height]. The parameter [param sides] defines how many planes will be generated for the side part of the capsule, whereas [param lats] gives the number of latitudinal steps at the bottom and top of the capsule. The parameter [param axis] describes the axis along which the capsule is oriented (0 for X, 1 for Y, 2 for Z).
			</description>
		</method>
		<method name="build_cylinder_planes">
			<return type="Plane[]" />
			<param index="0" name="radius" type="float" />
			<param index="1" name="height" type="float" />
			<param index="2" name="sides" type="int" />
			<param index="3" name="axis" type="int" enum="Vector3.Axis" default="2" />
			<description>
				Returns an array of [Plane]s closely bounding a faceted cylinder centered at the origin with radius [param radius] and height [param height]. The parameter [param sides] defines how many planes will be generated for the round part of the cylinder. The parameter [param axis] describes the axis along which the cylinder is oriented (0 for X, 1 for Y, 2 for Z).
			</description>
		</method>
		<method name="clip_polygon">
			<return type="PackedVector3Array" />
			<param index="0" name="points" type="PackedVector3Array" />
			<param index="1" name="plane" type="Plane" />
			<description>
				Clips the polygon defined by the points in [param points] against the [param plane] and returns the points of the clipped polygon.
			</description>
		</method>
		<method name="get_closest_point_to_segment">
			<return type="Vector3" />
			<param index="0" name="point" type="Vector3" />
			<param index="1" name="s1" type="Vector3" />
			<param index="2" name="s2" type="Vector3" />
			<description>
				Returns the 3D point on the 3D segment ([param s1], [param s2]) that is closest to [param point]. The returned point will always be inside the specified segment.
			</description>
		</method>
		<method name="get_closest_point_to_segment_uncapped">
			<return type="Vector3" />
			<param index="0" name="point" type="Vector3" />
			<param index="1" name="s1" type="Vector3" />
			<param index="2" name="s2" type="Vector3" />
			<description>
				Returns the 3D point on the 3D line defined by ([param s1], [param s2]) that is closest to [param point]. The returned point can be inside the segment ([param s1], [param s2]) or outside of it, i.e. somewhere on the line extending from the segment.
			</description>
		</method>
		<method name="get_closest_points_between_segments">
			<return type="PackedVector3Array" />
			<param index="0" name="p1" type="Vector3" />
			<param index="1" name="p2" type="Vector3" />
			<param index="2" name="q1" type="Vector3" />
			<param index="3" name="q2" type="Vector3" />
			<description>
				Given the two 3D segments ([param p1], [param p2]) and ([param q1], [param q2]), finds those two points on the two segments that are closest to each other. Returns a [PackedVector3Array] that contains this point on ([param p1], [param p2]) as well the accompanying point on ([param q1], [param q2]).
			</description>
		</method>
		<method name="ray_intersects_triangle">
			<return type="Variant" />
			<param index="0" name="from" type="Vector3" />
			<param index="1" name="dir" type="Vector3" />
			<param index="2" name="a" type="Vector3" />
			<param index="3" name="b" type="Vector3" />
			<param index="4" name="c" type="Vector3" />
			<description>
				Tests if the 3D ray starting at [param from] with the direction of [param dir] intersects the triangle specified by [param a], [param b] and [param c]. If yes, returns the point of intersection as [Vector3]. If no intersection takes place, returns [code]null[/code].
			</description>
		</method>
		<method name="segment_intersects_convex">
			<return type="PackedVector3Array" />
			<param index="0" name="from" type="Vector3" />
			<param index="1" name="to" type="Vector3" />
			<param index="2" name="planes" type="Array" />
			<description>
				Given a convex hull defined though the [Plane]s in the array [param planes], tests if the segment ([param from], [param to]) intersects with that hull. If an intersection is found, returns a [PackedVector3Array] containing the point the intersection and the hull's normal. Otherwise, returns an empty array.
			</description>
		</method>
		<method name="segment_intersects_cylinder">
			<return type="PackedVector3Array" />
			<param index="0" name="from" type="Vector3" />
			<param index="1" name="to" type="Vector3" />
			<param index="2" name="height" type="float" />
			<param index="3" name="radius" type="float" />
			<description>
				Checks if the segment ([param from], [param to]) intersects the cylinder with height [param height] that is centered at the origin and has radius [param radius]. If no, returns an empty [PackedVector3Array]. If an intersection takes place, the returned array contains the point of intersection and the cylinder's normal at the point of intersection.
			</description>
		</method>
		<method name="segment_intersects_sphere">
			<return type="PackedVector3Array" />
			<param index="0" name="from" type="Vector3" />
			<param index="1" name="to" type="Vector3" />
			<param index="2" name="sphere_position" type="Vector3" />
			<param index="3" name="sphere_radius" type="float" />
			<description>
				Checks if the segment ([param from], [param to]) intersects the sphere that is located at [param sphere_position] and has radius [param sphere_radius]. If no, returns an empty [PackedVector3Array]. If yes, returns a [PackedVector3Array] containing the point of intersection and the sphere's normal at the point of intersection.
			</description>
		</method>
		<method name="segment_intersects_triangle">
			<return type="Variant" />
			<param index="0" name="from" type="Vector3" />
			<param index="1" name="to" type="Vector3" />
			<param index="2" name="a" type="Vector3" />
			<param index="3" name="b" type="Vector3" />
			<param index="4" name="c" type="Vector3" />
			<description>
				Tests if the segment ([param from], [param to]) intersects the triangle [param a], [param b], [param c]. If yes, returns the point of intersection as [Vector3]. If no intersection takes place, returns [code]null[/code].
			</description>
		</method>
	</methods>
</class>