f81418c542
沿现有笔画向空白处增长,保留最小线宽和笔画间隙。41 项测试通过,双 UV 矢量图无重叠。
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
"""Check laser-mark clearance in physical page coordinates."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "blender" / "scripts"))
|
|
|
|
from stroke_geometry import has_clearance # noqa: E402
|
|
|
|
|
|
def test_crossing_capsules_are_rejected() -> None:
|
|
existing = [((-0.2, 0), (0.2, 0), 0.1)]
|
|
assert not has_clearance(((0, -0.2), (0, 0.2), 0.1), existing, 0.03)
|
|
|
|
|
|
def test_near_parallel_capsules_need_edge_spacing() -> None:
|
|
existing = [((-0.2, 0), (0.2, 0), 0.1)]
|
|
assert not has_clearance(((-0.2, 0.22), (0.2, 0.22), 0.1), existing, 0.03)
|
|
assert has_clearance(((-0.2, 0.24), (0.2, 0.24), 0.1), existing, 0.03)
|
|
|
|
|
|
def test_disjoint_collinear_capsules_can_clear() -> None:
|
|
existing = [((0, 0), (0.2, 0), 0.1)]
|
|
assert has_clearance(((0.45, 0), (0.65, 0), 0.1), existing, 0.03)
|
|
|
|
|
|
def test_extension_ignores_only_its_original_capsule() -> None:
|
|
original = ((0, 0), (0.2, 0), 0.1)
|
|
neighbour = ((0.6, 0), (0.8, 0), 0.1)
|
|
assert has_clearance(((-0.1, 0), (0.3, 0), 0.1), [original, neighbour], 0.03,
|
|
skip_index=0)
|
|
assert not has_clearance(((-0.1, 0), (0.4, 0), 0.1), [original, neighbour], 0.03,
|
|
skip_index=0)
|