HOME OGGETTI 3D LIBRI CORSI TUTORIAL FORUM SHOP CONTATTI   LOGIN









Autore Topic: Primitiva modulare triangolare  (Letto 1531 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
Primitiva modulare triangolare
« il: 14 Settembre 2012, 17:42 »
In questo esercizio costruisco una primitiva triangolare suddivisa in sottomoduli.
Il suo possibile uso può essere la costruzione di pennacchi, vele, lunette.
Oppure può essere utilizzata per deformazioni dello spazio che prevedano oggetti piramidali.
Rispetto la suddivisione in sottomoduli di un rettangolo, la costruzione è più complessa.

Per determinare i valori degli indici ricordiamo che la sommatoria di n numeri interi successivi vale la somma del primo più l’ultimo moltiplicata per n/2.

I vertici, nel passare alla riga successiva, scalano di uno, quindi dalla prima riga alle successive i loro indici (in blu nella figura) saranno:
riga 1,j=0:    1,2,…, n+1                   !n+1 elementi 
riga 2,j=1:    (1+n)+1, (1+n)+2,…, (1+n)+n                  !n elementi 
riga 3,j=2:    (1+n)+(n)+1, (1+n)+(n)+2,…, (1+n)+(n)+n-1                  !n-1 elementi 
riga4, j=3:    (1+n)+(n)+(n-1)+1, (1+n)+(n)+(n-1)+2,…, (1+n)+(n)+(n-1)+n-2                  !n-2 elementi

riga j+1:     (  (1+n)+(n-(j-2))  )*j/2+1,(3+2*n-j)*j/2+2,…, (3+2*n-j)*j/2+n-j+1                 !n-j+1 elementi

riga n,j=n-1:   (4+n)*(n-1)/2+1 ,(4+n)*(n-1)/2+2
vertice finale j=n:    (3+n)*n/2+1
   
Consideriamo ora gli indici degli EDGES (in rosso nella figura)
Come i vertici, anche i segmenti di collegamento scalano di 1 passando alla riga successiva:
riga 1,j=0:    1,2,…, n      !n elementi 
riga 2,j=1:   (n)+1 , (n)+2,…, (n)+n-1           !n-1 elementi 
riga 3,j=2:    (n)+(n-1)+1, (n)+(n-1)+1,…, (n)+(n-1)+n-2      !n-2 elementi 
riga4, j=3:   (n)+(n-1)+(n-2)+1, (n)+(n-1)+(n-2)+2,…, (n)+(n-1)+(n-2)+n-3     !n-3 elementi

riga j+1:     ( (n)+(n-(j-1)) )*j/2+1,(1+2*n-j)*j/2+2,…, (1+2*n-j)*j/2+n-j                  !n-j  elementi

riga n,j=n-1:   (2+n)*(n-1)/2+1=(2*n-2+n^2-n)/2+1= n^2/2+n/2

Oppure, per induzione diretta, ricordando che con m intero  risulta:
1+2+…+m=(1+m)*m/2
si deduce che l’indice dell’ultimo EDGE orizzontale è
1+n+(n-1)+...+(n-(n-2))=1+n*(n-1)-(1+...(n-2))=1+n*(n-1)-(n-1)*(n-2)/2=n^2/2+n/2
Quindi  l’indice del primo EDGE obliquo è  effettivamente n^2/2+n/2+1
Dato che il numero degli edges obliqui con la stessa direzione eguaglia il numero degli edges orizzontali,
il primo indice della seconda serie di edges obliqui è n^2+n+1.
                       
Utilizziamo come modulo di riferimento il triangolo ABC, con AH=l1, HB=l2, HC=sqr(h^2+d^2), essendo H
Il piede dell’altezza tracciata da C.
Dunque: A=(0,0,0), B=(l1+l2,0,0), C=(l1,-d,h)

Lo script dei vertici diventa:

for j=0 to n                   !n+1 righe, compreso il vertice isolato
for i=0 to n-j
VERT  j*l1/n+(l1+l2)/n*i,  d/n*j,  h/n*j
next i
next j

Gli EDGES orizzontali, su n righe, devono saltare di un posto nel passare alla riga successiva,
inoltre ad ogni salto il loro numero diminuisce di 1.

for j=0 to n-j
for i=1 to n-j
EDGE   (3+2*n-j)*j/2+i, (3+2*n-j)*j/2+i+1, -1,-1,0
next i
next j

Per gli EDGES obliqui  vale la stessa regola, ma il secondo  indice si trova sulla riga successiva, quindi, utilizzando il primo indice, nel secondo il valore di j va aumentato di 1.

for j=0 to n-j
for i=1 to n-j
EDGE   (3+2*n-j)*j/2+i, (3+2*n-(j+1))*(j+1)/2+i, -1,-1,0
next i
next j   !Da basso sin a alto dex


Per gli EDGES obliqui  orientati verso sinistra, va aumentato di 1 il primo indice, rispetto a quelli orientati verso destra,

for j=0 to n-j
for i=1 to n-j
EDGE   (3+2*n-j)*j/2+i+1, (3+2*n-(j+1))*(j+1)/2+i, -1,-1,0
next i
next j   !Da basso dex a alto sin

Rimangono da costruire i poligoni.  Con n=3 il primo poligono sarebbe:
PGON 3,0,-1,   1, 13, -7
Infatti i vettori con indici 1, 13 e 7 invertito di senso chiudono il triangolo in basso a sinistra.
Tali vettori si possono anche riscrivere:
1, n^2+n+1,-( n^2/2+n/2+1)
Infatti nel passare dagli insiemi di vettori orizzontali agli obliqui il salto degli indici è n^2/2+n/2.
Si tratta ora di inserire tale poligono in un loop.
Per il momento costruiamo solo la prima fila:
j=0
for i=1 to n-j
PGON 3,0,-1,   i, n^2+n+i,-( n^2/2+n/2+i)
next i

Dato che la riga j+1 prevede un aumento degli indici dei vettori pari a (1+2*n-j)*j/2, aggiungiamo questo valore agli indici:

for j=0 to n-1
for i=1 to n-j
PGON 3,0,-1,  (1+2*n-j)*j/2+ i, (1+2*n-j)*j/2+ n^2+n+i,-( (1+2*n-j)*j/2+ n^2/2+n/2+i)
next i
next j

Rimangono da aggiungere I triangoli rovesciati, che sono inferiori di numero:
con n=3 il primo vale:
  -4, -13, 8
che si generalizza in:
-((1+2*n-(j+1))*(j+1)/2+i),-((1+2*n-j)*j/2+ n^2+n+i), (1+2*n-j)*j/2+ n^2/2+n/2+i+1
Infatti il vettore 13 lo ricaviamo dal poligono precedente e pure il vettore 8 cambiando di segno -7 e aggiungendo 1,
il vettore 4 si ricava sostituendo in 1 il valore j+1 a j che rappresenta il salto alla riga successiva.

Quindi lo script, tenuto conto del numero inferiore, diventa:

for j=0 to n-2
for i=1 to n-j-1
PGON 3,0,-1, -((1+2*n-(j+1))*(j+1)/2+i),-((1+2*n-j)*j/2+ n^2+n+i), (1+2*n-j)*j/2+ n^2/2+n/2+i+1
next i
next j

Come esempio applico a una piramide con facce costruite in questo modo,
la prospettiva sferica 3D con sfera limite di raggio r e sfera unita di raggio q:
xx=x*d/(sqr(x^2+y^2+z^2)+d-q)
yy=y*d/(sqr(x^2+y^2+z^2)+d-q)
zz=z*d/(sqr(x^2+y^2+z^2)+d-q)
L’oggetto non deformato e la piramide distorta si intersecano lungo la sfera dei punti uniti, come accade per l’omologia lineare.

lucio vero

  • MODERATOR
    ...non tutti i supereroi indossano il mantello
  • *
  • Post: 10.763
Re:Primitiva modulare triangolare
« Risposta #1 il: 15 Settembre 2012, 17:03 »
... scusa marco .... invece di postare col contagocce ... perchè non fai un bel libro in formato pdf e lo posti agli amministratori ... che a loro volta lo metteranno nella sezione download?  :bigrin:
Luciano Cuntreri - Geometra
Longum iter est per praecepta, breve et efficax per exempla
... I MIEI LAVORI ... to explain my and your projects ...

lucky67rg@NOSPAMgmail.com

marcomasetti

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 183
Re:Primitiva modulare triangolare
« Risposta #2 il: 17 Settembre 2012, 20:04 »
In effetti la mia idea iniziale era scrivere un libro e ne ho parlato con Roberto Corona.  Per il momento mi ha consigliato di utilizzare la forma impropria del post.
Naturalmente scrivere un libro è piuttosto impegnativo, poi ne ho in cantiere un altro sulle prospettive curve, basato su una vecchia tesi di laurea.
L'unico vantaggio per me nello scrivere un libro, sarebbe migliorare il mio curriculum per l'incarico (sottopagato) presso l'Accademia. Poi dovrei utilizzare quel poco che guadagno lì in un anno, per le spese di pubblicazione. Comunque al libro dovrebbero essere allegati gli oggetti GDL, che costituiscono esempi di "esercizi svolti". Per questo è necessaria l'autorizzazione della Graphisoft. Per le scuole superiori dove lavoro pubblicare un libro non avrebbe alcun fine pratico. Comunque facendo queste ricerche per puro amore della cultura, nel tempo libero, non vorrei finissero disperse. Per tali motivo continuo con i posts. Comunque grazie, Marco