English 한글

EasyPutt · 사용 설명서

EasyPutt 로고

그린을 살짝 보여주세요 — 빠르고 정확하게, EasyPutt~

ARKit 기반 골프 퍼팅 레인지파인더. 카메라로 볼과 홀 사이 지형을 훑어 법선벡터 필드를 수집하고, 실제 구름 물리 시뮬레이션으로 "어느 방향, 어느 세기로 쳐야 들어가는지"를 계산합니다.

iOS · LiDAR 필요 실기기 전용

사용 순서

측정 한 번은 캡처 → 스캔 → 캡처, 세 동작이면 됩니다.

  1. 볼 위치 캡처화면 중앙 리티클(지면 트래킹 상태에 따라 초록·노랑·파랑으로 바뀌는 "+" 표시)을 공 위에 맞추고 하단 + 버튼을 누릅니다. 이 순간부터 지형 스캔이 시작됩니다.
  2. 볼→홀 사이 스캔카메라로 볼과 홀 사이 지면을 천천히 훑습니다. 화면 중앙의 3×3 격자가 가리키는 지점들의 좌표·법선벡터가 계속 수집됩니다. 격자는 핀치로 칸 크기를 조절할 수 있습니다.
  3. 홀 위치 캡처리티클을 홀에 맞추고 + 버튼을 다시 누르면 스캔이 끝나고 두 솔버가 동시에 계산을 실행합니다. 결과는 보통 0.1초 안팎에 나옵니다.
  4. 결과 확인상단 결과 카드와 AR 궤적선을 확인합니다. 카드를 탭하면 한 줄로 접히고, 다시 탭하면 펼쳐집니다.
  5. 초기화측정을 마쳤으면 리셋으로 볼·홀 위치, 계산 결과, 지형 데이터, AR 마커를 모두 지우고 처음부터 다시 시작합니다.
우측 상단 코너에서 핀치하면 화면 확대(1.0~3.0배) 슬라이더가 나타나고, 카메라 아이콘으로 현재 화면을 사진 앱에 저장할 수 있습니다.

결과 읽는 법

결과 카드의 각 줄이 뜻하는 것.

EasyPutt 결과 카드 예시 — 실제 거리 2.46m, 평지 환산 0.29m, 조준 문구와 Boundary A/B (그린 배경)
1 2 3 4
  1. ⬇️ 화살표가 홀 쪽으로 길게 뻗어있어요fall line 화살표가 길고 홀 방향을 향하고 있으면 내리막이 꽤 심하다는 뜻입니다.
  2. 📏📐 실제 거리 2.46m, 평지 환산 0.29m내리막이 워낙 커서, 실제 거리(2.46m)의 10분의 1 남짓한 세기(평지에서 0.29m짜리 퍼트 정도)로만 쳐도 홀까지 도달합니다.
  3. 🎯 0.5m 지점: 오른쪽 2.2cm볼에서 0.5m 앞, 홀과 이어지는 연장선 기준으로 오른쪽 2.2cm 지점을 겨냥하세요.
  4. ↕️ 유효 범위: -1.4cm ~ +12.7cm홀 중심 기준 이 범위(대략 오른쪽 반 컵 폭) 안 어디를 조준해도 이 세기로는 들어갑니다.

Boundary A / Boundary B — "이 안으로 조준하면 들어간다"는 좌우 조준 여유 창의 양 끝입니다. 두 값 사이 어디를 겨냥해도 적절한 세기라면 홀아웃이 가능합니다. 오르막 퍼트는 창이 넓어지고, 내리막 퍼트는 좁아지는 경향이 있습니다.

거리가 너무 멀거나(약 12m 초과) solver가 해를 못 찾은 경우에도, 실제 거리·평지 환산 거리와 함께 스캔한 지형만으로 뽑아낸 대략적인 오르막/내리막·좌우 경사 정보(예: "⬇️ 내리막 (약 2.3°) · ➡️ 오른쪽이 낮아요 (약 1.1°)")는 항상 표시됩니다. 정밀 조준각은 없어도 라이를 읽는 감은 잃지 않도록 하기 위함입니다.

이 값이 나오는 방식: 볼→홀 직선을 10cm 간격으로 나눠 각 지점의 지형 법선을 조회하고, 그 기울기 방향을 전부 평균 냅니다. 평균 방향이 홀 쪽을 향하면 내리막, 옆으로 치우치면 그만큼 좌우 경사로 읽습니다. 볼-홀 사이 전체를 하나의 평면으로 근사한 값이라, 중간에 오르막-내리막이 번갈아 나오는 굴곡진 지형에서는 그 굴곡이 평균에 상쇄될 수 있습니다.

컵 단위 규약

"N컵 아웃"은 홀 중앙이 아니라 가장자리 기준입니다. 홀 중앙에서 5.4cm(홀 반경) + N × 10.8cm(홀 지름) 떨어진 지점을 뜻합니다.

홀 (지름 10.8cm) 가장자리 1컵 아웃 중앙에서 16.2cm 2컵 아웃 중앙에서 27.0cm
컵 단위는 조준점이 홀에서 얼마나 바깥인지를 셉니다. 2cm 이내면 "홀컵 중앙", 홀 반경 이내면 "홀컵 안쪽", 반경+공 1개 폭 이내면 "홀컵 밖 (공 1개)"로 표기합니다.

AR 오버레이 범례

화면 위 표시들이 각각 무엇을 뜻하는지.

AR 화면 예시 — 흰 공, 초록 깃발, 주황/초록 실선과 갈색/파랑 파선 경계, 파란 fall line 화살표 (그린 배경)
1 2 3
파란 화살표 — fall line(내리막 방향)각 지형 샘플 법선의 수평 사영. 화살표가 가리키는 쪽이 내리막이고, 길이는 기울기에 비례합니다.
노란 사각형 — 지형 샘플 지점스캔으로 수집된 측정 지점. 밀도가 스캔 품질을 보여줍니다.
주황 실선 — Boundary A (백+포워드)조준 여유 창의 한쪽 경계 궤적.
초록 실선 — Boundary B (백+포워드)조준 여유 창의 반대쪽 경계 궤적.
갈색 파선 — Boundary A (백워드 전용)빠른 근사 솔버의 같은 경계. 실선과 가까울수록 두 솔버가 합의한 것입니다.
파랑 파선 — Boundary B (백워드 전용)위와 같습니다.
흰 공 / 깃발캡처된 볼·홀 위치. 실제 크기로 표시됩니다.

이 화면 해석 — 왼쪽 사진 기준

  1. 📏📐 실제 거리 2.23m인데 평지 환산은 더 큰 3.73m평지 환산이 실제 거리보다 크면 오르막이라는 뜻입니다. 평지에서 3.73m짜리 퍼트를 친다는 세기로 쳐야 합니다.
  2. 🎯 왼쪽 4.5컵 아웃 · 0.5m 지점: -12.7cm볼에서 0.5m 앞, 홀 연장선 기준으로 왼쪽 12.7cm 지점을 겨냥하세요.
  3. ↕️ 유효 범위: 왼쪽 6.0컵~4.5컵 아웃 (-68.3cm~-55.2cm)두 경계가 모두 왼쪽에 있고 폭도 넓습니다 — 오르막 퍼트라 조준 여유 창이 넉넉해진 경우입니다.

계산 결과를 보기 전에 파란 화살표만 봐도 지형을 검증할 수 있습니다 — 화살표가 라인과 평행하면 직진 오르막/내리막, 라인을 가로질러 누우면 횡경사(브레이크 요인)입니다.

설정

하단 톱니 버튼으로 여는 설정 시트.

설정 화면 — 법선벡터 진단, 솔버 튜닝, 고급: 두 솔버 비교 섹션
항목설명
Stimpmeter그린 스피드(구름저항). 실측 거리를 입력하면 감속 계수가 즉시 계산에 반영됩니다.
지형경사표시노란 사각형·파란 화살표 오버레이를 켜고 끕니다.
법선벡터 진단평균 법선·기울기와 기울기 큰 순 샘플 목록을 보여줍니다.
솔버 튜닝 · 홀 지나침 목표 거리다잉 퍼트가 아니라 홀을 살짝 지나칠 정도의 목표 거리(overrun distance)를 직접 조절할 수 있습니다. 이 값이 클수록 조준 여유 창(Boundary A/B)은 좁아지는 경향이 있습니다 — 1차버전에는 없던 조절 항목입니다.
고급: 두 솔버 비교같은 입력에 대한 두 솔버의 해와 소요시간을 나란히 보여줍니다.

작동 원리

기술 문서의 요약입니다.

지형: 평면 피팅이 아닌 법선 샘플 필드

그린을 하나의 평면으로 근사하면 국소 굴곡이 평균에 뭉개지기 쉽습니다. EasyPutt은 수백 개의 (좌표, 법선) 원시 샘플을 그대로 저장하고, 시뮬레이션 중 매 스텝마다 공의 현재 위치에서 수평 거리 기준 최근접 샘플의 법선을 꺼내 씁니다.

물리: 실측 캘리브레이션된 구름 모델

매 스텝 두 힘이 작용합니다 — 중력을 경사면에 투영하고 구르는 구의 관성 계수 5/7을 곱한 경사 가속도, 그리고 스팀프미터 값에서 환산된 구름저항. 홀인 판정 반경은 홀 반경 5.4cm 그 자체입니다.

솔버: 백워드 추적 + 포워드 재검증

기본 솔버는 홀에서 볼로 거슬러 올라가는 역시간 추적으로 후보를 만들고, 볼에서 정방향 시뮬레이션으로 오차를 반복 보정합니다. 별도의 백워드 전용 솔버(2~3배 빠른 근사)가 같은 문제를 독립적으로 풀어 교차 검증합니다.

1차버전 대비 개선점

1차버전의 코드베이스와 2026-07-28 필드테스트를 근거로 정리했습니다. 확정된 결론이라기보다 현재까지의 관찰입니다.

1차버전 사용설명서 화면(스크린샷 속 "TingPutt"은 당시 개발 프로젝트명) — 다크 UI, 구독 상태 표시

1차버전은 최초 출시했을 때는 개발 중 프로젝트명이 TangTong → TingTing/TingPutt → PuttPro로 여러 차례 바뀌었지만, App Store에는 지금과 같은 EasyPutt이라는 이름으로 나왔습니다 — 지금 버전은 그 EasyPutt을 업그레이드한 것입니다. 지형을 볼-홀 사각 영역 전체를 타일 메쉬로 재구성하고, 조준을 속도×방향 2차원 전수 탐색(RK4)으로 구했습니다.

체감상 가장 큰 변화 3가지

  1. 스캔 과정 자체가 사라짐1차버전은 전체 지형에 해당하는 타일을 롱프레스+드래그로 하나하나 직접 스캔해야 했습니다. EasyPutt은 볼과 홀 위치만 찍으면 됩니다 — 그 사이를 걸어가는 동안 지나간 경로만 자연스럽게 샘플링됩니다.
  2. 계산이 훨씬 빨라짐속도×방향을 전부 RK4로 훑던 방식에서, 백워드 추적으로 후보를 좁히고 forward로 검증하는 방식으로 바뀌면서 solver 소요시간이 수~수십 ms 단위로 줄었습니다.
  3. 설정 조절 폭이 넓어짐홀 지나침 목표 거리(overrun distance)를 설정에서 직접 조절할 수 있고, 화면 확대와 현재 AR 화면을 사진 앱에 저장하는 기능도 새로 생겼습니다.

필드테스트에서 관찰된 차이 (같은 장소 8곳, 동일 퍼트)

  • 미묘한 경사를 더 민감하게 잡아내는 것으로 보입니다. 평균 기울기 1.9~2.9°의 보도블록 광장에서 1차버전은 평지환산을 +0.07~0.22m만 더한 반면, EasyPutt은 +0.56~0.71m를 더하며 경사를 감지했습니다. 이 차이는 홀 지나침 목표 거리(overrun)를 낮게 잡을수록 속도가 느려져 경사에 더 오래 노출되면서 휨이 커지는 효과가 섞였을 수 있습니다 — 설정에서 overrun 값을 조절해 원하는 민감도로 맞춰보세요.
  • 라인 근처 지형의 국소성이 판독에 반영됩니다. 급내리막 흙길에서 라인 옆 0.65~0.9m 지점에만 있던 11~13° 붕괴 경사가, 1차버전에서는 평면 피팅에 섞여 상대적으로 큰 브레이크로 나타난 것으로 추정됩니다.
  • 8곳 중 해를 못 찾은 곳은 극단적 급내리막 1곳뿐이었습니다.
1차버전 AR 화면 — 타일 메쉬와 조준 여유 창

1차버전의 실제 AR 화면입니다. 볼-홀 사각 영역이 타일 단위로 잘게 나뉘어 있고, 타일마다 개별 화살표로 그 지점의 국소 기울기를 표시합니다. 상단 텍스트(Left Inside(-1) ~ Right Edge(2))가 그 방식대로 계산된 조준 여유 창입니다.

구조적 차이

1차버전

  • 볼-홀 사각 영역 전체를 타일 메쉬로 재구성 — 타일마다 롱프레스+드래그로 개별 raycast, 실패 시 재시도 필요
  • 속도×방향 그리드를 RK4로 전수 탐색 — 연산량이 많아 로딩 스피너 필요, 1.5m 초과는 유료 게이트
  • 탐색 결과(RK4)와 화면 표시용 근사식이 서로 독립적으로 계산돼 두 값이 어긋날 수 있음
  • "평지환산 거리"가 코드에 3번 따로 구현(그중 하나는 죽은 코드), 대각선 이동 높이 보정 미구현

EasyPutt

  • 볼→홀로 실제 걸어가며 지나간 회랑의 (좌표, 법선) 샘플만 가볍게 수집 — 스캔 자체가 곧 걷는 동작
  • 백워드 추적으로 후보를 좁히고 forward 시뮬레이션으로 보정 — 두 솔버가 걸리는 시간은 수~수십 ms 단위
  • 조준 문구·컵 수·cm 오프셋이 단일 파이프라인(aimOffsetCentimeters)에서 나와 값이 서로 어긋날 일이 없음
  • 거리 초과·해 없음 상황에도 스캔 지형 기반 오르막/내리막·좌우 경사 정보를 항상 대체 표시
공정하게 보면 1차버전의 타일 메쉬 방식은 볼-홀 사이 전 영역을 촘촘히 재구성한다는 점에서 원리적으로는 더 넓은 커버리지를 가질 수 있습니다. EasyPutt은 실제로 걸어서 훑은 좁은 회랑만 신뢰하는 대신, 그 경로 안에서는 계산이 훨씬 가볍고 빠릅니다 — 커버리지와 속도 사이의 트레이드오프입니다.

제한 사항

  • 백워드 전용 솔버는 급경사에서 부정확하거나 발산할 수 있습니다 — 기준은 항상 백+포워드(실선) 결과입니다.
  • 볼-홀 거리가 약 12m를 넘으면 정밀 계산 자체를 생략합니다 — 이 앱이 다루는 현실적 퍼팅 범위를 벗어난다고 보기 때문입니다.
  • 지형 샘플은 스캔한 경로 주변에만 존재하므로, 그 회랑을 크게 벗어나는 궤적은 덜 대표성 있는 샘플을 쓰게 됩니다.
  • ARKit 카메라 트래킹이 필요해 실기기 전용입니다.