콘텐츠로 이동
AstroWay/api v2.102.11 · ko
모든 시스템 정상 작동 중

계산 정확도

AstroWay API는 Swiss Ephemeris를 사용합니다(아스트로딘스트(Astrodienst)의 공식 C 코드로, astro.com을 만든 개발사입니다). 이 엔진은 30년 이상 프로 астрологи들이 Solar Fire($495), Kepler($995), Astro Gold($29.99/월) 및 Janus에서 사용해 왔습니다. 우리는 이를 WebAssembly로 컴파일하고 REST API 계층으로 감싸서 중개 마진 없이 제공합니다. 모든 기본 계산 엔드포인트는 regression snapshot 테스트로 커버되며, 엔진의 정확도는 세 가지 독립적인 소스와의 triangulationNASA 5천년 일식 카탈로그를 통해 검증되었습니다.

  • 행성 위치: < 0.1 arcsec (Astrodienst 공식 swetest CGI와 비교)
  • Placidus 하우스 쿠스피드: 0.000" exact match
  • 일식: NASA 일식 카탈로그와 비교 시 < 1분
  • ACG 라인: 적도에서 < 1.5km (swetest 기준)
  • 일출/일몰: timeanddate.com과 비교 시 < 10초
  • Moon VOC, ingresses, 행성 conjunctions: 초 단위 정확도
컴포넌트
라이브러리Swiss Ephemeris C 코드 (aloistr/swisseph)
버전Astrodienst C 코드 upstream
바인딩swisseph-wasm (Node.js용 WebAssembly)
EphemerisDE431 JPL ephemeris (.se1 파일 사용)
대체재Moshier analytical (1800-2399년 외 날짜용)
코드 공유app.astroway.info와 @/core 공유 — 하나의 엔진, 두 가지 전송 방식

정확도는 triangulation을 통해 세 가지 독립적인 소스와 비교하여 검증됩니다.

Astrodienst가 직접 만든 Swiss Ephemeris의 공식 reference-implementation으로, Astro.com을 만든 엔진이며 전 세계 수백만 astrologers가 사용합니다. 가장 권위 있는 공개 소스입니다. 우리의 엔진은 동일합니다(0.00–0.07 각도 초 drift).

독립적인 Python 라이브러리로, 우리의 WASM이 아닌 pyswisseph 바인딩을 사용합니다. 우리의 WASM 계층이 데이터를 왜곡하지 않음을 확인합니다.

원격 Swiss Ephemeris API (sidereal Lahiri). 8–17 각도 초의 systematic drift는 Lahiri ayanamsa 공식 버전 차이 때문이며(엔진의 정확도와는 무관), Swiss Ephemeris 자체의 오류가 아닙니다.

차트swetest(Astrodienst)와 비교Kerykeion(Python)과 비교Prokerala API와 비교
Monroe 19260.00”0.19”16.95” (systemic)
Diana 19610.00”0.69”8.18” (systemic)
Einstein 18790.07”Kerykeion LMT artifact14.96” (systemic)

엔드포인트 수준 Regression 테스트

섹션 제목: “엔드포인트 수준 Regression 테스트”

모든 기본 계산 엔드포인트는 3개의 레퍼런스 차트(Monroe / Diana / Einstein)를 대상으로 818개의 snapshot으로 커버됩니다.

Snapshot suite는 다음을 감지합니다:

  • 입력 데이터 매핑 버그 — 잘못된 행성 ID, UT, 하우스 시스템
  • 후처리 — 반올림, 단위 변환, 부호 손실
  • 기본값 불일치 — mean vs true node, 지구중심 vs местополож기반(topocentric)
  • Schema drift — 잘못된 형식이 유효성 검사를 통과
  • 구식 배포 — 프로덕션 dist가 코드와 일치하지 않음

기본 Tolerance: 모든 숫자 필드에 대해 5e-5° (≈0.18 각도 초).

차트날짜최대 drift
Marilyn Monroe1926-06-010.00”
Princess Diana1961-07-010.00”
Albert Einstein1879-03-140.07”

Placidus 하우스 쿠스피드 (swetest와 비교)

섹션 제목: “Placidus 하우스 쿠스피드 (swetest와 비교)”
차트drift ASCdrift MC최대 쿠스피드 drift
Monroe0.000”0.000”0.000”
Diana0.000”0.000”0.000”

일식 (NASA 5천년 카탈로그와 비교)

섹션 제목: “일식 (NASA 5천년 카탈로그와 비교)”
사건NASA 최대우리 최대Drift
2025-03-14 Lunar Total06:58 UT06:58 UT0.8분
2025-03-29 Solar Partial10:47 UT10:47 UT0.5분
2025-09-07 Lunar Total18:11 UT18:11 UT0.8분
2025-09-21 Solar Partial19:41 UT19:42 UT1.0분

Astro-Cartography (swetest RA 공식과 비교)

섹션 제목: “Astro-Cartography (swetest RA 공식과 비교)”

모든 MC/IC/ASC/DSC 라인은 올바른 공식 longitude = RA − GMST(Kenneth Bowser 표준)를 사용합니다. 기준과의 drift: 적도에서 모든 행성에 대해 < 1.5km.

위치날짜매개변수Drift
런던2026-04-15일출0.6초
런던2026-04-15일몰9초

극지방 (|위도| > 66.5°)은 자동으로 polarState + 일반 planetary hours가 정의되지 않음을 알리는 경고를 반환합니다.

AstroWay는 변동 오비트를 per-planet으로 사용합니다(두 행성의 MIN 규칙, ZET9 및 astro.com과 동일). 기본 오비트( natal 차트용):

아スペクトSunMoonInnerJupiterOuter
Conjunction12°10°
Sextile6.5°
Square10°
Trine12°
Opposition12°10°

마이너 아スペクト (36°, 40°, 45°, 72°, 108°, 135°, 144°)은 기본적으로 비활성화되어 있습니다. ALL_ASPECTS로 명시적으로 활성화할 수 있습니다.

|위도| > 66.5°에서 Placidus / Koch / Regiomontanus 시스템은 수학적으로 정의되지 않습니다. Swiss Ephemeris는 자동으로 Porphyry로 대체하며, 우리의 API는 다음과 같은 경고를 추가합니다:

{
"system": "P",
"warning": "위도 68.96° (> 66.5°)에서 Placidus 시스템은 정의되지 않습니다. Swiss Ephemeris가 Porphyry로 대체했습니다..."
}

Regression은 모든 PR에 대해 CI를 통해 검증됩니다:

  • api-calc/tests/endpoints/ — 818개의 snapshot (Monroe / Diana / Einstein) + synastry / composite / davison
  • .github/workflows/api-accuracy.yml — PR 시 자동 실행
  • swetest CGI + Kerykeion을 통한 triangulation — 매주
  • Dependabot을 통한 upstream Swiss Ephemeris 모니터링
  • 범위 외 날짜 (1800년 이전 및 2399년 이후): Moshier analytical 사용, 정확도 ~0.1” (DE431 파일 사용 SWIEPH의 < 0.01”에 비해)
  • True Lilith (id=13) vs Mean Lilith (id=12): 최대 12° 차이 — 기본적으로 Mean Lilith (안정적인 동작), True Lilith는 planetIds: [13]으로 접근 가능
  • Topocentric vs 지구중심: 기본적으로 지구중심

정확성에 대한 질문: support@astroway.info로 차트 데이터와 예상 레퍼런스(astro.com 또는 기타 권위 있는 소스)를 포함하여 문의하세요.

도움이 되었나요?
Запропонувати правку

마지막 업데이트: