# オフ軸 LED 配置の影響とサイズ依存 (Off-axis LED Placement and Size Dependence)

これまでの board_baffle 構成は LED・光軸・センサがすべて z 軸上にあり，輝度分布は同心円対称に
なる．本実験では **LED を軸から外して側壁に置き**，その非対称が評価板にどれだけ写るか，
キャビティが大きいほど薄まるか（＝配置誤差へのロバスト性）を球・立方体の両方で測った
（2026-09-01）．仮説「大きいほど光源位置の影響が薄まる」は両形状で成立した．
加えて 2 つの発見があった．**明るくなるのは LED の反対側**であること（一次照射キャップの
機構），そして**オフ軸への頑健性は球が立方体に勝つ**——軸上の優劣（TEST_16）と逆転する——
ことである．

関連:

- 軸上の球スイープと評価の作法: [TEST_15_バッフル導入と球半径スイープ](TEST_15_バッフル導入と球半径スイープ.md)
- 軸上の立方体スイープと m 次方位フーリエ解析: [TEST_16_立方体キャビティ導入と球との比較](TEST_16_立方体キャビティ導入と球との比較.md)
- 一次照射キャップの機構: [TEST_11_球体筐体実験](TEST_11_球体筐体実験.md)
- 実行記録: [TEST_02_シミュレーション実行記録](TEST_02_シミュレーション実行記録.md)

## 背景・動機 (Motivation)

実機では LED を理想の位置（軸上）に置けるとは限らない．基板の配置制約や組立誤差で光源が
軸から外れたとき，均一性がどれだけ壊れるかは筐体設計の実用上の性能である．TEST_16 で
「同じ内面積なら立方体が球より均一」と分かったが，それは完全に対称な配置での話であり，
**配置誤差への感度**という軸では別の答えがありうる．多重反射の混合はキャビティが大きいほど
強く効くはずなので，「大きいほど光源位置の影響が薄まる」という仮説を立てて検証した．

## 実験条件 (Setup)

固定条件（材質・レンダ・評価・評価板・LED の面積と radiance）は TEST_15/16 と同一．
球は `similar_radial` キャビティ（TEST_15 最良），立方体は TEST_16 と同じ筐体を使い，
**変えたのは LED の位置・向きとバッフルだけ**である．レンダは全条件 mitsuba 3.7.1
（軸上の参照データとの等価性は TEST_16 のアンカー検証で確認済み）．

### LED の配置（ユーザー指定）

- 深さ方向の軸（板中心〜キャビティ最深部）の**中点の高さ**で側壁と交わる点の **+X 側 1 箇所**
  - 立方体: 側壁 x=+L/2・z=−L/2
  - 球: z_mid = pole_z/2 = −0.96r の高さで球面と交わる点（ほぼ赤道）
- 発光方向は**評価板の中心** (0, 0, −4.5)．壁法線ではないので円板は壁に対して約 41°（球）／
  約 44°（立方体）傾き，傾いた縁が壁を貫かない分だけ浮かせる（LED_RADIUS×sinθ + 0.5mm
  ≈ 1.65〜1.74mm．縁と壁の余裕 0.5mm を数値で確認）

| 条件 | LED (x, 0, z) [mm] | 傾き | バッフル R | 遮蔽 55,473 本 |
| --- | --- | --- | --- | --- |
| 球 r=88 | (86.3, −84.4) | 40.5° | 9.52mm | 100% |
| 球 r=100 | (98.3, −95.9) | 40.6° | 8.22mm | 100% |
| 球 r=135 | (133.2, −129.5) | 40.9° | 6.11mm | 100% |
| 球 r=170 | (168.2, −163.1) | 41.0° | 5.06mm | 100% |
| 球 r=250 | (248.1, −239.9) | 41.2° | 3.90mm | 100% |
| 立方体 L=120 | (58.3, −60.0) | 43.6° | 15.88mm | 100% |
| 立方体 L=160 | (78.3, −80.0) | 44.0° | 10.43mm | 100% |
| 立方体 L=200 | (98.3, −100.0) | 44.2° | 8.04mm | 100% |
| 立方体 L=280 | (138.3, −140.0) | 44.4° | 5.83mm | 100% |
| 立方体 L=360 | (178.3, −180.0) | 44.6° | 4.78mm | 100% |

### バッフル（数値サイジング）

LED→板中心の視線上 10mm 先に置く傾いた円板．軸対称でないため閉形式は使えず，
**LED 円板上の点 × 板上の点（41×41）の全直線がバッフル平面を横切る位置**から最小半径を
数値で求め，安全率 1.05 を掛けた（`sweep_offaxis_led.py:baffle_radius`）．遮蔽はこれまで
どおりレイキャストで直接検証し，全 10 条件で 100% 遮蔽を確認した（`verify_baffle_occlusion`
の LED サンプルリングは円板の傾きに追従するよう一般化した）．

**立方体 L=120 のみバッフルが壁に 2.35mm 食い込む**（殻厚 3mm 以内）．LED が壁際にあるため
板の手前側の縁への視線が壁とほぼ平行に走り，それを遮る円板は壁まで届く必要がある．実物の
積分球の「壁に取り付けたバッフル板」と同じ解釈で許容した（外殻の貫通は生成時に検査して弾く）．

## 結果 1 — 非対称はサイズとともに減衰する（仮説成立）(Asymmetry Decays with Size)

非対称の定量には TEST_16 の方位フーリエ機構を m=1 に適用した．ズレ方向が +X と分かって
いるので，**板軸フレームの符号付き係数 a1**（正＝LED 側が明るい）が非対称を直接与える．
構成は y=0 の鏡映対称なので直交成分 b1 がノイズ対照になる（実測 ≤0.3% に対し信号は
1.6〜7.2%＝10〜40 倍で，確実に実構造）．

| 条件 | a1（オフ軸） | 重心 X | 構造 CoV オフ軸 | 軸上 | Δ |
| --- | --- | --- | --- | --- | --- |
| 球 r=88 | −3.90% | −0.0158 | 0.0304 | 0.0359 | −0.0056 |
| 球 r=100 | −4.00% | −0.0166 | 0.0299 | 0.0310 | −0.0011 |
| 球 r=135 | −3.41% | −0.0142 | 0.0253 | 0.0230 | +0.0023 |
| 球 r=170 | −2.69% | −0.0115 | 0.0203 | 0.0193 | +0.0011 |
| 球 r=250 | **−1.63%** | −0.0069 | 0.0134 | 0.0145 | −0.0011 |
| 立方体 L=120 | −6.16% | −0.0280 | 0.0540 | 0.0379 | +0.0161 |
| 立方体 L=160 | **−7.22%** | −0.0311 | 0.0547 | 0.0220 | **+0.0327** |
| 立方体 L=200 | −5.39% | −0.0236 | 0.0416 | 0.0163 | +0.0253 |
| 立方体 L=280 | −3.25% | −0.0137 | 0.0254 | 0.0109 | +0.0144 |
| 立方体 L=360 | **−2.32%** | −0.0101 | 0.0190 | 0.0090 | +0.0100 |

- 最大サイズで \|a1\| は最小サイズの 4 割程度まで減衰し，重心オフセットも単調減衰する．
  **「大きいほど光源位置の影響が薄まる」は両形状で成立**
- ただしゼロにはならず，最大サイズでも 1.6〜2.3% の傾きが残る
- 非対称のピークは最小サイズではなく 2 番目（球 r=100・立方体 L=160）にある非単調性が
  ある（原因未特定．最小サイズでは板がキャビティの大きな立体角を占め幾何が質的に変わる
  ためと推測）

## 結果 2 — 明るいのは LED の反対側 (Bright Side Is Opposite the LED)

a1 は全条件で**負＝LED 側（+X）が暗い**．直感と逆だが機構は明快で，直接光はバッフルで
遮られているため，板を照らす主成分は「LED が最初に照らす壁＝**反対側（−X）の壁にできる
一次照射キャップ**」である．板は −X 側でそのキャップを近く・正面に見るため，明るさは
LED の反対側に寄る．TEST_11 で特定した一次照射キャップの機構がそのまま非対称の源になる．

## 結果 3 — オフ軸への頑健性は球が勝つ（軸上と逆転）(Sphere Is More Robust Off-axis)

|  | 軸上（TEST_16） | オフ軸（本実験） |
| --- | --- | --- |
| 同面積での優劣 | **立方体**（構造 CoV で球の 0.62〜0.89 倍） | **球**（\|a1\| が立方体の 55〜70%） |
| 位置ずれの総合ペナルティ Δ構造CoV | — | 球 **±0.006 以内＝実質ゼロ**，立方体 **+0.010〜+0.033** |

- 立方体は L=160 でオフ軸の構造 CoV が軸上の **2.5 倍**（0.0220→0.0547）に跳ねるのに対し，
  球は全サイズで軸上とほぼ同水準に留まる
- オフ軸同士の絶対比較でも大サイズでは球が勝つ（r=250: 0.0134 vs L=360: 0.0190）
- 機構: 球は「ランバート光源を壁に置くと球面の直接照度が一様になる」古典的性質を持ち，
  バッフル付きでもその名残で一次照射キャップが広く均される．立方体は平面壁にキャップが
  集中するため非対称が強く出る

**設計上の含意**: LED を軸上に置けるなら立方体が最良（TEST_16）．**配置が軸から外れる
（外れうる）なら球が寛容**．立方体を採用するなら LED の軸上配置精度が効く，という
トレードオフが定量化された．

## 結論 (Conclusions)

- **仮説成立**: 光源位置ずれの影響（m=1 非対称・重心オフセット）はキャビティサイズと
  ともに減衰する．最大サイズで最小サイズの約 4 割
- **明るくなるのは LED の反対側**（バッフル遮蔽下では一次照射キャップが非対称の源）
- **オフ軸頑健性は球 > 立方体**で，軸上の優劣と逆転する．球は位置ずれの総合ペナルティが
  実質ゼロ，立方体は構造 CoV が最大 2.5 倍に悪化する
- 実機設計は「立方体 + 軸上配置」か「球 + 配置自由度」の二択構造になる

## 限界・注意点 (Limitations)

- **オフ軸位置は 1 点のみ**（軸中点の高さ・壁面密着）．軸上→壁面の中間位置や高さ違いは
  未測定で，「ずれ量に対する感度曲線」はまだ描けていない
- **全条件 1 シードのみ**（TEST_15/16 と共通の宿題）．ただし a1 の標準誤差は 0.04〜0.08% で
  信号（1.6〜7.2%）に対し十分小さい
- 非対称ピークの非単調性（結果 1）は原因未特定
- オフ軸版は軸上より約 2 割暗い（バッフルが大きめ＋斜め照射）．球のレンダは 1 条件約 460 秒と
  立方体（約 280 秒）より遅い
- 材質は旧条件（ρ=0.85 blendbsdf）．絶対値の実機予測には校正値での引き直しが必要

## 失敗パターン・方法論の学び (Pitfalls and Methodology)

- **壁際光源のバッフルは壁に食い込ませないと成立しないことがある**．板の手前縁への視線が
  壁とほぼ平行になるため．「壁付きバッフル板」として殻厚以内の食い込みを許容し，外殻の
  貫通だけを生成時チェックで弾く設計にした
- **遮蔽検証の LED サンプルは円板の向きに追従させること**．従来実装は XY 平面リング固定で，
  傾いた円板では発光面上に無いレイを検証してしまう（`led_samples` を direction 基準の
  正規直交基底で一般化．軸沿いでは従来と同一）
- **方向が既知の非対称は符号付きフーリエ係数で測るのが最も感度が高い**．m=4（TEST_16）と
  同じ設計（鏡映対称でゼロのはずの直交成分をノイズ対照に使う）が m=1 でもそのまま機能した

## 次にやること (Next Steps)

1. ずれ量の感度曲線: LED 位置を軸上（底面中心）→壁面まで連続に振る中間スイープ
2. 非対称ピークの非単調性（球 r=100・立方体 L=160）の原因特定
3. 立方体でオフ軸を許す設計の探索（例: バッフルの非対称化・LED 側壁の局所形状）
4. ノイズフロア（seed 違い）・校正材質での引き直し（TEST_15/16 と共通）

## 再現コマンド (Reproduction)

```bash
# 幾何生成のみ（3D 配置確認用．レンダはしない）
uv run python scripts/sweep_offaxis_led.py --prepare-only

# 半割り断面（レンダ前の配置確認）と遮蔽検証
uv run python scripts/show_scene_cutaway.py --scene configs/_tmp_offaxis/scene_offaxis_cube_L200.yaml
uv run python scripts/verify_baffle_occlusion.py --scene configs/_tmp_offaxis/scene_offaxis_cube_L200.yaml

# スイープ本体（球 5 + 立方体 5．既存結果は再利用される）
uv run python scripts/sweep_offaxis_led.py

# 解析図 + 集約表（軸上スイープとの比較込み）
uv run python scripts/build_offaxis_comparison.py
```

出力: `output/offaxis_led_sweep/`（条件別 10 ディレクトリ + `summary.csv` +
`offaxis_comparison.png`）．レンダ前 3D 確認は `_placement_check/cutaway_*.png`．

## 参照 (References)

- [TEST_16_立方体キャビティ導入と球との比較](TEST_16_立方体キャビティ導入と球との比較.md): 軸上の優劣と方位フーリエ解析の設計
- [TEST_15_バッフル導入と球半径スイープ](TEST_15_バッフル導入と球半径スイープ.md): board_baffle 構成と評価の作法
- [TEST_11_球体筐体実験](TEST_11_球体筐体実験.md): 一次照射キャップの機構
- [TEST_02_シミュレーション実行記録](TEST_02_シミュレーション実行記録.md): 出力ディレクトリの索引
