Qualcuno sa di un algoritmo che consente una figura come questa immagine?


9

Qualcuno sa come creare un algoritmo in grado di rendere la figura proprio come nella foto, quando viene dato un set di punti specifici (array 3D)

inserisci qui la descrizione dell'immagine


4
È una cosa, è questo quello che stai cercando: blog.andreaskahler.com/2009/06/…
Luke San Antonio Bialecki

3
@LukeSanAntonio Post che come risposta in modo da poterlo votare per favore;) (ma non solo il link, una risposta minima dell'algoritmo sarebbe necessaria per una risposta)
yannis

1
@YannisRizos Lo farei, ma non ho alcuna conoscenza o esperienza in questo genere di cose, quindi non potrei darti una spiegazione adeguata (beh, potrei, ma altri potrebbero fare molto meglio) L'unica ragione per cui sapevo che il link è perché conoscevo il nome della forma di Blender ( wiki.blender.org/index.php/Doc:2.4/Manual/Modeling/Meshes/… )
Luke San Antonio Bialecki

la creazione dell'ombra da un oggetto 3D viene eseguita quotidianamente, controlla la mappatura dell'ombra e il volume dell'ombra , ma ci sono più algoritmi di creazione dell'ombra disponibili
maniaco del cricchetto

Non è l'ombra che sto cercando di creare, è l'oggetto fisico. Lo stamperemo in 3D.
user88794

Risposte:


5

Venendo qui dopo la battaglia, ma poiché non ci sono ancora risposte accettate e visto che @Luke rifiuta di ottenere il rappresentante che merita, ecco un breve riassunto del link che ha fornito.

Quindi l'algoritmo completo è disponibile qui:

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

L'idea è di eseguire il bootstrap della mesh con un metodo semplice che ti dia una sfera con 20 facce e quindi perfezionarla fino a quando non sei soddisfatto.

Bootstrap della forma

Inizi con un icosaedro . Come dice l'articolo di Wikipedia, puoi ottenere i vertici disegnando tre rettangoli identici e ortogonali. Hai 3 rettangoli con 4 angoli ciascuno -> 12 vertici.

Illustrazione di Wikipedia:

icosaedro

Ad esempio, i punti del piano Z sono (a, b sono le lunghezze del rettangolo):

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

Ora devi ancora trovare le 20 facce. Questo è lasciato come esercizio al lettore: p

Raffinare la forma

Ora che hai una sfera di base, potresti voler aggiungere poligoni. Lo fai con questo semplice algoritmo:

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

Per trovare il punto medio, supponiamo di voler creare la sfera unitaria (centro (0, 0, 0), raggio 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)

Ad ogni iterazione, potremmo dover ricostruire i volti, ma è abbastanza facile. Ogni faccia è divisa in quattro:

affinare il viso

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.