几何图形¶
继承: Object
类别: 核心
简要说明¶
方法¶
枚举¶
枚举 PolyBooleanOperation :
OPERATION_UNION = 0 ---创建填充主题或剪辑多边形(或两者)的区域。
OPERATION_DIFFERENCE = 1 ---创建主题多边形被填充的区域,剪辑多边形被填充的区域除外。
OPERATION_INTERSECTION = 2 ---创建同时填充主题多边形和剪辑多边形的区域。
OPERATION_XOR = 3 ---创建填充主题或剪辑多边形但不填充两者的区域。
枚举 PolyJoinType :
JOIN_SQUARE = 0 ---所有凸边连接处均采用均方正
1 * delta
.JOIN_ROUND = 1 ---虽然展平的路径永远无法完美地跟踪一条弧,但它们被一系列的弧弦所近似。
JOIN_MITER = 2 ---斜接有一个必要的限制,因为以非常锐角连接的偏移边将产生过长和狭窄的“尖峰”。对于任何给定的边连接,当斜接偏移将超过最大距离时,应用“方形”连接。
枚举 PolyEndType :
END_POLYGON = 0 ---使用 PolyJoinType 值和作为多边形填充的路径。
END_JOINED = 1 ---使用 PolyJoinType 值和作为多段线填充的路径。
END_BUTT = 2 ---端点是平方的,没有扩展。
END_SQUARE = 3 ---端点的平方和扩展为
delta
单位。END_ROUND = 4 ---端点四舍五入并延长
delta
单位。
方法说明¶
返回带有6的数组 Plane 它描述了一个以原点为中心的盒子的侧面。盒子大小由 extents
,表示框的一个(正)角(即实际大小的一半)。
返回的数组 Plane 紧密围绕一个以半径为原点的多面胶囊。 radius
和高度 height
. 参数 sides
定义将为胶囊的侧部生成多少个平面,而 lats
给出胶囊底部和顶部的纬度阶数。参数 axis
描述胶囊定向的轴(0代表X,1代表Y,2代表Z)。
返回的数组 Plane 紧密围绕一个以半径为原点的多面圆柱体。 radius
和高度 height
. 参数 sides
定义将为圆柱体的圆形部分生成多少个平面。参数 axis
描述圆柱定向的轴(0代表X,1代表Y,2代表Z)。
PoolVector3Array clip_polygon ( PoolVector3Array points, Plane plane )
剪辑由中的点定义的多边形 points
反对 plane
并返回裁剪多边形的点。
Array clip_polygons_2d ( PoolVector2Array polygon_a, PoolVector2Array polygon_b )
剪辑 polygon_a
反对 polygon_b
并返回一个裁剪多边形数组。这将执行 OPERATION_DIFFERENCE 在多边形之间。返回空数组,如果 polygon_b
完全重叠 polygon_a
.
如果 polygon_b
由 polygon_a
,返回可以通过调用来区分的外部多边形(边界)和内部多边形(孔) is_polygon_clockwise .
Array clip_polyline_with_polygon_2d ( PoolVector2Array polyline, PoolVector2Array polygon )
剪辑 polyline
反对 polygon
并返回剪裁的多段线数组。这将执行 OPERATION_DIFFERENCE 在折线和多边形之间。这个操作可以被认为是切割一条闭合形状的线。
PoolVector2Array convex_hull_2d ( PoolVector2Array points )
给定一个数组 Vector2 s,以逆时针顺序返回凸面外壳作为点列表。最后一点与第一点相同。
Array exclude_polygons_2d ( PoolVector2Array polygon_a, PoolVector2Array polygon_b )
相互排除由交叉点定义的公共区域 polygon_a
和 polygon_b
(见 intersect_polygons_2d )并返回排除的多边形数组。这将执行 OPERATION_XOR 在多边形之间。换句话说,返回多边形之间除了公共区域以外的所有区域。
该操作可能导致生成一个外多边形(边界)和内多边形(孔),可以通过调用 is_polygon_clockwise .
返回三维段上的三维点 (s1
, s2
)最接近的 point
. 返回的点将始终位于指定的段内。
返回二维段上的二维点 (s1
, s2
)最接近的 point
. 返回的点将始终位于指定的段内。
返回由定义的三维线上的三维点 (s1
, s2
)最接近的 point
. 返回点可以在段内 (s1
, s2
)或在其外部,即从段延伸的线上的某个位置。
返回由定义的二维直线上的二维点 (s1
, s2
)最接近的 point
. 返回点可以在段内 (s1
, s2
)或在其外部,即从段延伸的线上的某个位置。
PoolVector3Array get_closest_points_between_segments ( Vector3 p1, Vector3 p2, Vector3 q1, Vector3 q2 )
考虑到两个3D片段 (p1
, p2
) (q1
, q2
)在两个最接近的段上查找这两个点。返回 PoolVector3Array 包含这一点的 (p1
, p2
)以及 (q1
, q2
)
PoolVector2Array get_closest_points_between_segments_2d ( Vector2 p1, Vector2 q1, Vector2 p2, Vector2 q2 )
给定两个二维段 (p1
, p2
) (q1
, q2
)在两个最接近的段上查找这两个点。返回 PoolVector2Array 包含这一点的 (p1
, p2
)以及 (q1
, q2
)
Array intersect_polygons_2d ( PoolVector2Array polygon_a, PoolVector2Array polygon_b )
相交 polygon_a
具有 polygon_b
并返回相交多边形的数组。这将执行 OPERATION_INTERSECTION 在多边形之间。换句话说,返回多边形共享的公共区域。如果没有交叉点,则返回空数组。
该操作可能导致生成一个外多边形(边界)和内多边形(孔),可以通过调用 is_polygon_clockwise .
Array intersect_polyline_with_polygon_2d ( PoolVector2Array polyline, PoolVector2Array polygon )
相交 polyline
具有 polygon
并返回相交多段线的数组。这将执行 OPERATION_INTERSECTION 在折线和多边形之间。这个操作可以被认为是用一个闭合的形状切掉一条直线。
bool is_point_in_polygon ( Vector2 point, PoolVector2Array polygon )
返回 true
如果 point
在里面 polygon
或者它的位置是否准确 on 多边形的边界,否则返回 false
.
bool is_polygon_clockwise ( PoolVector2Array polygon )
返回 true
如果 polygon
的顶点按顺时针顺序排列,否则返回 false
.
检查这两行 (from_a
, dir_a
) (from_b
, dir_b
)相交。如果是,则将交点返回为 Vector2 . 如果没有发生交叉,则返回空的 Variant .
注: 这些线是使用方向向量而不是端点指定的。
Dictionary make_atlas ( PoolVector2Array sizes )
给定一个数组 Vector2 代表瓷砖,建立地图册。返回的字典有两个键: points
是向量 Vector2 指定每个图块的位置, size
包含整个图集的总体大小 Vector2 .
Array merge_polygons_2d ( PoolVector2Array polygon_a, PoolVector2Array polygon_b )
合并(合并) polygon_a
和 polygon_b
并返回合并多边形的数组。这将执行 OPERATION_UNION 在多边形之间。
该操作可能导致生成一个外多边形(边界)和内多边形(孔),可以通过调用 is_polygon_clockwise .
Array offset_polygon_2d ( PoolVector2Array polygon, float delta, PolyJoinType join_type=0 )
充气或放气 polygon
通过 delta
单位(像素)。如果 delta
是正的,使多边形向外扩展。如果 delta
为负,向内收缩多边形。返回多边形数组,因为充气/放气可能导致多个离散多边形。返回空数组,如果 delta
为负,其绝对值大约超过多边形的最小边界矩形尺寸。
每一个多边形的顶点将被四舍五入,由 join_type
见 PolyJoinType .
该操作可能导致生成一个外多边形(边界)和内多边形(孔),可以通过调用 is_polygon_clockwise .
Array offset_polyline_2d ( PoolVector2Array polyline, float delta, PolyJoinType join_type=0, PolyEndType end_type=3 )
充气或放气 polyline
通过 delta
单位(像素),生成多边形。如果 delta
为正,使多段线向外扩展。返回多边形数组,因为充气/放气可能导致多个离散多边形。如果 delta
为负,返回空数组。
每一个多边形的顶点将被四舍五入,由 join_type
见 PolyJoinType .
每一个多边形的端点都将被四舍五入,具体取决于 end_type
见 PolyEndType .
该操作可能导致生成一个外多边形(边界)和内多边形(孔),可以通过调用 is_polygon_clockwise .
返回if point
在指定的三角形内 a
, b
和 c
.
测试3D射线是否从 from
方向 dir
与指定的三角形相交 a
, b
和 c
. 如果是,则将交点返回为 Vector3 . 如果没有交叉口,一个空的 Variant 返回。
float segment_intersects_circle ( Vector2 segment_from, Vector2 segment_to, Vector2 circle_position, float circle_radius )
给定二维段 (segment_from
, segment_to
,返回段上的位置(以0到1之间的数字表示),段在该位置与位于该位置的圆碰撞。 circle_position
并且有半径 circle_radius
. 如果段与圆不相交,则返回-1(如果延伸段的线与圆相交,但段不相交,则也是如此)。
PoolVector3Array segment_intersects_convex ( Vector3 from, Vector3 to, Array planes )
给出了一个凸壳的定义 Plane 数组中的s planes
,测试段 (from
, to
)与船体相交。如果找到交叉点,则返回 PoolVector3Array 包含交点和船体法向的点。如果找不到intersecion,则返回的数组为空。
PoolVector3Array segment_intersects_cylinder ( Vector3 from, Vector3 to, float height, float radius )
检查段是否 (from
, to
)使圆柱体与高度相交 height
以原点为中心,半径为 radius
. 如果没有,返回空 PoolVector3Array . 如果发生交叉,则返回的数组包含交叉点和交叉点处圆柱体的法向。
Variant segment_intersects_segment_2d ( Vector2 from_a, Vector2 to_a, Vector2 from_b, Vector2 to_b )
检查两段 (from_a
, to_a
) (from_b
, to_b
)相交。如果是,则将交点返回为 Vector2 . 如果没有发生交叉,则返回空的 Variant .
PoolVector3Array segment_intersects_sphere ( Vector3 from, Vector3 to, Vector3 sphere_position, float sphere_radius )
检查段是否 (from
, to
)与位于 sphere_position
并且有半径 sphere_radius
. 如果没有,返回空 PoolVector3Array . 如果是,返回 PoolVector3Array 包含交点和交点处球体的法向。
测试段是否 (from
, to
)与三角形相交 a
, b
, c
. 如果是,则将交点返回为 Vector3 . 如果没有交叉口,一个空的 Variant 返回。
PoolVector2Array transform_points_2d ( PoolVector2Array points, Transform2D transform )
将点数组转换为 transform
并返回结果。
可以与以类似CSG的方式执行多边形布尔运算结合使用,请参见 merge_polygons_2d , clip_polygons_2d , intersect_polygons_2d , exclude_polygons_2d .
PoolIntArray triangulate_delaunay_2d ( PoolVector2Array points )
三角形化由离散集指定的区域 points
使任何点都不在生成的三角形的外圆内。返回 PoolIntArray 其中每个三角形由三个连续的点索引组成 points
(即返回的数组将 n * 3
元素,具有 n
找到的三角形数)。如果三角测量失败,则为空 PoolIntArray 返回。
PoolIntArray triangulate_polygon ( PoolVector2Array polygon )
三角形化由中的点指定的多边形 polygon
. 返回A PoolIntArray 其中每个三角形由三个连续的点索引组成 polygon
(即返回的数组将 n * 3
元素,具有 n
找到的三角形数)。如果三角测量失败,则为空 PoolIntArray 返回。