Layer C — 天体ハウス帰属の完全トレース
入力例:読み込み中…
⚑ このページは純粋な区間判定(球面三角法なし)です。 Layer A(惑星黄経)と Layer B(ハウスカスプ)の計算が終わった後の最終段階として、 「どの惑星がどのハウスに入るか」を算術的に決定します。
本ビューでは、実装上は関数に吸収される処理も、計算過程の理解と検証のために段階的に表示しています。
| Layer | 入出力 | 計算内容 |
|---|---|---|
| Layer A | BSP → 惑星黄経 λ | BSP読み込み・ICRS→黄道変換・歳差補正 |
| Layer B | RAMC・ε・φ → ハウスカスプ[12] | ハウスシステムごとの球面幾何計算 |
| Layer C(本ページ) | λ + cusps[12] → ハウス番号 | 区間判定のみ(加減算・比較) |
ハウスカスプ配列 $\text{cusps}[0..11]$ において、
各ハウス $i$($i = 0, 1, \ldots, 11$)の境界は
$c_1 = \text{cusps}[i]$、$c_2 = \text{cusps}[(i+1) \bmod 12]$ とする。
天体黄経 $\lambda$ がハウス $i+1$ に属する条件:
$\text{inHouse}_i = \text{true}$ となった最初の $i$ について、ハウス番号 $= i + 1$ を返す。
| 変数 | 意味 | 取得元 |
|---|---|---|
lon | 天体の黄経(0°〜360°) | Layer A(BSP + ICRS→黄道変換) |
cusps | ハウスカスプ 12 個の配列(0-indexed) | Layer B(各ハウスシステム計算) |
c1 | ハウス i+1 の始点(ハウスカスプ) | cusps[i] |
c2 | ハウス i+1 の終点(次ハウスのカスプ) | cusps[(i+1) % 12] |
幾何位置(BSP を観測時刻 $t$ でそのまま読んだ位置)から視位置(我々が実際に観測する方向)を得るには、以下の 3 つの補正を順に適用する。
| 補正種別 | 原因 | 典型的な大きさ | 一般式 | Stella-JS 実装 |
|---|---|---|---|---|
| ① 光行時補正 light-time |
光の速さが有限なため、我々が見ているのは $\tau$ 秒前の天体位置 | 太陽 ≈ 506" / 土星 ≈ 4946" (距離に比例) |
$\tau = r / c$,天体位置を $t - \tau$ で取得 | ✓ computePosition(naif, 0, jdTdb - τ) |
| ② 光偏差 light deflection |
太陽の重力場による光の屈折(一般相対論効果) | 太陽縁で最大 1.75" 通常位置で < 0.01" |
$\Delta\hat{e} = \dfrac{2GM_\odot}{c^2 r}\cdot\dfrac{\hat{q} - \hat{e}(\hat{q}\cdot\hat{e})}{1 + \hat{q}\cdot\hat{e}}$ | ✓ applyLightDeflection() |
| ③ 年周光行差 annual aberration |
地球の公転速度($v \approx 30$ km/s)による見かけの方向ずれ | 最大 $\kappa = 20.50''$ 平均 ≈ 14〜20" |
$\hat{u}' = \dfrac{\hat{u} + \boldsymbol{\beta}}{1 + \hat{u}\cdot\boldsymbol{\beta}}$,$\boldsymbol{\beta} = \vec{v}/c$ | ✓ applyAberration() |
さらに座標系補正として歳差(precession)が加わる(物理補正ではなく J2000 → of-date の座標変換)。
app.js の computeApparent() が上記をこの順序で適用し icrsToEcliptic() で of-date 変換する。
幾何位置から出発し、3 種類の補正を順に加えたときの黄経変化量:
光行時補正済み XYZ(ICRS・地心)を黄道座標に変換する。 黄道傾斜角 $\varepsilon$(of-date)で天の赤道面を黄道面へ回転する:
$$ \begin{pmatrix} x_e \\ y_e \\ z_e \end{pmatrix} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos\varepsilon & \sin\varepsilon \\ 0 & -\sin\varepsilon & \cos\varepsilon \end{pmatrix} \begin{pmatrix} x \\ y \\ z \end{pmatrix} $$ $$ \lambda_\text{raw} = \operatorname{atan2}(y_e,\, x_e) \times \frac{180°}{\pi}, \qquad \lambda = (\lambda_\text{raw} + 360°) \bmod 360° $$月の黄経 $\lambda$ に対して、Placidus カスプで全 12 ハウスをループ判定:
if (inHouse) return i + 1;)。ハウスが 0°/360° をまたぐ($c_2 \leq c_1$)場合、折り返しケースが発動する。
以下は今回のカスプで折り返しが発生するハウスの一覧(全システム):
getHouseNum() は ui-astro.js 内の純粋関数として実装されている
(外部エクスポートなし)。本トレースでは同一ロジックをインライン実装して照合する。
| 項目 | 内容 |
|---|---|
| 使う数学 | 加減算・比較のみ(球面三角法なし) |
| 入力元 | Layer A(惑星黄経)+ Layer B(ハウスカスプ) |
| 判定方式 | 半開区間 $[c_1, c_2)$ のループ検索 |
| 折り返し処理 | $c_2 \leq c_1$ の場合は OR 条件に切り替え |
| フォールバック | 全ハウス不一致時は H1 を返す(浮動小数点誤差対策) |
| システム依存性 | 同じ惑星黄経でもシステムによって帰属ハウスが変わりうる |