user: Describe Geometry Utilities (mathutils.geometry) from the Blender manual or Python API, including usage steps and snippets.

assistant:  "mathutils.Vector")) – Origin
        - **clip** (*bool*) – 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`](mathutils.html#mathutils.Vector "mathutils.Vector") | 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`](mathutils.html#mathutils.Vector "mathutils.Vector")) – Center of the first circle
        - **radius_a** (*float*) – Radius of the first circle
        - **p_b** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")) – Center of the second circle
        - **radius_b** (*float*) – Radius of the second circle

    Returns:
    :   2 points on between intersecting circles or None when there is no intersection.

    Return type:
    :   tuple[[`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector"), [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")] | tuple[None, None]

mathutils.geometry.intersect_tri_tri_2d(*tri_a1*, *tri_a2*, *tri_a3*, *tri_b1*, *tri_b2*, *tri_b3*, */*)
:   Check if two 2D triangles intersect.

    Return type:
    :   bool

mathutils.geometry.normal(*\*vectors*)
:   Returns the normal of a 3D polygon.

    Parameters:
    :   **vectors** (*Sequence**[**Sequence**[**float**]**]*) – 3 or more vectors to calculate normals.

    Return type:
    :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")

mathutils.geometry.points_in_planes(*planes*, *epsilon_coplanar=1e-4*, *epsilon_isect=1e-6*, */*)
:   Returns a list of points inside all planes given and a list of index values for the planes used.

    Parameters:
    :   - **planes** (list[[`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")]) – List of planes (4D vectors).
        - **epsilon_coplanar** (*float*) – Epsilon value for interpreting plane pairs as co-plannar.
        - **epsilon_isect** (*float*) – Epsilon value for intersection.

    Returns:
    :   Two lists, once containing the 3D coordinates inside the planes, another containing the plane indices used.

    Return type:
    :   tuple[list[[`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")], list[int]]

mathutils.geometry.tessellate_polygon(*polylines*, */*)
:   Takes a list of polylines (each point a pair or triplet of numbers) and returns the point indices for a polyline filled with triangles. Does not handle degenerate geometry (such as zero-length lines due to consecutive identical points).

    Parameters:
    :   **polylines** (*Sequence**[**Sequence**[**Sequence**[**float**]**]**]* *:return: A list* *of* *triangles.*) – Polygons where each polygon is a sequence of 2D or 3D points.

    Return type:
    :   list[tuple[int, int, int]]

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`](mathutils.html#mathutils.Vector "mathutils.Vector")) – Point1
        - **v2** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")) – Point2
        - **v3** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")) – Point3
        - **v4** ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector")) – Point4

    Return type:
    :   float