teardown は何をしますか?
あなたは実機を、実数のみに基づいて部品ごとに再構築し、単一の物理状態から駆動し、その周りにエンジニアリングダッシュボードを構築します。結果は、イラストではなく、本物のシミュレーターとして読めるものでなければなりません。決して手順を省略せず、マークなしで数値を発明しないでください。
入力
- 機械(名前の付いた実機モデルが最適:例「Chevrolet 350 small-block」「Mantis hexapod」「Airbus A320 main gear」)。
- 実機の参考写真1枚。ユーザーが添付した場合はそれを使用します。添付がない場合は、提供を依頼してください。ユーザーが提供できない場合は、自由にライセンスされた写真を1枚見つけてください(Wikimedia Commons、ファイルページでライセンスを確認)、作成者、ライセンス、URLを記録します。モデリングの前に写真を確認してください:プロポーション、部品レイアウト、色、可動部分。
ワークフロー(順番に実行)
- 特定。 正確な機械とバリアントを特定します。1行で選択したものを述べてください。
- 最初に実数、1つのデータブロック。 すべてのジオメトリの前に、
DATAブロックを調査して記述します。構築で使用するすべての寸法、質量、比率、速度、角度、タイミングを、それぞれkind(published、derived、estimated)と番号付きソースとともに記述します。references/research.mdを読んでください。ルール:メーカーシート、マニュアル、規格、論文、記録機関を優先します。可能な場合は2つのソースを相互参照します。写真からスケーリングした数値はestimatedです。他の値から計算した数値はderivedです。このブロックを、構築前にチャットで短いテーブルとしてユーザーに表示します。 - キットから始める。
kit/template.htmlを出力フォルダに<machine>-live.htmlとしてコピーし、kit/three.jsを隣にコピーします。MACHINE:CSS、MACHINE:DASH、および<script id="machine">ブロックのみを編集します。キットは、ステージ、three.jsセットアップ、シンプルなオービット、カットアウェイ、ゲージ、およびクロックを提供します。APIについてはreferences/dashboard.mdを読んでください。 - 数値から部品を構築する。 すべてのメッシュ寸法は、
N.<key>(データブロック)またはコードに隣接して書かれた導出値から取得します。実物に対応するものには、マジックナンバーは使用しません。写真のプロポーションと部品形状に合わせます。kitのヘルパー(TD.span、押し出し形状、TD.glow)を使用します。 - 単一の物理状態がすべてを駆動する。 最小限の統合状態(クランク角度、移動距離、時間、バルブ位置)を定義します。
step()がそれを統合し、derive()が実際の運動学(references/kinematics.md)を使用して機械全体(位置、角度、速度、力、圧力)を計算します。pose()は派生値をメッシュにコピーするだけです。可動部にMath.sin(time)の装飾は使用しません。 - 同じ状態を中心としたダッシュボード。 すべての読み取り値、チャート、ストリップ、バーは、派生オブジェクト
Sから読み取られ、独自のタイマーからは読み取られません。1サイクルにわたるチャートは、同じソルバーをサンプリング位相で呼び出すことによって計算されます。含めるもの:ヘッドライン番号、現在のフェーズ/ストロークラベル、角度またはフェーズに対する少なくとも1つのチャート(移動カーソル付き)、パーツごとのセレクター、ソース付きデータブロック、クレジット付き参照写真、およびコントロール。レイアウトとゲージの選択:references/dashboard.md。 - カットアウェイ。 アクションを隠している部分を通してクリッピングプレーンカットアウェイ(
TD.cutaway)を追加します。中空シェルにして壁断面のみがキャップ色を示すようにし、前面にあるものはゴースト表示にし、隠れたアクション(燃焼フラッシュ、オイルカラム、ギアの噛み合い)が見えるようにします。references/cutaway.md。 - 外観。
references/look.mdを適用します(デフォルトはダークSF、リクエストに応じてライトエンジニアリングバリアント)。 - レンダリング静止画による自己チェック。
node kit/stills.mjs <abs html> 0.5,2,4 <abs dir>/check-%.pngを実行します(playwrightが必要。それ以外の場合は、ブラウザツールでページを開き、__renderを呼び出します)。すべてのPNGを読み取ります。修正するまで:コンソールエラーがない、機械がフレーム内に収まり判読できる、カットアウェイが内部を示している、ゲージが静止画間で明らかに異なる(スクリプトは同一のダッシュボードにフラグを立てます)、deterministic: yes。次にreferences/qa.mdを実行します。チェックPNGを削除します。 - 出荷。
node kit/inline.mjs <machine>-live.htmlを実行して、three.jsと画像を<machine>-live.standalone.html(単一のオフラインファイル)に折り込みます。次のもので返信します:ファイル、データブロック(数値+ソース)、写真クレジット、公開値ではなく推定値であるもの。
出力ファイルのハードコントラクト
- ディスクからネットワークなしで開く。three.jsは
window.THREEを公開するクラシックスクリプト(ESモジュールなし、CDNなし)。 window.__render(t):tは秒単位、決定論的、壁時計なし。コントロールをデフォルトにリセットし、固定ステップで0から状態を再統合し、1フレーム描画します。キットのTD.runがこれを行います。バイパスしないでください。- 通常開くと
requestAnimationFrameでライブ再生。コントロールが状態を変更すると、すべてのゲージが追従します。 - デスクトップステージ1600x1000、任意のウィンドウに合わせて拡大縮小。
- データブロック、ソース、写真クレジットがページ上で表示される。
誠実さのルール
- 推定値を公開値として提示しないでください。タグ付けします。
- 公開値が一致しない場合は、1つを選び、もう1つをノートに表示してその旨を明記します。
- 動作が単純にモデル化されている場合(静荷重、理想気体、摩擦なし)、返信で1行でその旨を述べてください。