0

三次元サイコロを生成することになっている C で簡単なテスト アプリケーションを作成しています。OpenGL を使用して実際の描画を行うつもりですが、実際に頂点を生成する方法がわかりません。もちろん、このテストの目的はアルゴリズムが機能するかどうかを確認することでしたが、修正できない重大な論理エラーが見つかりました。コンセプトを説明している記事、ウェブサイト、または何かを教えてもらえますか? そうでない場合は、実際の実装を自分で行いたいと思いますが、C コードは受け入れられます。

基本的に、これは私がアルゴリズムのために何をしていたかを忘れる前に私がしたことです:

void calculateVertices(int sides) {
    BOOL isDone = FALSE;
    int vectorsPerSide = 3;
    VDVector3f *vertices = malloc((sizeof(VDVector3f) * (sides + 1)));
    VDVector3f *normals = malloc((sizeof(VDVector3f) * (sides + 1)));

    while (!isDone) {
        // Start by positioning the first vertex.
        vertices[0] = VDVector3fMake(0.0, 0.0, 1.0);

        for (int index = 1; index <= sides; index ++) {

        }

        // Not a match, increase the number of vectors
        vectorsPerSide ++;
    }
}

基本的に、一致が見つかるまでループします。これは私には非効率に思えますが、これを行う方法について他に考えがありませんでした。最初の頂点は、実際には最後に配列から削除されます。私はそれを使用して最初の面を作成し、他の面を適切に配置するために使用するつもりでした.

ここでの私の主な目標は、数値 (30 など) を渡して、頂点を自動的に設定できるようにすることです。私は何か特別なことを考えているので、片面サイコロと両面サイコロを作ることに対する保護はありません。それらの頂点を別の場所に入力します。

助けてくれてありがとう!

ちなみに完成した頂点配列を正規化できるアルゴリズムを持っています。わざわざ手伝う必要はありません。

4

1 に答える 1

2

これを一般化することは不可能だと思います。たとえば、公正な 5 面または 9 面のサイコロを作るにはどうすればよいでしょうか。私はそのようなものを見たことがないと思います。ウィキペディアで簡単に検索すると、プラトン立体があなたの求めているものである可能性があることが示唆されます. http://en.wikipedia.org/wiki/Platonic_solid

于 2012-07-05T23:36:58.847 に答える