2

これがStackOverflowに属するべきかどうかは完全にはわかりませんが、ここで説明します。

HTML5<canvas>オブジェクトを使用して、3Dで単純なバージョンのtic-tac-toeを作成しています。最初のプレーヤーは十字の記号を使用し、2番目のプレーヤーは円の記号を使用します。重要なのは、円形をどのように遠近法で表現するかがわからないということです。

現在、私が使用している方法は、可能な限り多くの角度で(ある程度は)正多角形を作成し、それらの点の間に直線を描いて円を偽造することです。これらの点の座標(角度)は、正弦/余弦を使用して計算しました。

6つの角度を使用:

ここに画像の説明を入力してください

50の角度を使用する(十分に円のように見えます):

ここに画像の説明を入力してください

これはうまく機能しますが、円をうまく偽造するにはかなりのポイントが必要です。また、ボールを作るともっと困ります。たとえば、ウィキペディアの写真は、ポイントが多い場合でも、表面がかなり「ブロック状」であることを示しています。http: //en.wikipedia.org/wiki/File :Sphere_wireframe.svg

より実用的な方法でリアルに見える円形を作成できるように、おそらく点なしで、より効果的に円を遠近法で見る方法があるかどうか疑問に思いました。

提案を事前に感謝します。

4

3 に答える 3

2

円の多角形近似は実用的な方法です。座標を計算し、それらに透視変換を適用するのは非常に簡単です。おそらくその解決策に固執する必要があります。

そうは言っても、あなたが数学的なことに興味があるなら、あなたが考えているうさぎの穴はとてもクールです. 球と楕円を含むすべての 2 次曲面は、4x4 行列で表すことができます。それだけでなく、4x4 に変換すると、すべての標準的な 4x4 変換行列を適用できます (単なる乗算ではありません)。IIRC では、それらに透視変換を適用することもできますが、結果はまだ 2 次曲面です。これは、3D の世界で 2D 形状を扱う場合にはあまり役に立ちません。ただし、円は円柱と平面の交点であり、両方とも変換できるため、問題の解決策があるはずです。

これは、二次方程式の表現と変換を説明するリンクです

あなたが示したように、地面の円の透視投影は、多くの場合、画面空間で回転した楕円です。変換方法はありませんが、存在すると信じており、現在のものよりも複雑です。

于 2011-02-04T22:18:02.230 に答える
1

遠近法で見た場合、円は楕円です。 ここに説明があります。

于 2011-02-06T22:58:33.223 に答える