Apakah ada yang tahu tentang Algoritma yang memungkinkan gambar seperti ini?

9

Adakah yang tahu cara membuat algoritma yang mampu membuat gambar seperti di gambar, ketika diberi satu set poin tertentu (array 3D)

masukkan deskripsi gambar di sini

pengguna88794
sumber
4
Suatu hal, apakah ini yang Anda cari: blog.andreaskahler.com/2009/06/...
Luke San Antonio Bialecki
3
@LukeSanAntonio Posting itu sebagai jawaban sehingga saya dapat mengunggahnya tolong;) (tapi bukan hanya tautan, beberapa penjelasan minimal dari algoritma akan diperlukan untuk jawaban)
yannis
1
@YannisRizos saya akan, tetapi saya tidak memiliki pengetahuan atau pengalaman dalam hal semacam ini, jadi saya tidak bisa memberi Anda penjelasan yang memadai (baik saya bisa, tetapi orang lain bisa melakukan jauh lebih baik) Satu-satunya alasan saya tahu tautannya adalah karena saya tahu nama bentuk dari Blender ( wiki.blender.org/index.php/Doc:.4/Manual/Modeling/Meshes/… )
Luke San Antonio Bialecki
membuat bayangan dari objek 3D dilakukan setiap hari, periksa pemetaan bayangan dan volume bayangan , tetapi ada lebih banyak algoritma pembuatan bayangan yang tersedia
ratchet freak
Itu bukan Bayangan yang ingin saya ciptakan, itu adalah objek fisik. Kita akan mencetaknya 3D.
user88794

Jawaban:

5

Datang ke sini setelah pertempuran, tetapi karena belum ada jawaban yang diterima dan melihat bahwa @ Lukas menolak untuk mendapatkan perwakilan yang layak, berikut adalah ringkasan singkat dari tautan yang ia berikan.

Jadi algoritma lengkap tersedia di sini:

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

Idenya adalah untuk bootstrap jala Anda dengan metode sederhana yang memberi Anda bola dengan 20 wajah, dan kemudian memperbaikinya sampai Anda puas.

Bootstrap bentuk

Anda mulai dengan icosahedron . Seperti yang dikatakan artikel wikipedia, Anda dapat memperoleh simpul dengan menggambar tiga persegi panjang yang identik dan ortogonal. Anda memiliki 3 persegi panjang dengan masing-masing 4 sudut -> 12 simpul.

Ilustrasi Wikipedia:

icosahedron

Misalnya, titik rencana Z adalah (a, b adalah panjang persegi panjang):

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

Sekarang Anda masih harus menemukan 20 wajah. Ini dibiarkan sebagai latihan untuk pembaca: hal

Memperbaiki bentuk

Sekarang Anda memiliki bola dasar, Anda mungkin ingin menambahkan poligon. Anda melakukannya dengan algoritma sederhana ini:

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

Untuk menemukan titik tengah, kami mengira bahwa kami ingin membuat unit sphere (tengah (0, 0, 0), radius 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)

Pada setiap iterasi, kita mungkin harus merekonstruksi wajah, tetapi itu cukup mudah. Setiap wajah dibagi menjadi empat:

Menghaluskan wajah

Simon Bergot
sumber