|
from tkinter import *
from punto import Punto
from disegno import Disegno
from cicloide import Cicloide
def domanda(messaggio, l1, l2):
"""Richiede un float da tastiera"""
while True:
print(messaggio, end='')
try:
x=float(input())
except ValueError:
print('Sono ammessi solo numeri')
continue
except OverflowError:
print('Si è inserito un valore troppo grande')
continue
if (x<l1) or (x>l2):
print("Si possono inserire numeri compresi tra %8.4f e %8.4f" %(l1, l2))
continue
return x
print(' Ipocicloide '.center(80, '-'))
re=domanda('Raggio esterno '.ljust(28, '.')+' ? ', 0.5, 9.5)
ri=domanda('Rapporto tra i raggi '.ljust(28, '.')+' ? ', 1.0, 500)
giri=domanda('Giri '.ljust(28, '.')+' ? ', 0.01, 500)
radice=Tk()
radice.title('Ipocicloide')
foglio=Canvas(radice, bg='#000000', width=800, height=800)
sb=Punto()
ad=Punto()
sb.x=-10.0
sb.y=sb.x
ad.x=-1*sb.x
ad.y=ad.x
omega=6.2831853*giri
c=Cicloide(re=re, ri=re/ri)
tela=Disegno(foglio, sb, ad)
alfa=0.0
inizio=c.calcola(alfa)
tela.assi('#ffffff')
while alfa<omega:
alfa+=0.01
fine=c.calcola(alfa)
tela.linea(inizio, fine)
inizio=fine.clona()
print('-'*80)
print('Fine... ')
foglio.pack()
radice.mainloop()
|
|