use tqdm to display progress bar for long running SVG triangulations

This commit is contained in:
Sunkisser 2022-03-28 03:30:10 +00:00
parent cfba6c431f
commit c4ea794107

View file

@ -4,11 +4,13 @@ import math
import operator as op import operator as op
from functools import reduce from functools import reduce
from typing import Callable, Iterable, Sequence from typing import Callable, Iterable, Sequence
import platform
import numpy as np import numpy as np
import numpy.typing as npt import numpy.typing as npt
from mapbox_earcut import triangulate_float32 as earcut from mapbox_earcut import triangulate_float32 as earcut
from scipy.spatial.transform import Rotation from scipy.spatial.transform import Rotation
from tqdm import tqdm as ProgressDisplay
from manimlib.constants import RIGHT from manimlib.constants import RIGHT
from manimlib.constants import DOWN from manimlib.constants import DOWN
@ -414,7 +416,16 @@ def earclip_triangulation(verts: np.ndarray, ring_ends: list[int]) -> list:
)) ))
chilren = [[] for i in rings] chilren = [[] for i in rings]
for idx, i in enumerate(rings_sorted): ringenum = ProgressDisplay(
enumerate(rings_sorted),
total=len(rings),
leave=False,
ascii=True if platform.system() == 'Windows' else None,
dynamic_ncols=True,
desc="SVG Triangulation",
delay=3,
)
for idx, i in ringenum:
for j in rings_sorted[:idx][::-1]: for j in rings_sorted[:idx][::-1]:
if is_in_fast(i, j): if is_in_fast(i, j):
chilren[j].append(i) chilren[j].append(i)