几何图形

继承: Object

类别: 核心

简要说明

方法

Array

build_box_planes ( Vector3 extents )

Array

build_capsule_planes ( float radius, float height, int sides, int lats, Vector3.Axis axis=2 )

Array

build_cylinder_planes ( float radius, float height, int sides, Vector3.Axis axis=2 )

PoolVector3Array

clip_polygon ( PoolVector3Array points, Plane plane )

Array

clip_polygons_2d ( PoolVector2Array polygon_a, PoolVector2Array polygon_b )

Array

clip_polyline_with_polygon_2d ( PoolVector2Array polyline, PoolVector2Array polygon )

PoolVector2Array

convex_hull_2d ( PoolVector2Array points )

Array

exclude_polygons_2d ( PoolVector2Array polygon_a, PoolVector2Array polygon_b )

Vector3

get_closest_point_to_segment ( Vector3 point, Vector3 s1, Vector3 s2 )

Vector2

get_closest_point_to_segment_2d ( Vector2 point, Vector2 s1, Vector2 s2 )

Vector3

get_closest_point_to_segment_uncapped ( Vector3 point, Vector3 s1, Vector3 s2 )

Vector2

get_closest_point_to_segment_uncapped_2d ( Vector2 point, Vector2 s1, Vector2 s2 )

PoolVector3Array

get_closest_points_between_segments ( Vector3 p1, Vector3 p2, Vector3 q1, Vector3 q2 )

PoolVector2Array

get_closest_points_between_segments_2d ( Vector2 p1, Vector2 q1, Vector2 p2, Vector2 q2 )

int

get_uv84_normal_bit ( Vector3 normal )

Array

intersect_polygons_2d ( PoolVector2Array polygon_a, PoolVector2Array polygon_b )

Array

intersect_polyline_with_polygon_2d ( PoolVector2Array polyline, PoolVector2Array polygon )

bool

is_point_in_polygon ( Vector2 point, PoolVector2Array polygon )

bool

is_polygon_clockwise ( PoolVector2Array polygon )

Variant

line_intersects_line_2d ( Vector2 from_a, Vector2 dir_a, Vector2 from_b, Vector2 dir_b )

Dictionary

make_atlas ( PoolVector2Array sizes )

Array

merge_polygons_2d ( PoolVector2Array polygon_a, PoolVector2Array polygon_b )

Array

offset_polygon_2d ( PoolVector2Array polygon, float delta, PolyJoinType join_type=0 )

Array

offset_polyline_2d ( PoolVector2Array polyline, float delta, PolyJoinType join_type=0, PolyEndType end_type=3 )

bool

point_is_inside_triangle ( Vector2 point, Vector2 a, Vector2 b, Vector2 c ) const

Variant

ray_intersects_triangle ( Vector3 from, Vector3 dir, Vector3 a, Vector3 b, Vector3 c )

float

segment_intersects_circle ( Vector2 segment_from, Vector2 segment_to, Vector2 circle_position, float circle_radius )

PoolVector3Array

segment_intersects_convex ( Vector3 from, Vector3 to, Array planes )

PoolVector3Array

segment_intersects_cylinder ( Vector3 from, Vector3 to, float height, float radius )

Variant

segment_intersects_segment_2d ( Vector2 from_a, Vector2 to_a, Vector2 from_b, Vector2 to_b )

PoolVector3Array

segment_intersects_sphere ( Vector3 from, Vector3 to, Vector3 sphere_position, float sphere_radius )

Variant

segment_intersects_triangle ( Vector3 from, Vector3 to, Vector3 a, Vector3 b, Vector3 c )

PoolVector2Array

transform_points_2d ( PoolVector2Array points, Transform2D transform )

PoolIntArray

triangulate_delaunay_2d ( PoolVector2Array points )

PoolIntArray

triangulate_polygon ( PoolVector2Array polygon )

枚举

枚举 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)。

  • Array build_cylinder_planes ( float radius, float height, int sides, Vector3.Axis axis=2 )

返回的数组 Plane 紧密围绕一个以半径为原点的多面圆柱体。 radius 和高度 height . 参数 sides 定义将为圆柱体的圆形部分生成多少个平面。参数 axis 描述圆柱定向的轴(0代表X,1代表Y,2代表Z)。

剪辑由中的点定义的多边形 points 反对 plane 并返回裁剪多边形的点。

剪辑 polygon_a 反对 polygon_b 并返回一个裁剪多边形数组。这将执行 OPERATION_DIFFERENCE 在多边形之间。返回空数组,如果 polygon_b 完全重叠 polygon_a .

如果 polygon_bpolygon_a ,返回可以通过调用来区分的外部多边形(边界)和内部多边形(孔) is_polygon_clockwise .

剪辑 polyline 反对 polygon 并返回剪裁的多段线数组。这将执行 OPERATION_DIFFERENCE 在折线和多边形之间。这个操作可以被认为是切割一条闭合形状的线。

给定一个数组 Vector2 s,以逆时针顺序返回凸面外壳作为点列表。最后一点与第一点相同。

相互排除由交叉点定义的公共区域 polygon_apolygon_b (见 intersect_polygons_2d )并返回排除的多边形数组。这将执行 OPERATION_XOR 在多边形之间。换句话说,返回多边形之间除了公共区域以外的所有区域。

该操作可能导致生成一个外多边形(边界)和内多边形(孔),可以通过调用 is_polygon_clockwise .

返回三维段上的三维点 (s1s2 )最接近的 point . 返回的点将始终位于指定的段内。

返回二维段上的二维点 (s1s2 )最接近的 point . 返回的点将始终位于指定的段内。

返回由定义的三维线上的三维点 (s1s2 )最接近的 point . 返回点可以在段内 (s1s2 )或在其外部,即从段延伸的线上的某个位置。

返回由定义的二维直线上的二维点 (s1s2 )最接近的 point . 返回点可以在段内 (s1s2 )或在其外部,即从段延伸的线上的某个位置。

考虑到两个3D片段 (p1p2 ) (q1q2 )在两个最接近的段上查找这两个点。返回 PoolVector3Array 包含这一点的 (p1p2 )以及 (q1q2

给定两个二维段 (p1p2 ) (q1q2 )在两个最接近的段上查找这两个点。返回 PoolVector2Array 包含这一点的 (p1p2 )以及 (q1q2

相交 polygon_a 具有 polygon_b 并返回相交多边形的数组。这将执行 OPERATION_INTERSECTION 在多边形之间。换句话说,返回多边形共享的公共区域。如果没有交叉点,则返回空数组。

该操作可能导致生成一个外多边形(边界)和内多边形(孔),可以通过调用 is_polygon_clockwise .

相交 polyline 具有 polygon 并返回相交多段线的数组。这将执行 OPERATION_INTERSECTION 在折线和多边形之间。这个操作可以被认为是用一个闭合的形状切掉一条直线。

返回 true 如果 point 在里面 polygon 或者它的位置是否准确 on 多边形的边界,否则返回 false .

返回 true 如果 polygon 的顶点按顺时针顺序排列,否则返回 false .

检查这两行 (from_adir_a ) (from_bdir_b )相交。如果是,则将交点返回为 Vector2 . 如果没有发生交叉,则返回空的 Variant .

注: 这些线是使用方向向量而不是端点指定的。

给定一个数组 Vector2 代表瓷砖,建立地图册。返回的字典有两个键: points 是向量 Vector2 指定每个图块的位置, size 包含整个图集的总体大小 Vector2 .

合并(合并) polygon_apolygon_b 并返回合并多边形的数组。这将执行 OPERATION_UNION 在多边形之间。

该操作可能导致生成一个外多边形(边界)和内多边形(孔),可以通过调用 is_polygon_clockwise .

充气或放气 polygon 通过 delta 单位(像素)。如果 delta 是正的,使多边形向外扩展。如果 delta 为负,向内收缩多边形。返回多边形数组,因为充气/放气可能导致多个离散多边形。返回空数组,如果 delta 为负,其绝对值大约超过多边形的最小边界矩形尺寸。

每一个多边形的顶点将被四舍五入,由 join_typePolyJoinType .

该操作可能导致生成一个外多边形(边界)和内多边形(孔),可以通过调用 is_polygon_clockwise .

充气或放气 polyline 通过 delta 单位(像素),生成多边形。如果 delta 为正,使多段线向外扩展。返回多边形数组,因为充气/放气可能导致多个离散多边形。如果 delta 为负,返回空数组。

每一个多边形的顶点将被四舍五入,由 join_typePolyJoinType .

每一个多边形的端点都将被四舍五入,具体取决于 end_typePolyEndType .

该操作可能导致生成一个外多边形(边界)和内多边形(孔),可以通过调用 is_polygon_clockwise .

返回if point 在指定的三角形内 abc .

测试3D射线是否从 from 方向 dir 与指定的三角形相交 abc . 如果是,则将交点返回为 Vector3 . 如果没有交叉口,一个空的 Variant 返回。

给定二维段 (segment_fromsegment_to ,返回段上的位置(以0到1之间的数字表示),段在该位置与位于该位置的圆碰撞。 circle_position 并且有半径 circle_radius . 如果段与圆不相交,则返回-1(如果延伸段的线与圆相交,但段不相交,则也是如此)。

给出了一个凸壳的定义 Plane 数组中的s planes ,测试段 (fromto )与船体相交。如果找到交叉点,则返回 PoolVector3Array 包含交点和船体法向的点。如果找不到intersecion,则返回的数组为空。

检查段是否 (fromto )使圆柱体与高度相交 height 以原点为中心,半径为 radius . 如果没有,返回空 PoolVector3Array . 如果发生交叉,则返回的数组包含交叉点和交叉点处圆柱体的法向。

检查两段 (from_ato_a ) (from_bto_b )相交。如果是,则将交点返回为 Vector2 . 如果没有发生交叉,则返回空的 Variant .

检查段是否 (fromto )与位于 sphere_position 并且有半径 sphere_radius . 如果没有,返回空 PoolVector3Array . 如果是,返回 PoolVector3Array 包含交点和交点处球体的法向。

测试段是否 (fromto )与三角形相交 abc . 如果是,则将交点返回为 Vector3 . 如果没有交叉口,一个空的 Variant 返回。

将点数组转换为 transform 并返回结果。

可以与以类似CSG的方式执行多边形布尔运算结合使用,请参见 merge_polygons_2dclip_polygons_2dintersect_polygons_2dexclude_polygons_2d .

三角形化由离散集指定的区域 points 使任何点都不在生成的三角形的外圆内。返回 PoolIntArray 其中每个三角形由三个连续的点索引组成 points (即返回的数组将 n * 3 元素,具有 n 找到的三角形数)。如果三角测量失败,则为空 PoolIntArray 返回。

三角形化由中的点指定的多边形 polygon . 返回A PoolIntArray 其中每个三角形由三个连续的点索引组成 polygon (即返回的数组将 n * 3 元素,具有 n 找到的三角形数)。如果三角测量失败,则为空 PoolIntArray 返回。