Differenze tra le versioni di "LOGO/Assonometria"

m
Update syntaxhighlight tags - remove use of deprecated <source> tags
m (Update syntaxhighlight tags - remove use of deprecated <source> tags)
 
Conviene predisporre due procedure che disegnino queste forme di base:
 
<sourcesyntaxhighlight lang=lisp>
to quadrato :lato
repeat 4 [fd :lato rt 90]
fd :lato2 rt 180-:angolo]
end
</syntaxhighlight>
</source>
 
Per disegnare un cubo, ora, basta incominciare con la faccia che abbiamo di fronte (un quadrato), poi disegnare le 4 facce laterali e infine la faccia posteriore... Possiamo osservare che quest'ultima faccia non è necessario che venga disegnata, perché è si ottiene come conseguenza delle facce precedenti:
 
<sourcesyntaxhighlight lang=lisp>
to cubo :spigolo
quadrato :spigolo
lt 45 bk :spigolo rt 90 bk :spigolo lt 90
end
</syntaxhighlight>
</source>
 
Anche la faccia di fronte non occorre che venga disegnata esplicitamente, quindi si può semplificare la procedura cubo. Tutto il programma diventa:
 
<sourcesyntaxhighlight lang=lisp>
to parall :lato1 :angolo :lato2
repeat 2 [fd :lato1 rt angolo
clearscreen
cubo 109
</syntaxhighlight>
</source>
 
Ma possiamo utilizzare un trucco per far apparire le linee coperte dalle facce con un colore meno intenso: basta disegnare i primi due parallelogrammi con un colore più scuro e tutto il resto con il colore più chiaro.
 
<sourcesyntaxhighlight lang=lisp>
to cubo :spigolo
setpencolor 1
lt 45 bk :spigolo rt 90 bk :spigolo lt 90
end
</syntaxhighlight>
</source>
 
==Parallelepipedo==
Se invece di un cubo vogliamo far disegnare un parallelepipedo dobbiamo fornire alla procedura 3 informazioni: la larghezza l'altezza e la profondità e utilizzarle al momento opportuno. Dopo qualche tentativo si ottiene:
 
<sourcesyntaxhighlight lang=lisp>
to parallelepipedo :larg :alt :prof
setpencolor 1
lt 45 bk :alt rt 90 bk :larg lt 90
end
</syntaxhighlight>
</source>
 
A questo punto ricordandoci che un cubo è un particolare parallelepipedo possiamo riscrivere la procedura cubo:
 
<sourcesyntaxhighlight lang=lisp>
to cubo :spigolo
parallelepipedo :spigolo :spigolo :spigolo
end
</syntaxhighlight>
</source>
 
==Torri==
266

contributi