diff --git "a/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" "b/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" index eb7d166..79a1a5c 100644 --- "a/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" +++ "b/docs/06_TEST/TEST_02_\343\202\267\343\203\237\343\203\245\343\203\254\343\203\274\343\202\267\343\203\247\343\203\263\345\256\237\350\241\214\350\250\230\351\214\262.md" @@ -87,7 +87,7 @@ | `output/sphere_radius_sweep/board_baffle_similar_g2/` (3 ディレクトリ) | TEST_15 | 同上の `--cavity similar_g2` 版(キャビティ全体を半径に相似 center_z=-0.92r・cut_z=-0.40r,ロフトを 5 次 Hermite にして接合部で曲率まで球に一致.r ∈ {100, 170, 250}mm) | 同上 | 外側の落ち込みが半減(r=250 で 18.0%→8.8%)し,輪帯 min/max が半径とともに**改善**に転じる(0.852→0.883→0.891) — [TEST_15](TEST_15_バッフル導入と球半径スイープ.md) 参照 | **接合を自然にすると傾向が逆転**.r=250 の 0.891 は全条件で最良.残り 7 半径は未実行 | | `output/sphere_radius_sweep/board_baffle_similar_radial/` (10 ディレクトリ) | TEST_15 | 同上の `--cavity similar_radial` 版(相似スケールのまま**ロフトのリム接線を半径方向(水平)**に取り,板直下の「喉」を無くした形.ロフトを (ρ, z) の 2 次元パラメトリック Hermite 化して実現.r ∈ 全 10 半径) | `configs/eval_baseline_dng_target_shape.yaml` | 外側の落ち込みが r=250 で 2.27%(fixed_cut 17.97% の 8 分の 1).輪帯 min/max は r=95 以降単調改善し r=250 で **0.944**,構造 CoV **0.0145** — [TEST_15](TEST_15_バッフル導入と球半径スイープ.md) 参照 | **全条件で最良**.旧 axial_wall r=100(0.0579 / 0.797)の 4.0 倍.内側・外側とも半径で改善し頭打ち未到達.ただし r≲95 では fixed_cut に負ける | | `output/sphere_radius_sweep/*/summary.csv`・`{sweep_overview,radial_comparison}.png`・`cavity_comparison.png`・`cavity_{design,effect}_comparison.png`・`rim_tangent_comparison.png`・`geometry_check_*.png`・`cutaway_*.png` | TEST_15 | — | — | 条件別の集約 CSV(幾何・生 mean・各指標)/輝度マップ一覧 + CoV 分解カーブ/同心円プロファイル比較/接合設計の断面 before-after/幾何確認図・半割り断面 | `scripts/build_radius_sweep_visual.py`・`build_radial_comparison.py`・`build_cavity_comparison.py`・`build_radius_geometry_figure.py`・`show_scene_cutaway.py` の出力.輝度マップは 20 分割の輪帯平均の最大値を 1.0 に正規化(画素最大値は firefly に張り付くため).レンダ前 3D 確認(CLAUDE.md 必須ルール)の記録を兼ねる | -| `output/cube_size_sweep/board_baffle/` (9 ディレクトリ) | TEST_16 | `configs/_tmp_cube_size/scene_board_baffle_L*.yaml`(`scripts/sweep_cube_size.py` が生成.筐体を立方体(内寸 L・天井 z=0・底面 z=-L)に変えた board_baffle 構成.LED は底面中心に密着し評価板向き,バッフルは球版と同じ閉形式.L ∈ {120〜360}mm の全 9 条件.材質・spp=1024・d=16 は据え置き.**先行 5 条件は mitsuba 3.8.0・後続 4 条件は 3.7.1**=SAC ブロックによる固定,アンカー検証済み) | `configs/eval_baseline_dng_target_shape.yaml` | L=360 で構造 CoV **0.0090**・輪帯 min/max **0.964**=全条件を通じた最良.同一内面積の球(対数内挿)に対し構造 CoV 比 0.62〜1.05・全 9 条件で単調改善 — [TEST_16](TEST_16_立方体キャビティ導入と球との比較.md) 参照 | **同じ内面積なら立方体が球より均一**(L=120 のみ互角)を実証.L=280 で球の全 10 条件の最良(r=250)を超える.遮蔽は 55,473 本 100%・法線逸脱 ≤0.06° を事前検証済み | +| `output/cube_size_sweep/board_baffle/` (10 ディレクトリ) | TEST_16 | `configs/_tmp_cube_size/scene_board_baffle_L*.yaml`(`scripts/sweep_cube_size.py` が生成.筐体を立方体(内寸 L・天井 z=0・底面 z=-L)に変えた board_baffle 構成.LED は底面中心に密着し評価板向き,バッフルは球版と同じ閉形式.L ∈ {120〜360}mm の全 10 条件(L=220 は発表資料整理時に球スイープと同数に揃える 10 条件目として追加).材質・spp=1024・d=16 は据え置き.**先行 5 条件は mitsuba 3.8.0・後続 5 条件は 3.7.1**=SAC ブロックによる固定,アンカー検証済み) | `configs/eval_baseline_dng_target_shape.yaml` | L=360 で構造 CoV **0.0090**・輪帯 min/max **0.964**=全条件を通じた最良.同一内面積の球(対数内挿)に対し構造 CoV 比 0.62〜1.05・全 10 条件で単調改善 — [TEST_16](TEST_16_立方体キャビティ導入と球との比較.md) 参照 | **同じ内面積なら立方体が球より均一**(L=120 のみ互角)を実証.L=280 で球の全 10 条件の最良(r=250)を超える.遮蔽は 55,473 本 100%・法線逸脱 ≤0.06° を事前検証済み | | `output/cube_size_sweep/_anchor_check_mitsuba371/L120/` | TEST_16 | `configs/_tmp_cube_size/scene_board_baffle_L120.yaml`(本体スイープと同一.mitsuba **3.7.1** でレンダ) | 同上 | 3.8.0 版と比較して構造 CoV 一致(0.0379)・輪帯 min/max 差 +0.0002・輪帯プロファイル最大差 1.17σ | mitsuba 3.8.0→3.7.1 固定(SAC が `IlmThread-mitsuba.dll` をブロック)の等価性検証アンカー.バージョン混在の妥当性の根拠 | | `output/offaxis_led_sweep/` (10 ディレクトリ) | TEST_17 | `configs/_tmp_offaxis/scene_offaxis_*.yaml`(`scripts/sweep_offaxis_led.py` が生成.LED を**深さ方向軸の中点の高さ・+X 側の壁面**に置き板中心 (0,0,-4.5) へ向けた board_baffle 構成.球 similar_radial r ∈ {88, 100, 135, 170, 250} + 立方体 L ∈ {120, 160, 200, 280, 360}.バッフルは視線上 10mm・数値サイジング.材質・spp=1024・d=16 据え置き・mitsuba 3.7.1) | `configs/eval_baseline_dng_target_shape.yaml` | m=1 符号付き a1 が全条件で負(LED 側が暗い)= -1.6〜-7.2%.サイズとともに約 4 割まで減衰.位置ずれの Δ構造CoV は球 ±0.006 以内・立方体 +0.010〜+0.033 — [TEST_17](TEST_17_オフ軸LED配置の影響とサイズ依存.md) 参照 | **オフ軸頑健性は球 > 立方体(軸上と逆転)**を実証.遮蔽は全 10 条件 55,473 本 100%(傾き追従の LED サンプルに一般化済み) | | `output/offaxis_led_sweep/{summary.csv,offaxis_comparison.png}`・`_placement_check/cutaway_*.png` | TEST_17 | — | — | 条件別集約 CSV/解析図(輝度マップ 2 行 + a1・重心・構造 CoV の内面積依存を軸上と重ね描き)/レンダ前 3D 確認の半割り断面 10 枚 | `scripts/build_offaxis_comparison.py`・`show_scene_cutaway.py` の出力.レンダ前 3D 確認(CLAUDE.md 必須ルール)の記録を兼ねる | diff --git "a/docs/06_TEST/TEST_16_\347\253\213\346\226\271\344\275\223\343\202\255\343\203\243\343\203\223\343\203\206\343\202\243\345\260\216\345\205\245\343\201\250\347\220\203\343\201\250\343\201\256\346\257\224\350\274\203.md" "b/docs/06_TEST/TEST_16_\347\253\213\346\226\271\344\275\223\343\202\255\343\203\243\343\203\223\343\203\206\343\202\243\345\260\216\345\205\245\343\201\250\347\220\203\343\201\250\343\201\256\346\257\224\350\274\203.md" index cacbaa9..518d044 100644 --- "a/docs/06_TEST/TEST_16_\347\253\213\346\226\271\344\275\223\343\202\255\343\203\243\343\203\223\343\203\206\343\202\243\345\260\216\345\205\245\343\201\250\347\220\203\343\201\250\343\201\256\346\257\224\350\274\203.md" +++ "b/docs/06_TEST/TEST_16_\347\253\213\346\226\271\344\275\223\343\202\255\343\203\243\343\203\223\343\203\206\343\202\243\345\260\216\345\205\245\343\201\250\347\220\203\343\201\250\343\201\256\346\257\224\350\274\203.md" @@ -1,6 +1,6 @@ # 立方体キャビティ導入と球との比較 (Cube Cavity Introduction and Comparison with Sphere) -球ではなく**立方体**のキャビティを新設し,一辺 L を 120〜360mm の全 9 条件でスイープして, +球ではなく**立方体**のキャビティを新設し,一辺 L を 120〜360mm の全 10 条件でスイープして, 球(TEST_15 の最良設計 `similar_radial`)と**内面積で対応づけて**比較した(2026-08-31〜09-01). 「球のほうが理想積分球だから有利」という素朴な予想は成り立たず,**同じ内面積なら立方体が 一貫して球より均一**(構造 CoV で球の 0.62〜0.89 倍,L=120 のみ互角)で,L=280 の時点で @@ -58,8 +58,9 @@ 共面(ゼロ厚)を避けている. L の下限は 102mm(評価板 99×102mm が上面に収まる限界).天井余白を考慮し 120mm から振った. -実行は 2 段階で,まず傾向を安く見るため両端+中間の 5 条件(120/160/200/280/360), -傾向が確認できた後に残り 4 条件(140/180/240/320)を埋めた(ユーザー指示). +実行は段階的で,まず傾向を安く見るため両端+中間の 5 条件(120/160/200/280/360), +傾向が確認できた後に残り 4 条件(140/180/240/320),さらに発表資料の整理時に +球スイープと同数(10 条件)に揃える 10 条件目として L=220 を追加した(いずれもユーザー指示). | L [mm] | LED_z | 内面積 [mm²] | 開口比 | バッフル R | | --- | --- | --- | --- | --- | @@ -68,12 +69,13 @@ | 160 | −159.5 | 154,194 | 6.55% | 6.55mm | | 180 | −179.5 | 194,994 | 5.18% | 6.01mm | | 200 | −199.5 | 240,594 | 4.20% | 5.59mm | +| 220 | −219.5 | 290,994 | 3.47% | 5.24mm | | 240 | −239.5 | 346,194 | 2.92% | 4.95mm | | 280 | −279.5 | 470,994 | 2.14% | 4.50mm | | 320 | −319.5 | 614,994 | 1.64% | 4.16mm | | 360 | −359.5 | 778,194 | 1.30% | 3.90mm | -**レンダラのバージョンについて**: 先行 5 条件は mitsuba 3.8.0,後続 4 条件は 3.7.1 で +**レンダラのバージョンについて**: 先行 5 条件は mitsuba 3.8.0,後続 5 条件(140/180/220/240/320)は 3.7.1 で レンダしている.2 段階目の直前に Windows Smart App Control が 3.8.0 同梱の `IlmThread-mitsuba.dll` 1 個をレピュテーション判定でブロックし始め(vtk 9.6.1 と同型= [TEST_13](TEST_13_物理モデル健全性の一括監査.md) 検査 8.ファイルは 2 週間無変更のまま @@ -87,10 +89,10 @@ レンダ前に TEST_13 / TEST_15 で常設した検証を一通り当てた. -- watertight: 全 9 筐体+バッフルで確認(生成時に強制チェック) +- watertight: 全 10 筐体+バッフルで確認(生成時に強制チェック) - 3D 配置確認: 半割り断面をユーザーに提示し OK を得てからレンダ(CLAUDE.md 必須ルール. 後続 4 条件は承認済みパラメトリック設計の中間サイズとして同様に断面生成・確認) -- 遮蔽: 板全面 41×41 点 × LED 33 点 = 55,473 本のレイキャストが**全 9 条件で 100% 遮蔽**(最小余裕 9.6〜10.5mm) +- 遮蔽: 板全面 41×41 点 × LED 33 点 = 55,473 本のレイキャストが**全 10 条件で 100% 遮蔽**(最小余裕 9.6〜10.5mm) - 法線監査: `audit_scene_normals` で裏向き面 0・シェーディング法線逸脱 ≤0.06°(L=120 / 360 の 2 条件) ### 「同じ大きさ」の定義 (Size-matching Definition) @@ -117,7 +119,7 @@ ## 結果 2 — 同一内面積で立方体が球を上回る (Cube Beats Sphere at Equal Area) -立方体 9 条件の実測(構造 CoV / 輪帯 min/max は TEST_15 と同一の定義・スクリプトで算出): +立方体 10 条件の実測(構造 CoV / 輪帯 min/max は TEST_15 と同一の定義・スクリプトで算出): | L [mm] | 生 CoV | 構造 CoV | 輪帯 min/max | 中心/周辺比 | 勾配 | 生 mean | | --- | --- | --- | --- | --- | --- | --- | @@ -126,13 +128,14 @@ | 160 | 0.0842 | 0.0220 | 0.919 | 1.060 | 5.68% | 0.801 | | 180 | 0.0916 | 0.0184 | 0.930 | 1.050 | 4.74% | 0.643 | | 200 | 0.0939 | 0.0163 | 0.934 | 1.044 | 4.19% | 0.525 | +| 220 | 0.1026 | 0.0147 | 0.944 | 1.039 | 3.78% | 0.437 | | 240 | 0.1077 | 0.0135 | 0.945 | 1.035 | 3.41% | 0.368 | | 280 | 0.1143 | 0.0109 | 0.960 | 1.026 | 2.55% | 0.272 | | 320 | 0.1296 | 0.0098 | 0.961 | 1.022 | 2.13% | 0.209 | | 360 | 0.1355 | **0.0090** | **0.964** | 1.018 | 1.76% | 0.165 | 構造 CoV・輪帯 min/max・中心/周辺比・勾配のいずれも **L に対して厳密に単調改善**で, -9 本の輪帯プロファイルは交差せずサイズ順に並ぶ(球 `similar_radial` と同じ素直な効き方). +10 本の輪帯プロファイルは交差せずサイズ順に並ぶ(球 `similar_radial` と同じ素直な効き方). 生 CoV が L とともに増えるのは輝度低下(おおむね 1/面積)による MC ノイズで,TEST_15 の作法 どおり構造成分で比較する.内面積を横軸に球 `similar_radial`(10 条件)と重ね,対数内挿で @@ -145,6 +148,7 @@ | 160 | 0.0220 | 0.0271 | 0.81 | 0.919 | 0.891 | | 180 | 0.0184 | 0.0240 | 0.77 | 0.930 | 0.901 | | 200 | 0.0163 | 0.0217 | 0.75 | 0.934 | 0.916 | +| 220 | 0.0147 | 0.0201 | 0.73 | 0.944 | 0.920 | | 240 | 0.0135 | 0.0189 | 0.72 | 0.945 | 0.921 | | 280 | 0.0109 | 0.0166 | **0.66** | 0.960 | 0.939 | | 320 | 0.0098 | 0.0152 | 0.65 | 0.961 | 0.944 | @@ -177,6 +181,7 @@ | L=160 vs r=110 | −0.058% | −0.032% | −0.026% | | L=180 vs r=135 | −0.074% | +0.012% | −0.086% | | L=200 vs r=150 | +0.017% | −0.037% | +0.054% | +| L=220 vs r=150 | −0.004% | −0.037% | +0.033% | | L=240 vs r=170 | −0.082% | −0.049% | −0.033% | | L=280 vs r=200 | +0.105% | −0.073% | +0.177% | | L=320 vs r=250 | −0.037% | −0.020% | −0.017% | @@ -276,7 +281,7 @@ uv run python scripts/analyze_fourfold_component.py ``` -出力: `output/cube_size_sweep/board_baffle/`(条件別 9 ディレクトリ + `summary.csv`). +出力: `output/cube_size_sweep/board_baffle/`(条件別 10 ディレクトリ + `summary.csv`). mitsuba 3.7.1↔3.8.0 のアンカー比較は `output/cube_size_sweep/_anchor_check_mitsuba371/L120/`. 比較図は `cube_vs_sphere.png`,m=4 解析は `fourfold_component.png`, レンダ前 3D 確認は `output/cube_size_sweep/_placement_check/cutaway_L*.png`. diff --git a/scripts/sweep_cube_size.py b/scripts/sweep_cube_size.py index 850e4dd..f066fee 100644 --- a/scripts/sweep_cube_size.py +++ b/scripts/sweep_cube_size.py @@ -71,7 +71,8 @@ RUN_DIR = "board_baffle" # 評価板 99×102mm が上面に収まる下限は L=102.天井の余白(Y 側片 9mm)を考え 120 から振る -SIZES = [120.0, 140.0, 160.0, 180.0, 200.0, 240.0, 280.0, 320.0, 360.0] +# (L=220 は後から追加した 10 条件目.球スイープと同数にして図のまとまりを良くするため) +SIZES = [120.0, 140.0, 160.0, 180.0, 200.0, 220.0, 240.0, 280.0, 320.0, 360.0] # 板の実面積とリム開口(板輪郭から RIM_INSET 内側)の面積(mm^2).内面積の集計に使う BOARD_AREA = (2 * BOARD_HALF[0]) * (2 * BOARD_HALF[1])