制御点、線分端点をドラッグして移動できます。ダブルクリックでZ座標を変更できます。

ベジエ曲面と線分の交差/最近点計算

10°
60°

半透明曲面の実装 曲面を三角形に分割して描画 Z軸方向のソートによる適切な重なり順表示 法線ベクトルに基づいた簡易的な陰影付け

外部依存なし Three.jsやその他の外部ライブラリを使用せず、純粋なJavaScriptとCanvas 2Dのみで実装 Vector3クラスを独自に実装し、THREE.jsの依存を完全に排除 シンプルな3D→2D投影 回転行列を使った簡易的な3D投影を実装 Zソートによる奥行き表現 機能は全て保持 ベジエ曲面の表示(塗りつぶしとワイヤフレーム) 制御点と制御多角形の表示 視点の回転(水平・垂直) 線分と曲面の最近点/交点計算

追加した機能は以下の通りです: 制御点のドラッグ機能 制御点、線分端点の上にマウスを置くとカーソルが変わります マウスでドラッグすることで点のXY座標を自在に変更できます ドラッグ中はZ座標を維持し、奥行き感を保ちます Z座標の変更機能 制御点や線分端点をダブルクリックするとZ座標を数値入力できます 現在のZ座標がプロンプトに表示され、より直感的に操作できます インタラクティブな操作感 ポインターを点の上に置くとカーソルが変わり、操作可能な部分を視覚的に示します 点を移動すると交点/最近点の表示がクリアされ、再計算が必要なことを示します ユーザーガイダンス 操作方法の説明をキャンバスの下に表示し、使い方を直感的に理解できるようにしました このプログラムは、マウス操作だけでベジエ曲面の形状を自由に変更でき、曲面と線分の交差/最近点を計算することができます。制御点の位置を変えると曲面の形状がリアルタイムで更新され、様々なパターンでの交差や最近点の関係を視覚的に探索できます。 「交点/最近点を計算」ボタンをクリックすると、現在の形状における最短距離や交点が計算され、緑色のマーカーで表示されます。水平回転と垂直角度のスライダーを使って、異なる角度から結果を確認することもできます。