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
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.Vector’s

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
Return type

float

mathutils.geometry.interpolate_bezier(knot1, handle1, handle2, knot2, resolution)

Interpolate a bezier spline segment.

Parameters
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
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
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
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
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
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
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
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
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
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
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
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 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

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
Return type

float