Merge remote-tracking branch 'origin/sub_laptop_5' into sub_laptop_4

This commit is contained in:
2026-11-01 23:20:26 +09:00
@@ -7,7 +7,7 @@
굵게 → 가늘게: 후보가 모두 면 위로 뜬 칸(면이 처짐)에 반 간격 씨앗을 더해 다시 다짐.
끝에 둘레보다 최대 거리 넘게 튀거나 꺼진 외딴 꼭짓점(가시 · 잡점)을 걷음.
3. 마지막 지면 TIN 을 후보 칸 격자로 굳히고 모든 점을 면까지 연직 거리로 판정 —
면 아래 최대 거리 · 면 위 0.2 m(꼭짓점 = 칸 최저라 땅은 면 곁 · 위는 덤불).
면 아래 최대 거리 · 면 위 0.12 m(꼭짓점 = 칸 최저라 땅은 면 곁 · 위는 덤불).
장면 셋(DJI Terra 꼴) = 평지 3° · 0.3 m / 완경사 6° · 0.5 m / 급경사 10° · 0.7 m
· 기본 급경사(임도).
@@ -157,7 +157,7 @@ def filter_ptd(
seed_spacing: float = SURFACE_PTD_SEED_SPACING_M,
max_angle: float | None = None,
max_distance: float | None = None,
above_distance: float = 0.2,
above_distance: float = 0.12,
candidate_cell: float = 0.5,
max_candidates: int = 3_000_000,
max_iterations: int = 60,
@@ -210,8 +210,7 @@ def filter_ptd(
pending = np.flatnonzero(~is_ground)
dz[pending] = _tin_dz(cand[is_ground], cand[pending])
gx, gy, pick = _lowest_per_cell(np.column_stack([cand[:, :2], dz]), origin, spacing)
# 간격 절반보다 높이 뜬 칸 = 땅이 안 보이는 수관 · 덤불 → 씨앗으로 안 씀
sag = pick[(dz[pick] > max_distance) & (dz[pick] <= spacing / 2)]
sag = pick[dz[pick] > max_distance]
if len(sag):
is_ground[sag] = True
_densify(cand, is_ground, max_angle, max_distance, max_iterations)