7

Delphi の必要最小限の古い学校の 3D メソッドの例を教えてくれる人はいますか? openGL、firemonkey、または外部ライブラリ (バニラ キャンバス コーディング) を使用していません。私がやりたいことは、共通のオリゴを中心に X 数のポイントを回転できるようにすることです。私が昔から覚えていることから、オリゴが常に0,0になるように(3Dポイントで)左から右を引きます-次に計算を実行し、最後に左/上のピクセルオフセットを追加して実際の画面位置を取得します。

私が探しているのは、一連の小さなアドホック ルーチンです。

  • RotateX(aValue:T3dpoint; degr:float):T3dPoint;
  • RotateY(--/--)
  • RotateZ(--/--)

これらの関数を使用すると、古い「回転する 3D キューブ」を簡単に作成できます (8 ポイント)。

また、目に見える「顔」を把握するための機能はありますか? 塗りつぶされたベクトル キューブが必要な場合は、(距離/オーバーラップに基づいて) 可視領域を抽出する必要があると思いますが、これは塗りつぶされたポリゴンの X 数として描画されますか? そして、これらは間違いなく、混乱しないように深さでソートする必要があります.

例えば:

  • PointsToFaces(const a3dObject:T3dPointArray):TPolyFaceArray;
  • SortFaces(Const aFaces:TPolyFaceArray):TPolyFaceArray;

どんな助けでも大歓迎です!

4

2 に答える 2

8

以下は、 efg's ReferenceからのDelphi Mathの古き良きリソースです。グラフィック プロジェクト のリストを見つけることができます。2D/3D ラボ ベクター グラフィックス: 平行移動、回転、スケーリング、ビュー変換、同次座標、クリッピング、投影、ベクター、行列など...

于 2012-02-12T20:49:20.737 に答える
5

私は数年前に、ナイーブな線形代数のみを使用して、単純な3Dレンダリングの「エンジン」を作成しました。ただし、最も効率的な方法ではない可能性があります。適度にスムーズに移動できるようにしたい場合は、数千ポイントが限界です。サンプルEXE必要に応じてコードを取得できますが、それほどきれいではない可能性があります。

于 2012-02-12T19:03:51.797 に答える