▍AI Dev Lab
WindowLight

日当たりシミュレーションを作る:窓の光を床へ投影する幾何モデル

WindowLightの開発記録。太陽位置近似から窓の4隅を床へ投影し、凸多角形を部屋で切り取る設計を解説。国立天文台の16時刻との限定照合、大気差・低高度・実際の採光との違い、SVGと設定の再編集を整理します。

·decision改善·stage公開中

#日当たりシミュレーションを作る:窓の光を床へ投影する幾何モデル

夏の正午は窓際に、冬の正午は部屋の奥に光が入る。その違いを読むだけでなく、窓の向き・高さ・時刻を変えて試せるようにしたのが WindowLight です。

空色の設計図、窓の青、光の黄、赤土のアクセントを使い、同じ縮尺の2日分の床を並べました。主役は太陽軌道図ではなく「この窓から、床のどこへ届くか」です。

#太陽の方向と、窓から床への投影

太陽の方向を東・北・上の3成分で表します。窓の外向き方向への内積が正でなければ、光は窓の正面側から入りません。太陽が地平線以下なら夜、高度1°未満は近似の対象外です。

窓の各隅から太陽と反対の方向に直線を伸ばします。高さを上向き成分で割れば、床に到達するまでの倍率が分かり、床の点が得られます。4点を結ぶ四辺形はそのままでは部屋の外へはみ出すため、部屋の4辺で順に切り取ります。面積は頂点列の靴紐公式で求めます。

窓下端1m・高さ2m、真正面の太陽高度45°なら、光は床の1〜3mに届きます。窓幅2mなら面積4㎡です。この手計算を単体テストの基準にして、絵がそれらしく見えるだけの実装を避けました。

#近似を、精密さのふりで売らない

太陽位置には NOAAの簡易式 を使っています。年内角度から赤緯と均時差を近似し、経度・日本時間から時角を求めます。うるう年は366日で扱い、午前と午後の方位を逆にしないようベクトルのatan2を使います。

NOAAの説明には保守終了・精度保証なしの注意があります。別の高精度計算機の精度説明を、この簡易式の保証に転用してはいけません。

国立天文台「こよみの計算」の東京と同じ座標で、2024年3月20日・2026年6月21日と12月22日の16時刻を照合しました。参照高度9.9°以上の範囲では高度差が最大約0.20°、方位差が約0.38°でした。ただし参照は大気差を含み、こちらは含まないため、計算条件も完全には一致しません。全日時・全都市の誤差上限ではなく、実測検証でもありません。

地平線近くでは影の投影距離が急激に伸びます。巨大な値を黙って制限すると、誤った絵を正常な結果として見せてしまいます。そこで高度1°未満は「対象外」とし、面積差や保存画像にも0㎡とは書きません。

#明るさの診断ではない

このモデルは周辺建物・樹木、天気、庇、壁厚、ガラス、家具、天空光や反射光を扱いません。床の直射範囲が0でも部屋が暗いとは限らず、範囲が大きくても照度が高いとは限りません。実物件の選定・建築採光基準・発電量の判断には使えません。

日当たりという言葉には「実際の家がどれだけ明るいか」という期待もあります。用途説明とFAQでこの違いを明記し、検索向けのタイトルだけを広くして誤解させないようにしました。

#結果と、変更できる条件を残す

SVGには都市・時刻・窓の寸法・日付・部屋の寸法・計算根拠・限界を残します。画像だけで条件が失われないためです。設定JSONも保存でき、入力して再編集できます。

復元はバージョン・日付・都市・数値範囲・窓幅と部屋幅の関係を検査してから反映します。失敗した設定で現在の比較を上書きしません。無効な入力中は最後の有効な条件の表示と明記し、保存を停止します。離脱時には保存用URLとタイマーを解放します。

#次の拡張にも、境界を保つ

今後、庇や窓位置の比較を追加する余地があります。ただし、要素を増やしただけで「現物に近い」と主張することはできません。幾何モデルと実際の採光を区別し、操作・計算・保存画像を同じ条件で検査する方針を維持します。

家具配置や通路の計画を試すなら RoomWeave、太陽系の公転を眺めるなら AstroCast と目的が異なります。

[ ./next_action ]

読んだら、 WindowLight を実際に動かす。

この開発ログは WindowLight をどう作ったかの記録です。 読み終わったらそのままサービス本体へ戻って、 実物で価値を確かめてください。

[ ./related_logs ]

関連する開発ログ

all logs →
ShadowTwin

立体パズルの別解を作る:同じ影と最少の積み木

ShadowTwinの開発記録。3方向の図から別々の最少配置を2つ探す仕組み、5問の独立全探索、スマホの横並び比較、保存・再編集と入力検査を解説します。実照明の計算や能力診断ではありません。

read log →
SlitCard

スリットアニメーションを作る:4コマの合成と透明原稿の設計

SlitCardの開発記録。4コマの帯を交互に合成し、すき間と黒帯で別のコマを見せる仕組みを解説。同縮尺の台紙・透明シートSVG、50mm確認線、手動プレビュー・初期非表示、再編集と実出力検査を整理します。

read log →
GridLights

電源構成の比較を作る:割合と実量を100個の電球で読み解く

電源構成比較GridLightsの開発記録。12か国の年次発電データを最大剰余法で100個の電球に変換し、割合とTWhを比較する設計を解説。欠損を0補完しない7分類、予想と実値、出典付きSVGと実データ検証を整理します。

read log →
SoundLoom

音のお絵かきを作る:実WAVから絵を測り直す設計

音のお絵かきの開発記録。描画を正弦波のPCMとWAVへ変換し、保存音声の周波数をGoertzel法で測って比較する仕組みを解説。音量・測定窓・量子化の限界と、編集・離脱時の古い結果を抑止する検証を整理します。

read log →
MazeLoom

宝探し迷路を作る:寄り道まで含めた最短ルートの探索

宝探し迷路の開発記録。通路を木として生成し、現在地と3つの宝の取得状態を組み合わせて最短ルートを探す仕組みを解説。問題コードの版固定、画面と解答付きPDFの一致、手数と印刷の検証を整理します。

read log →
BoxNet

箱の型紙と折り図を同じ面から作る設計

小箱の型紙作成の開発記録。面・のりしろ・折り線を共有し、組立確認とA4実寸PDFを作る設計を解説。用紙外を縮小しない判定、校正線、紙厚を扱わない限界、出力検査を整理します。

read log →