import matplotlib.pyplot as plt import numpy as np from itertools import combinations def center(points): return sum(points) / len(points) def draw_triangle(points): for ps in combinations(points, 2): xs = [ps[0][0], ps[1][0]] ys = [ps[0][1], ps[1][1]] plt.plot(xs, ys, "b-", alpha=0.1) def mesh(points, depth): if depth > 0: c = center(points) for pair in combinations(points, 2): pts = [pair[0], pair[1], c] draw_triangle(pts) mesh(pts, depth - 1) points = [np.array([0, 1]), np.array([-0.866, -0.5]), np.array([0.866, -0.5])] mesh(points, 3) plt.axis("off") plt.gca().set_aspect("equal") plt.show()