def combined_stability_matrix(parent_planes):
    """
    Given a list of relations (each a tuple of point and normal),
    compute the combined 3x3 matrix M.
    """

    M = np.identity(3)
    for name, poly in parent_planes:
        obj = bpy.data.objects[name]
        poly = obj.data.polygons[poly]
        point = obj.data.vertices[poly.vertices[0]]
        M = np.dot(M, stable_against_matrix(point, poly.normal))
    return M

    Given a list of relations (each a tuple of point and normal),
    compute the combined 3x3 matrix M.
    
infinigen/core/constraints/example_solver/geometry/dof.py