06.12.2012 Views

ArsTeXnica, Numero 4, Ottobre 2007 - GuIT - Scuola Superiore Sant ...

ArsTeXnica, Numero 4, Ottobre 2007 - GuIT - Scuola Superiore Sant ...

ArsTeXnica, Numero 4, Ottobre 2007 - GuIT - Scuola Superiore Sant ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ArsT EXnica Nº 4, <strong>Ottobre</strong> <strong>2007</strong> Illustrazioni 3D di Dinamica del Volo con Sketch e LAT EX<br />

x<br />

H0<br />

Hz<br />

O<br />

z<br />

H ′ 0<br />

Figura 7: Un’elica di asse z e passo p = tan θ.<br />

La curva di Figura 7 si otterrà con i comandi<br />

seguenti:<br />

def pO (0 ,0 ,0) def pH0 (3 ,0 ,0)<br />

def vK [0 ,0 ,1]<br />

def Helix {<br />

% parametri<br />

def nsteps 180<br />

def angle _ step (360+180)/ nsteps<br />

def pitch _ angle 10<br />

def radius |( pH 0) -( pO )|<br />

def pitch radius * ( angle _ step /57.3)<br />

* sin ( pitch _ angle )/ cos ( pitch _ angle )<br />

def tHelix rotate ( angle _step ,(0 ,0 ,0) ,[ vK ])<br />

then translate ( pitch *[ vK ])<br />

% elica<br />

sweep [ line width =2.8 pt , color = red ] {<br />

nsteps , [[ tHelix ]]<br />

} ( pH 0)<br />

% punto pieno in H0<br />

special |<br />

\ fill [ style = solid ] #1 circle (2 pt );<br />

|( pH 0)<br />

% cerchio di base , z =0<br />

def BaseCircle {<br />

sweep [ line width =1.8 pt , color =gray ,<br />

style = dashed ] {<br />

36 ,<br />

rotate (360/36 , (0 ,0 ,0) , [ vK ])<br />

} (pH 0)<br />

}<br />

% commenta per non disegnare il cerchio<br />

{ BaseCircle }<br />

}<br />

put { view (( pEye ), ( pLookAt ), [0 ,0 ,1]) } {<br />

{ Helix }<br />

}<br />

L’istruzione sweep viene utilizzata sia per disegnare<br />

l’elica che per disegnare la circonferenza tratteggiata<br />

sul piano z = 0. Per usare questo comando<br />

bisogna specificare: (i) il numero di cicli di disegno<br />

(vedi nsteps), (ii) la trasformazione da applicare<br />

all’istanza precedente per ottenerne una corrente<br />

(vedi [[tHelix]]) e (iii) un oggetto generatore,<br />

nel nostro esempio un punto (vedi (pH0) nella<br />

definizione dell’elica e di BaseCircle).<br />

Si osservi come il comando sweep sia stato utilizzato<br />

nel listato di pyramid.sk specificando una linea<br />

(vedi line(p0)(p1)) come oggetto generatore<br />

H<br />

θ<br />

y<br />

θ<br />

60<br />

ed ottenendo come risultato la superficie laterale<br />

della piramide di Figura 3.<br />

Un’ulteriore esempio di effetto grafico ottenuto<br />

per mezzo di un ciclo è costituito dalle annotazioni<br />

di Figura 7 che mostrano l’entità dell’angolo<br />

θ. Un’istruzione di sweep viene qui utilizzata per<br />

disegnare gli archi di circonferenza che terminano<br />

con una freccia. Se si considera, ad esempio, il<br />

punto H0, per applicare correttamente il comando<br />

sweep va definito un punto H ′ 0 lungo la retta<br />

orizzontale uscente da H0. Il punto H ′ 0 diventa il<br />

punto generatore dello sweep e viene trasformato<br />

nel punto H ′′<br />

0 , appartenente alla tangente all’elica<br />

passante per H0. In linguaggio Sketch si scriverà:<br />

% vettore lungo il raggio<br />

def vR0 unit ( ( pH 0) -( pO) )<br />

% vettore orizzontale<br />

def vH0 unit ( [ vR 0]*[ vK] )<br />

% punto H ′<br />

0<br />

def pH 01 ( pH 0)+3*[ vH 0]<br />

def tH 02 rotate ( pitch _ angle ,( pH 01) ,[ vR 0])<br />

% punto H ′′<br />

0 lungo la tangente all ’ elica<br />

def pH 02 [[ tH 02]]*( pH 01)<br />

% arco<br />

sweep [ line width =1.8 pt , color =blue ,<br />

style = solid , arrows = - >]{<br />

4,<br />

}( pH 01)<br />

rotate ( pitch _ angle /4 ,( pH 0) ,[ vR 0])<br />

% linee e punti con Tikz<br />

special |<br />

\ draw [-, solid , line width =0.8 pt ]#1 -- #2;<br />

\ fill [ style = solid ] #1 circle (2 pt );<br />

\ fill [ style = solid ] #2 circle (2 pt );<br />

\ fill [ style = solid ] #3 circle (2 pt );<br />

\ draw [-, solid , line<br />

|( pH 0)( pH 01)( pH 02)<br />

width =0.8 pt ]#1 -- #3;<br />

% simbolo θ con Tikz<br />

special |<br />

\ path [ line width =0 pt ]#1<br />

to node [ node distance =0pt , pos =0.4 ,<br />

pin ={[ pin distance =24 pt ,<br />

pin edge ={ bend left ,blue , thick }]<br />

-45:$\ theta$}]{} #2;<br />

|( pH 01)( pH 02)<br />

Per un punto H qualsiasi lungo l’elica, l’effetto voluto<br />

viene realizzato potendo comodamente ottenere<br />

in Sketch un vettore dal prodotto vettoriale<br />

di altri due. Si costruiranno: un punto H ′ staccandolo<br />

lungo una retta orizzontale uscente da H<br />

e normale al raggio locale, ed un punto Hz proiettando<br />

H sull’asse. Osservando che i due vettori<br />

H −Hz ed (H ′ −H)× ⃗ k sono paralleli, si potrà definire<br />

un vettore da utilizzare nell’istruzione sweep<br />

come asse di rotazione. Tale operazione avrà come<br />

centro il punto H e come punto generatore il<br />

punto H ′ . L’effetto grafico voluto è mostrato in<br />

Figura 7.<br />

4 Uso avanzato di Sketch<br />

Le caratteristiche del linguaggio di composizione<br />

di una scena messe a disposizione da Sketch sono<br />

tali da poter dire che le illustrazioni tridimensionali<br />

con esso ottenibili sono di fatto delle illustrazioni<br />

avanzate.<br />

La possibilità di costruire delle superfici dello<br />

spazio come reticolati, cioè come insiemi di tasselli

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!