#
# 029-python3 + Turtle: disegnare un cubo forato visto in prospettiva.
#
import math # Importare il modulo math
print("Questo programma, dopo aver chiesto il raggio di un cerchio")
print("e l'inclinazione della prospettiva,")
print("disegna un cubo in prospettiva, avente il lato pari a 3 volte il raggio del cerchio;")
print("al centro di ciascun lato del cubo, trova posto il cerchio, disegnato.")
print("Questo script funziona perfettamente solo quando l'angolo di prospettiva è compreso fra 1 e 89 gradi.")
RAG = input("Raggio del cerchio (max 100): ")
RAG = float(RAG)
ANG = input("Angolo della prospettiva (maggiore di 0 e minore di 90 gradi): ")
ANG = float(ANG)
def DIS_QUAD(ANG, RAG): # Inizio definizione funzione DIS_QUAD(), la quale richiede 2 parametri, che verranno conservati nelle variabili ANG e RAG
turtle.begin_fill() # Prima istruzione per disegnare una figura piena del colore corrente
turtle.left(ANG) # Modifica l'angolo corrente di ANG gradi verso sinistra
turtle.forward(RAG * 3) # Traccia il primo lato del quadrilatero
turtle.right(90 + ANG) # Modifica l'angolo corrente di (90+ANG) gradi verso destra
turtle.forward(RAG * 3) # Traccia il secondo lato del quadrilatero
turtle.right(90 - ANG) # Modifica l'angolo corrente di (90-ANG) gradi verso destra
turtle.forward(RAG * 3) # Traccia il terzo lato del quadrilatero
turtle.right(90 + ANG) # Modifica l'angolo corrente di (90-ANG) gradi verso destra
turtle.forward(RAG * 3) # Traccia il quarto lato del quadrilatero
turtle.end_fill() # Ultima istruzione per disegnare una figura piena del colore corrente
def DIS_CER(ANG, RAG): # Inizio definizione funzione DIS_CER(), la quale richiede 2 parametri, che verranno conservati nelle variabili ANG e RAG
turtle.begin_fill() # Prima istruzione per disegnare una figura piena del colore corrente
RAG1 = (RAG * math.cos(math.radians(ANG)))/(1 + math.sin(math.radians(ANG)))
RAG2 = RAG / math.tan(math.radians((90-ANG)/2))
turtle.circle(-RAG1, 90+ANG) # Tracciare un arco di circonferenza avente raggio = -RAG1 (punti)
turtle.circle(-RAG2, (90-ANG)) # Tracciare un arco di circonferenza avente raggio = -RAG2 (punti)
turtle.circle(-RAG1, 90+ANG) # Tracciare un arco di circonferenza avente raggio = -RAG1 (punti)
turtle.circle(-RAG2, (90-ANG)) # Tracciare un arco di circonferenza avente raggio = -RAG2 (punti)
turtle.end_fill() # Ultima istruzione per disegnare una figura piena del colore corrente
import turtle # Importare modulo turtle
turtle.bgcolor("pink") # Impostare il colore dello sfondo (di default è bianco)
turtle.speed(10) # Impostare velocità di esecuzione oggetto usato per disegnare
turtle.color("grey") # Impostare il colore dell’oggetto usato per disegnare
turtle.goto(-RAG * 3, 0)
DIS_QUAD(0, RAG) # Chiama la funzione DIS_QUAD() previo trasferimento del contenuto delle variabili ANG e RAG.
turtle.home() # Posiziona l’oggetto con cui scrive nel punto del piano cartesiano avente coordinate X=0, Y=0 e lo orienta verso destra
turtle.color("cyan") # Impostare il colore dell’oggetto usato per disegnare
DIS_QUAD(ANG, RAG) # Chiamare la funzione DIS_QUAD() previo trasferimento del contenuto delle variabili ANG e RAG.
turtle.home() # Posiziona l’oggetto con cui scrive nel punto del piano cartesiano avente coordinate X=0, Y=0 e lo orienta verso destra
turtle.color("red") # Impostare il colore dell’oggetto usato per disegnare
turtle.left(90 + ANG) # Modificare l'angolo corrente di ANG gradi verso sinistra
DIS_QUAD(90-ANG, RAG) # Chiamare la funzione DIS_QUAD() previo trasferimento del contenuto delle variabili ANG e RAG.
turtle.home() # Posiziona l’oggetto con cui scrive nel punto del piano cartesiano avente coordinate X=0, Y=0 e lo orienta verso destra
turtle.home() # Posizionare l’oggetto con cui scrive nel punto del piano cartesiano avente coordinate X=0, Y=0 e lo orienta verso destra
turtle.color("black") # Impostare il colore dell’oggetto usato per disegnare
turtle.penup() # Impedire di disegnare.
turtle.goto(-RAG * 1.5, -RAG / 2) # Impostare le coordinate del punto iniziale della prossima linea.
turtle.pendown() # Consentire di disegnare.
turtle.begin_fill() # Prima istruzione per disegnare una figura piena di colore
turtle.circle(-RAG) # Tracciare una circonferenza avente raggio = -RAG (punti)
turtle.end_fill() # Ultima istruzione per disegnare una figura piena del colore corrente
turtle.color("blue") # Impostare il colore dell’oggetto usato per disegnare
turtle.penup() # Impedire di disegnare.
turtle.forward(RAG * 1.5) # Spostare il puntatore in avanti
turtle.left(ANG) # Modifica l'angolo corrente di ANG gradi verso sinistra
turtle.forward(RAG * 1.5) # Spostare il puntatore in avanti
turtle.pendown() # Consentire di disegnare.
DIS_CER(ANG, RAG) # Chiamare la funzione DIS_CER() previo trasferimento del contenuto delle variabili ANG e RAG.
turtle.penup() # Impedire di disegnare.
turtle.home() # Posiziona l’oggetto con cui scrive nel punto del piano cartesiano avente coordinate X=0, Y=0 e lo orienta verso destra
turtle.color("DarkRed") # Impostare il colore dell’oggetto usato per disegnare
turtle.forward(-RAG * 1.5) # Impedire di disegnare.
turtle.left(ANG) # Modifica l'angolo corrente di ANG gradi verso sinistra
turtle.forward(RAG * 0.5) # Spostare il puntatore in avanti
turtle.left(180-ANG) # Modifica l'angolo corrente di ANG gradi verso sinistra
turtle.pendown() # Consentire di disegnare.
DIS_CER(90-ANG, RAG) # Chiamare la funzione DIS_CER() previo trasferimento del contenuto delle variabili ANG e RAG.
turtle.penup() # Impedire di disegnare.
turtle.home() # Posiziona l’oggetto con cui scrive nel punto del piano cartesiano avente coordinate X=0, Y=0 e lo orienta verso destra
turtle.mainloop() # Attende che l'utente chiuda il piano cartesiano
# turtle.exitonclick() # Chiude il piano cartesiano cliccando su di esso.
#