Files
GhiVideo_v4/docs/history/2026-06-24_0948_POI거리필터-단일범위통합.md
T
b23042andClaude Fable 5 d38b842e8d GhiVideo 소스 복제 — v4 작업 시작 기준
기존 GhiVideo 저장소 HEAD의 트래킹 소스 362개 파일을 복제.
(node_modules·storage·빌드 산출물·대용량 미디어는 .gitignore 규칙대로 제외)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 14:32:51 +09:00

1.8 KiB

POI 거리필터 — 앞/옆 분리 → 단일 표시 범위(직선거리)로 통합

날짜: 2026-06-24 수정 파일: client/src/components/overlay/StationOverlay.tsx

요구

"POI 앞쪽/옆쪽"을 "POI 표시 범위" 하나로 통합. 드론 위치와의 직선거리를 기준으로 범위 안이면 표시, 밖이면 제외.

구현

  • 비등방 필터(fwd > MAX_FRONT || |side| > MAX_SIDE)를 단일 반경 필터로 교체:
    if ((cc.distH ?? 0) > MAX_RANGE) continue;   // distH = 드론↔POI 수평 직선거리(m, 고도차 무시)
    
    cc.distHtoCameraCoords가 항상 채우는 수평 평면 직선거리.
  • 상태 maxPoiFront/maxPoiSidemaxPoiRange 단일화(ref/effect/precompute 인자/호출부/의존성 일괄).
  • 패널 UI: 슬라이더 2개("POI 앞쪽"/"POI 옆쪽") → 1개 "POI 범위"(10~1000m, 툴팁: "드론 위치와의 수평 직선거리 — 범위 안만 표시").
  • 기본값(DISPLAY_DEFAULTS): maxPoiFront 310 / maxPoiSide 135maxPoiRange 300. "기본값" 버튼·초기 useState 공유.
  • 영속화(localStorage ghivideo:calib): maxPoiRange 저장. 구버전 마이그레이션 — 저장값에 maxPoiRange가 없고 maxPoiFront만 있으면 그 값으로 복원.

참고

  • 직선거리는 수평 평면거리(distH) 사용(기존 앞/옆도 평면 분해였음 → 일관). 드론 높이(~35m)는 무시되나 100m+ 범위에선 3D 직선거리와 거의 동일.
  • 트레이드오프: 단일 반경이라 "앞으로 멀리 + 옆으로 좁게"는 더 이상 불가(사용자 요청대로 단순화).

검증

  • npm run build -w client (node20) tsc + vite build 통과.

소요 시간: 약 15분 Context 사용량: input ~165k / output ~5k tokens