Lo faccio abbastanza spesso per generare immagini di fibre e sfere per simulazioni di supporti porosi. Ho un modo molto semplice per farlo usando una tecnica di analisi delle immagini molto standard conosciuta come la "trasformazione a distanza". Ciò richiede l'accesso a un pacchetto di analisi delle immagini. Io uso Python con Scipy, quindi questo non è un problema. Ecco una demo per convertire i punti distribuiti in modo casuale in sfere:
import scipy as sp
import scipy.ndimage as spim
im1 = sp.rand(100, 100) < 0.995 # Create random points in space
dt = spim.distance_transform_edt(im1)
im2 = dt < 5 # To create sphere with a radius of 5

E che è! La trasformazione della distanza può essere lenta per immagini di grandi dimensioni, ma è disponibile una versione efficiente. Ad esempio, ImageJ ha uno parallelizzato. Ovviamente, per creare fibre spesse, basta creare l'immagine di quelle sottili, quindi applicare i passaggi 2 e 3 sopra.
Rimodificato "linguaggio indipendente" dal momento che il linguaggio di implementazione non è veramente rilevante. –
ecco una domanda SO correlata: http://stackoverflow.com/questions/101718/drawing-a-variable-width-line-in-opengl-no-gllinewidth –
@banister: hai qualche demo da condividere con noi? – sdkie