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
) – Point1v2 (
mathutils.Vector
) – Point2v3 (
mathutils.Vector
) – Point3
- Return type
float
- 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
- 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
) – Pointplane_co (
mathutils.Vector
) – A point on the planeplane_no (
mathutils.Vector
) – The direction the plane is facing
- Return type
float
- 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
- 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 linev2 (
mathutils.Vector
) – Second point of the first linev3 (
mathutils.Vector
) – First point of the second linev4 (
mathutils.Vector
) – Second point of the second line
- Return type
tuple of
mathutils.Vector
’s
- 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 linelineA_p2 (
mathutils.Vector
) – Second point of the first linelineB_p1 (
mathutils.Vector
) – First point of the second linelineB_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
- 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 lineline_b (
mathutils.Vector
) – Second point of the first lineplane_co (
mathutils.Vector
) – A point on the planeplane_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
- 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 lineline_b (
mathutils.Vector
) – Second point of the linesphere_co (
mathutils.Vector
) – The center of the spheresphere_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
- 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 lineline_b (
mathutils.Vector
) – Second point of the linesphere_co (
mathutils.Vector
) – The center of the spheresphere_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
- 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 planeplane_a_no (
mathutils.Vector
) – Normal of the first planeplane_b_co (
mathutils.Vector
) – Point on the second planeplane_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
- 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
) – Pointline_p1 (
mathutils.Vector
) – First point of the lineline_p1 – Second point of the line
- Return type
(
mathutils.Vector
, float)
- 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
) – Pointquad_p1 (
mathutils.Vector
) – First point of the quadquad_p2 (
mathutils.Vector
) – Second point of the quadquad_p3 (
mathutils.Vector
) – Third point of the quadquad_p4 (
mathutils.Vector
) – Fourth point of the quad
- Return type
int
- 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
) – Pointtri_p1 (
mathutils.Vector
) – First point of the triangletri_p2 (
mathutils.Vector
) – Second point of the triangletri_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
- 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
) – Pointtri_p1 (
mathutils.Vector
) – First point of the triangletri_p2 (
mathutils.Vector
) – Second point of the triangletri_p3 (
mathutils.Vector
) – Third point of the triangle
- Return type
int
- 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
) – Point1v2 (
mathutils.Vector
) – Point2v3 (
mathutils.Vector
) – Point3ray (
mathutils.Vector
) – Direction of the projectionorig (
mathutils.Vector
) – Originclip (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
- 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 circleradius_a (float) – Radius of the first circle
p_b (
mathutils.Vector
) – Center of the second circleradius_b (float) – Radius of the second circle
- Return type
tuple of
mathutils.Vector
’s or None when there is no intersection
- 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.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
) – Point1v2 (
mathutils.Vector
) – Point2v3 (
mathutils.Vector
) – Point3v4 (
mathutils.Vector
) – Point4
- Return type
float