0

xzプレーン(-8.0f、0.0f、-8.0f)、(8.0f、0.0f、-8.0f)、(8.0f、0.0f、8.0f)、(-に4つのポイントを持つベースクワッドメッシュがあります8,0.0f.0f、8.0f)。ユーザーに任意の数の次元(たとえば、2x2または64x64)を選択するように依頼した場合、頂点配列を作成し、それらの座標を格納する必要があります。これは、その数のクワッドメッシュを作成する必要があるためです。私はその問題を解決するためのクリーンな解決策を思い付くことができません。また、その頂点を使用してクワッドを作成する必要があるため、後でクワッドメッシュを作成するために使用するには、頂点を作成することが重要です。

だからこれは私が取り組んでいる関数です

void initializeMesh(float originX、float originZ、float xWidth、float zWidth){// originXとZは境界のエッジに沿って移動し、スキャン方式

}

それはまともな考えのように見えますか?xとzの幅は、ユーザー入力の寸法(16.0f/dimXと16.0f/dimY)に基づいて計算され、トラバースを停止するタイミングを把握する必要があります。

4

1 に答える 1

0

次元が 2 の累乗の場合 (たとえば 2x2、64x64 のように)、ループで実行できます。各反復は、各エッジ (隣接する頂点間の垂直または水平スペース) を半分に分割します。新しい頂点の位置は、隣接する頂点の算術平均になります。希望の寸法になるまで繰り返します。新しいノード(頂点)を挿入する必要があり、配列よりもリストの方が簡単で高速になるため、データ構造をリストすることをお勧めします。

頂点の順序を台無しにすることはなく、頂点属性 (テクスチャ座標など) をサポートするように拡張することもできます。これらは算術平均にもなります。

于 2012-11-19T07:34:16.690 に答える