2

私は Open CV を使用しており、コードから多次元データを抽出して画像を表示できますが、それを表示する簡単な方法は何でしょうか? 私は3D配列を持っています:

line start [x] [y] [z]
line end   [x] [y] [z]

線の間にあるものはすべて、平らな面で塗りつぶされます。

これらのポイントまたは不足している他のポイントを指定して、3D イメージを簡単に表示するために使用できる関数はありますか?

次の疑似コードのように:

display_3d(x,y,z,angle)

どんな助けでも大歓迎です。また、C++を使用しています。

4

2 に答える 2

0

まず、ポイントの凸包を見つける必要があります。これは、ポイントのセットのあいまいで効率的な表現を見つけることを意味します。これを行ったら、通常はdelaunay triangulationを使用して、メッシュを三角形分割する必要があります。QHullはそのような機能を提供します。

于 2014-01-14T10:23:03.880 に答える
0

正しく理解しているかどうかわかりませんが、なぜ3D配列があるのですか???

  • サーフェスを表す 3D ポイントの配列は、通常、3D ポイントの 1D 配列です。

            float points[n][3];
    // not float points[nx][ny][nz] !!!
    

私は CV ユーザーではないので、(OpenGL) レンダリングに固執しますが、代わりに他のレンダリングを使用できます。

1.ポイントが凹面を表す場合

  • 単一の平面で!!!
  • 順番に並んでいる(混同していない)
  • 次に、GL_TRIANGLE_FAN または他のレンダリングで同様のものを使用できます。

    float points[n]={ {x,y,z},{x,y,z},...};
    glBegin(GL_TRIANGLE_FAN);
    glVertex3fv(points[0]);
    glVertex3fv(points[1]);
    glVertex3fv(points[2]);
    ...
    glVertex3fv(points[n-1]);
    glEnd();
    

2.そうでない場合は、データを三角測量する必要があります

  • 簡単な作業ではありませんが、それを行うライブラリがいくつかあります。
  • OpenCVでもそれができるかどうかわからない場合は、三角測量関数を探してください(イヤードロップなど)
  • 私は独自の三角測量ルーチンを好みます (デバッグや追加のポリゴン情報に適しています) が、使用するアルゴリズムに慣れていない場合は、効率的かつ正確にコーディングするのが少し難しくなります。
于 2014-01-14T10:15:59.517 に答える