LOGO/Assonometria: differenze tra le versioni
m Update syntaxhighlight tags - remove use of deprecated <source> tags |
|||
Riga 11: | Riga 11: | ||
Conviene predisporre due procedure che disegnino queste forme di base: |
Conviene predisporre due procedure che disegnino queste forme di base: |
||
< |
<syntaxhighlight lang=lisp> |
||
to quadrato :lato |
to quadrato :lato |
||
repeat 4 [fd :lato rt 90] |
repeat 4 [fd :lato rt 90] |
||
Riga 20: | Riga 20: | ||
fd :lato2 rt 180-:angolo] |
fd :lato2 rt 180-:angolo] |
||
end |
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: |
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: |
||
< |
<syntaxhighlight lang=lisp> |
||
to cubo :spigolo |
to cubo :spigolo |
||
quadrato :spigolo |
quadrato :spigolo |
||
Riga 36: | Riga 36: | ||
lt 45 bk :spigolo rt 90 bk :spigolo lt 90 |
lt 45 bk :spigolo rt 90 bk :spigolo lt 90 |
||
end |
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: |
Anche la faccia di fronte non occorre che venga disegnata esplicitamente, quindi si può semplificare la procedura cubo. Tutto il programma diventa: |
||
< |
<syntaxhighlight lang=lisp> |
||
to parall :lato1 :angolo :lato2 |
to parall :lato1 :angolo :lato2 |
||
repeat 2 [fd :lato1 rt angolo |
repeat 2 [fd :lato1 rt angolo |
||
Riga 59: | Riga 59: | ||
clearscreen |
clearscreen |
||
cubo 109 |
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. |
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. |
||
< |
<syntaxhighlight lang=lisp> |
||
to cubo :spigolo |
to cubo :spigolo |
||
setpencolor 1 |
setpencolor 1 |
||
Riga 76: | Riga 76: | ||
lt 45 bk :spigolo rt 90 bk :spigolo lt 90 |
lt 45 bk :spigolo rt 90 bk :spigolo lt 90 |
||
end |
end |
||
</syntaxhighlight> |
|||
</source> |
|||
==Parallelepipedo== |
==Parallelepipedo== |
||
Riga 82: | Riga 82: | ||
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: |
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: |
||
< |
<syntaxhighlight lang=lisp> |
||
to parallelepipedo :larg :alt :prof |
to parallelepipedo :larg :alt :prof |
||
setpencolor 1 |
setpencolor 1 |
||
Riga 95: | Riga 95: | ||
lt 45 bk :alt rt 90 bk :larg lt 90 |
lt 45 bk :alt rt 90 bk :larg lt 90 |
||
end |
end |
||
</syntaxhighlight> |
|||
</source> |
|||
A questo punto ricordandoci che un cubo è un particolare parallelepipedo possiamo riscrivere la procedura cubo: |
A questo punto ricordandoci che un cubo è un particolare parallelepipedo possiamo riscrivere la procedura cubo: |
||
< |
<syntaxhighlight lang=lisp> |
||
to cubo :spigolo |
to cubo :spigolo |
||
parallelepipedo :spigolo :spigolo :spigolo |
parallelepipedo :spigolo :spigolo :spigolo |
||
end |
end |
||
</syntaxhighlight> |
|||
</source> |
|||
==Torri== |
==Torri== |
Versione attuale delle 07:08, 19 apr 2020
Assonometria cavaliera[modifica]
La tartaruga si muove nel piano, ma possiamo far disegnare delle figure solide utilizzando un'assonometria. Nell'assonometria cavaliera la faccia del solido che si ha di fronte viene disegnata in dimensioni reali, gli spigoli che si allontanano vengono dimezzati e ruotati di 45 gradi.
Cubo[modifica]
Le 6 facce di un cubo verranno disegnate dunque come 2 quadrati e 4 parallelogrammi.
Conviene predisporre due procedure che disegnino queste forme di base:
to quadrato :lato
repeat 4 [fd :lato rt 90]
end
to parall :lato1 :angolo :lato2
repeat 2 [fd :lato1 rt angolo
fd :lato2 rt 180-:angolo]
end
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:
to cubo :spigolo
quadrato :spigolo
parall :spigolo 45 :spigolo/2
rt 45
parall :spigolo/2 45 :spigolo
lt 45 fd :spigolo rt 45
parall :spigolo/2 45 :spigolo
rt 45 fd :spigolo lt 45
parall :spigolo/2 135 :spigolo
lt 45 bk :spigolo rt 90 bk :spigolo lt 90
end
Anche la faccia di fronte non occorre che venga disegnata esplicitamente, quindi si può semplificare la procedura cubo. Tutto il programma diventa:
to parall :lato1 :angolo :lato2
repeat 2 [fd :lato1 rt angolo
fd :lato2 rt 180-:angolo]
end
to cubo :spigolo
parall :spigolo 45 :spigolo/2
rt 45
parall :spigolo/2 45 :spigolo
lt 45 fd :spigolo rt 45
parall :spigolo/2 45 :spigolo
rt 45 fd :spigolo lt 45
parall :spigolo/2 135 :spigolo
lt 45 bk :spigolo rt 90 bk :spigolo lt 90
end
clearscreen
cubo 109
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.
to cubo :spigolo
setpencolor 1
parall :spigolo 45 :spigolo/2
rt 45
parall :spigolo/2 45 :spigolo
setpencolor 15
lt 45 fd :spigolo rt 45
parall :spigolo/2 45 :spigolo
rt 45 fd :spigolo lt 45
parall :spigolo/2 135 :spigolo
lt 45 bk :spigolo rt 90 bk :spigolo lt 90
end
Parallelepipedo[modifica]
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:
to parallelepipedo :larg :alt :prof
setpencolor 1
parall :alt 45 :prof/2
rt 45
parall :prof/2 45 :larg
setpencolor 15
lt 45 fd :alt rt 45
parall :prof/2 45 :larg
rt 45 fd :larg lt 45
parall :prof/2 135 :alt
lt 45 bk :alt rt 90 bk :larg lt 90
end
A questo punto ricordandoci che un cubo è un particolare parallelepipedo possiamo riscrivere la procedura cubo:
to cubo :spigolo
parallelepipedo :spigolo :spigolo :spigolo
end
Torri[modifica]
Ora che ci siamo costruiti i blocchetti di base possiamo usarli per realizzare delle costruzioni. Possiamo impilare cubi o parallelepipedi uno sopra l'altro magari facendo in modo che quello sopra sia più piccolo di quello sottostante. Possiamo posizionarli in modo che abbiano uno spigolo allineato o che le facce anteriori siano sullo stesso piano e centrate o che ogni nuovo blocchetto sia posizionato al centro della faccia su cui poggia...
Buon divertimento!