HOME OGGETTI 3D LIBRI CORSI TUTORIAL FORUM SHOP CONTATTI   LOGIN









Autore Topic: PGON con fori multipli  (Letto 1519 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

marcomasetti

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 183
PGON con fori multipli
« il: 24 Luglio 2012, 17:42 »
PGON con fori multipli

Come abbiamo visto, non è possibile realizzare fori in un PGON, cioè in una faccia di una forma primitiva.
Tuttavia, costruendo un percorso con una sorta di ponte ripercorribile in avanti e indietro, è possibile costruire anche fori.   In questo esempio costruiamo un poligono regolare con n fori utilizzando il loop, o concatenazione.
L’elenco dei vertici è stato costruito a patire da un poligono interno di n lati, poi ci siamo spostati su un arco della circonferenza esterna (che in realtà è pure un poligono), poi siamo rientrati, al prossimo valore di k, nel poligono interno successivo.        I poligoni interni girano in senso antiorario
(come si desume da:-360/n*i che è negativo ),  mentre il contorno è antiorario.
La catena presenta sottocatene, che vengono ripetute k volte.

for j=0 to k-1
for i=0 to n
VERT c*cos(360/k*j)+d/2*cos(360/k*j-360/n*i),c*sin(360/k*j)+d/2*sin(360/k*j-360/n*i),0
next i
for i=0 to m
VERT r*cos(360/k*j+360/(m*k)*i),r*sin(360/k*j+360/(m*k)*i),0
next i
next j

In realtà lo script dei vertici non è del tutto corretto, in quanto viene ripetuto il primo ed ultimo vertice di ogni poligono interno, per semplificare il procedimento.  Essendo così i vertici tutti in fila, secondo un unico percorso, senza salti, è possibile scrivere senza problemi l’elenco dei segmenti di collegamento:
for i=1 to (n+m+2)*k-1
EDGE i,i+1,-1,-1,0
next i
EDGE (n+m+2)*k,1,-1,-1,0
Utilizzando questo script più semplice, non è possibile nascondere gli EDGE di collegamento.
Volendo nascondere i segmenti che fungono da ponti di collegamento, occorre riscrivere l'elenco degli EDGE con nidificazioni o sottocatene, in modo da isolare i ponti per nasconderli, ponendo il loro stato =1.

for j=0 to k-2
for i=1 to n
EDGE i+(m+n+2)*j,i+1+(m+n+2)*j,-1,-1,0
next i
EDGE i+(m+n+2)*j,i+1+(m+n+2)*j,-1,-1,1
for i=n+2 to m+n+1
EDGE i+(m+n+2)*j,i+1+(m+n+2)*j,-1,-1,0
next i
EDGE i+(m+n+2)*j,i+1+(m+n+2)*j,-1,-1,1
next j
i=k-1
for i=1 to n
EDGE i+(m+n+2)*j,i+1+(m+n+2)*j,-1,-1,0
next i
EDGE i+(m+n+2)*j,i+1+(m+n+2)*j,-1,-1,1
for i=n+2 to m+n+1
EDGE i+(m+n+2)*j,i+1+(m+n+2)*j,-1,-1,0
next i
EDGE (n+m+2)*k,1,-1,-1,1
Notiamo infine che anche lo script degli spigoli non è del tutto corretto, in quanto lo stesso EDGE di collegamento è conteggiato due volte, essendo ripetuto nel senso inverso.   Tuttavia lo script funziona comunque ed è possibile inserire il PGON:
for i=1 to (n+m+2)*k
put i
next i
PGON nsp,0,-1, get (nsp)

Per dare uno spessore alla figura ho riscritto tutto per evitare le ripetizioni di singoli VERT o PGON.
Naturalmente la cosa diventa molto laboriosa.   Bisogna disegnare uno schizzo della figura, attribuendo a ciascun parametro il valore più basso.  Inoltre quando una figura si chiude, l’ultimo EDGE si identifica con il primo della catena cambiato di segno: per questo occorre terminare il loop ad un valore scalato di 1 e occorre correggere l’ultimo EDGE o l’ultimo PGON della serie.
Clonare l’estradosso e trasformarlo in intradosso è abbastanza semplice, basta aggiungere ad ogni indice di EDGE il numero di vertici di cui è composto l’estradosso.   Più complesso diventa invertire il senso dei segmenti orientati EDGE per inserirli nel PGON dell’intradosso, se come in questo caso, si applica il PARAMETER BUFFER e se in più ci sono sottocatene.  Come regola conviene far variare i parametri della catena, per esempio i o j, a partire da 0, dopodiché si cambia loro il segno aggiungendo il valore finale del loop. Così vengono letti in senso inverso, conviene prima inserirli tra parentesi per evitare confusione.   Poi bisogna cambiare i segni agli indici.
esempio: 
for  i=0  to m-1
put   f (i)
next i
diventerà:
for i=0  to m-1
put   -f (m-1-i)
next i
PGON nsp,0,-1, get (nsp)

Se c’è un elenco di PUT, va poi ordinato in senso inverso.

Questi concetti sono stati applicati all’oggetto allegato:  crf n fori.gsm

Naturalmente lo stesso oggetto poteva essere costruito con l'estrusione, ma la versione successiva che presenterò permette deformazioni non applicabili alle forme predefinite.

Aggiungo che ho pubblicato brevi video sulle forme geometriche parametriche presso:

http://www.youtube.com/user/prospettivecurve?feature=watch