この画像のような図を可能にするアルゴリズムを知っていますか?


9

特定の点のセット(3D配列)が与えられたときに、図のように図を作成できるアルゴリズムを作成する方法を誰かが知っていますか

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


4
:それはことだ、あなたが探しているものである。このblog.andreaskahler.com/2009/06/...
ルークサンアントニオBialecki

3
@LukeSanAntonio投稿してください。私はそれを賛成投票できるように、回答として投稿してください;)(ただし、リンクだけでなく、アルゴリズムの最小限の説明が回答に必要になります)
yannis

1
@YannisRizos私はそうしますが、この種のことについては知識も経験もないので、十分な説明をすることはできませんでした(まあ、私はできますが、他の人はもっとうまくやれるでしょう)リンクを知った唯一の理由は私はブレンダー(からシェイプの名前を知っていたので、wiki.blender.org/index.php/Doc:2.4/Manual/Modeling/Meshes/...
ルークサンアントニオBialecki

3Dオブジェクトからシャドウを作成することは毎日行われます。シャドウマッピングシャドウボリュームを確認してください。ただし、使用可能なシャドウ作成アルゴリズムは他にもあります
ラチェットフリーク

それは私が作成しようとしている影ではなく、物理的なオブジェクトです。3Dプリントします。
user88794 2013

回答:


5

戦いの後にここに来ましたが、まだ受け入れられた回答がなく、@ Lukeが彼に値する担当者を取得することを拒否しているのを見て、彼が提供したリンクの簡単な要約を以下に示します。

したがって、ここでは完全なアルゴリズムを利用できます。

http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html

アイデアは、20面の球を与える単純な方法でメッシュをブートストラップし、満足するまでそれを微調整することです。

シェイプのブートストラップ

あなたは二十面体から始めます。ウィキペディアの記事にあるように、3つの同一の直交する長方形を描くことで頂点を取得できます。それぞれが4つのコーナーを持つ3つの長方形-> 12の頂点があります。

ウィキペディアのイラスト:

二十面体

たとえば、Zプランポイントは次のとおりです(a、bは長方形の長さです)。

  • (+ a、+ b、0)
  • (-a、+ b、0)
  • (+ a、-b、0)
  • (-a、-b、0)

今でもあなたはまだ20の顔を見つける必要があります。これは読者への練習問題として残されています:p

形状を洗練する

基本的な球ができたので、ポリゴンを追加することができます。これは、次の単純なアルゴリズムで行います。

for each iteration:
    # each iteration multiplies by 4 the number of faces
    for each edge at the current iteration:
        split the edge in two
        replace the middle point on the sphere

中間点を見つけるために、単位球(中心(0、0、0)、半径1)を作成するとします。

middlePoint(p1, p2):
    middle = Point((p1.X + p2.X / 2), # same for y, z)
    radius = sqrt(middle.X^2, middle.Y^2, middle.Z^2)
    return Point(middle.X / radius,  # same for y, z)

各反復で、顔を再構築する必要があるかもしれませんが、それはかなり簡単です。各面は4つに分かれています。

顔を磨く

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.