Geometry Utilities (mathutils.geometry)¶
The Blender geometry module
-
mathutils.geometry.
area_tri
(v1, v2, v3)¶ Returns the area size of the 2D or 3D triangle defined.
Parameters: - v1 (
mathutils.Vector
) – Point1 - v2 (
mathutils.Vector
) – Point2 - v3 (
mathutils.Vector
) – Point3
Return type: - v1 (
-
mathutils.geometry.
barycentric_transform
(point, tri_a1, tri_a2, tri_a3, tri_b1, tri_b2, tri_b3)¶ Return a transformed point, the transformation is defined by 2 triangles.
Parameters: - point (
mathutils.Vector
) – The point to transform. - tri_a1 (
mathutils.Vector
) – source triangle vertex. - tri_a2 (
mathutils.Vector
) – source triangle vertex. - tri_a3 (
mathutils.Vector
) – source triangle vertex. - tri_a1 – target triangle vertex.
- tri_a2 – target triangle vertex.
- tri_a3 – target triangle vertex.
Returns: The transformed point
Return type: - point (
-
mathutils.geometry.
box_fit_2d
(points)¶ Returns an angle that best fits the points to an axis aligned rectangle
Parameters: points (list) – list of 2d points. Returns: angle Return type: float
-
mathutils.geometry.
box_pack_2d
(boxes)¶ Returns the normal of the 3D tri or quad.
Parameters: boxes (list) – list of boxes, each box is a list where the first 4 items are [x, y, width, height, ...] other items are ignored. Returns: the width and height of the packed bounding box Return type: tuple, pair of floats
-
mathutils.geometry.
convex_hull_2d
(points)¶ Returns a list of indices into the list given
Parameters: points (list) – list of 2d points. Returns: a list of indices Return type: list of ints
-
mathutils.geometry.
distance_point_to_plane
(pt, plane_co, plane_no)¶ Returns the signed distance between a point and a plane (negative when below the normal).
Parameters: - pt (
mathutils.Vector
) – Point - plane_co (
mathutils.Vector
) – A point on the plane - plane_no (
mathutils.Vector
) – The direction the plane is facing
Return type: - pt (
-
mathutils.geometry.
interpolate_bezier
(knot1, handle1, handle2, knot2, resolution)¶ Interpolate a bezier spline segment.
Parameters: - knot1 (
mathutils.Vector
) – First bezier spline point. - handle1 (
mathutils.Vector
) – First bezier spline handle. - handle2 (
mathutils.Vector
) – Second bezier spline handle. - knot2 (
mathutils.Vector
) – Second bezier spline point. - resolution (int) – Number of points to return.
Returns: The interpolated points
Return type: list of
mathutils.Vector
‘s- knot1 (
-
mathutils.geometry.
intersect_line_line
(v1, v2, v3, v4)¶ Returns a tuple with the points on each line respectively closest to the other.
Parameters: - v1 (
mathutils.Vector
) – First point of the first line - v2 (
mathutils.Vector
) – Second point of the first line - v3 (
mathutils.Vector
) – First point of the second line - v4 (
mathutils.Vector
) – Second point of the second line
Return type: tuple of
mathutils.Vector
‘s- v1 (
-
mathutils.geometry.
intersect_line_line_2d
(lineA_p1, lineA_p2, lineB_p1, lineB_p2)¶ Takes 2 segments (defined by 4 vectors) and returns a vector for their point of intersection or None.
Warning
Despite its name, this function works on segments, and not on lines.
Parameters: - lineA_p1 (
mathutils.Vector
) – First point of the first line - lineA_p2 (
mathutils.Vector
) – Second point of the first line - lineB_p1 (
mathutils.Vector
) – First point of the second line - lineB_p2 (
mathutils.Vector
) – Second point of the second line
Returns: The point of intersection or None when not found
Return type: mathutils.Vector
or None- lineA_p1 (
-
mathutils.geometry.
intersect_line_plane
(line_a, line_b, plane_co, plane_no, no_flip=False)¶ Calculate the intersection between a line (as 2 vectors) and a plane. Returns a vector for the intersection or None.
Parameters: - line_a (
mathutils.Vector
) – First point of the first line - line_b (
mathutils.Vector
) – Second point of the first line - plane_co (
mathutils.Vector
) – A point on the plane - plane_no (
mathutils.Vector
) – The direction the plane is facing
Returns: The point of intersection or None when not found
Return type: mathutils.Vector
or None- line_a (
-
mathutils.geometry.
intersect_line_sphere
(line_a, line_b, sphere_co, sphere_radius, clip=True)¶ Takes a line (as 2 points) and a sphere (as a point and a radius) and returns the intersection
Parameters: - line_a (
mathutils.Vector
) – First point of the line - line_b (
mathutils.Vector
) – Second point of the line - sphere_co (
mathutils.Vector
) – The center of the sphere - sphere_radius (sphere_radius) – Radius of the sphere
Returns: The intersection points as a pair of vectors or None when there is no intersection
Return type: A tuple pair containing
mathutils.Vector
or None- line_a (
-
mathutils.geometry.
intersect_line_sphere_2d
(line_a, line_b, sphere_co, sphere_radius, clip=True)¶ Takes a line (as 2 points) and a sphere (as a point and a radius) and returns the intersection
Parameters: - line_a (
mathutils.Vector
) – First point of the line - line_b (
mathutils.Vector
) – Second point of the line - sphere_co (
mathutils.Vector
) – The center of the sphere - sphere_radius (sphere_radius) – Radius of the sphere
Returns: The intersection points as a pair of vectors or None when there is no intersection
Return type: A tuple pair containing
mathutils.Vector
or None- line_a (
-
mathutils.geometry.
intersect_plane_plane
(plane_a_co, plane_a_no, plane_b_co, plane_b_no)¶ Return the intersection between two planes
Parameters: - plane_a_co (
mathutils.Vector
) – Point on the first plane - plane_a_no (
mathutils.Vector
) – Normal of the first plane - plane_b_co (
mathutils.Vector
) – Point on the second plane - plane_b_no (
mathutils.Vector
) – Normal of the second plane
Returns: The line of the intersection represented as a point and a vector
Return type: tuple pair of
mathutils.Vector
or None if the intersection can’t be calculated- plane_a_co (
-
mathutils.geometry.
intersect_point_line
(pt, line_p1, line_p2)¶ Takes a point and a line and returns a tuple with the closest point on the line and its distance from the first point of the line as a percentage of the length of the line.
Parameters: - pt (
mathutils.Vector
) – Point - line_p1 (
mathutils.Vector
) – First point of the line - line_p1 – Second point of the line
Return type: (
mathutils.Vector
, float)- pt (
-
mathutils.geometry.
intersect_point_quad_2d
(pt, quad_p1, quad_p2, quad_p3, quad_p4)¶ Takes 5 vectors (using only the x and y coordinates): one is the point and the next 4 define the quad, only the x and y are used from the vectors. Returns 1 if the point is within the quad, otherwise 0. Works only with convex quads without singular edges.
Parameters: - pt (
mathutils.Vector
) – Point - quad_p1 (
mathutils.Vector
) – First point of the quad - quad_p2 (
mathutils.Vector
) – Second point of the quad - quad_p3 (
mathutils.Vector
) – Third point of the quad - quad_p4 (
mathutils.Vector
) – Forth point of the quad
Return type: - pt (
-
mathutils.geometry.
intersect_point_tri
(pt, tri_p1, tri_p2, tri_p3)¶ Takes 4 vectors: one is the point and the next 3 define the triangle.
Parameters: - pt (
mathutils.Vector
) – Point - tri_p1 (
mathutils.Vector
) – First point of the triangle - tri_p2 (
mathutils.Vector
) – Second point of the triangle - tri_p3 (
mathutils.Vector
) – Third point of the triangle
Returns: Point on the triangles plane or None if its outside the triangle
Return type: mathutils.Vector
or None- pt (
-
mathutils.geometry.
intersect_point_tri_2d
(pt, tri_p1, tri_p2, tri_p3)¶ Takes 4 vectors (using only the x and y coordinates): one is the point and the next 3 define the triangle. Returns 1 if the point is within the triangle, otherwise 0.
Parameters: - pt (
mathutils.Vector
) – Point - tri_p1 (
mathutils.Vector
) – First point of the triangle - tri_p2 (
mathutils.Vector
) – Second point of the triangle - tri_p3 (
mathutils.Vector
) – Third point of the triangle
Return type: - pt (
-
mathutils.geometry.
intersect_ray_tri
(v1, v2, v3, ray, orig, clip=True)¶ Returns the intersection between a ray and a triangle, if possible, returns None otherwise.
Parameters: - v1 (
mathutils.Vector
) – Point1 - v2 (
mathutils.Vector
) – Point2 - v3 (
mathutils.Vector
) – Point3 - ray (
mathutils.Vector
) – Direction of the projection - orig (
mathutils.Vector
) – Origin - clip (boolean) – When False, don’t restrict the intersection to the area of the triangle, use the infinite plane defined by the triangle.
Returns: The point of intersection or None if no intersection is found
Return type: mathutils.Vector
or None- v1 (
-
mathutils.geometry.
intersect_sphere_sphere_2d
(p_a, radius_a, p_b, radius_b)¶ Returns 2 points on between intersecting circles.
Parameters: - p_a (
mathutils.Vector
) – Center of the first circle - radius_a (float) – Radius of the first circle
- p_b (
mathutils.Vector
) – Center of the second circle - radius_b (float) – Radius of the second circle
Return type: tuple of
mathutils.Vector
‘s or None when there is no intersection- p_a (
-
mathutils.geometry.
normal
(vectors)¶ Returns the normal of a 3D polygon.
Parameters: vectors (sequence of 3 or more 3d vector) – Vectors to calculate normals with Return type: mathutils.Vector
-
mathutils.geometry.
points_in_planes
(planes)¶ Returns a list of points inside all planes given and a list of index values for the planes used.
Parameters: planes (list of mathutils.Vector
) – List of planes (4D vectors).Returns: two lists, once containing the vertices inside the planes, another containing the plane indices used Return type: pair of lists
-
mathutils.geometry.
tessellate_polygon
(veclist_list)¶ Takes a list of polylines (each point a vector) and returns the point indices for a polyline filled with triangles.
Parameters: veclist_list – list of polylines Return type: list
-
mathutils.geometry.
volume_tetrahedron
(v1, v2, v3, v4)¶ Return the volume formed by a tetrahedron (points can be in any order).
Parameters: - v1 (
mathutils.Vector
) – Point1 - v2 (
mathutils.Vector
) – Point2 - v3 (
mathutils.Vector
) – Point3 - v4 (
mathutils.Vector
) – Point4
Return type: - v1 (