Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Ipocicloide - main.py

main.py

Caricato da: Poggi Marco
Scarica il programma completo

  1. from tkinter import *
  2. from punto import Punto
  3. from disegno import Disegno
  4. from cicloide import Cicloide
  5.  
  6. def domanda(messaggio, l1, l2):
  7.      """Richiede un float da tastiera"""
  8.      while True:
  9.           print(messaggio, end='')
  10.           try:
  11.                x=float(input())
  12.           except ValueError:
  13.                print('Sono ammessi solo numeri')
  14.                continue
  15.           except OverflowError:
  16.                print('Si è inserito un valore troppo grande')
  17.                continue
  18.           if (x<l1) or (x>l2):
  19.                print("Si possono inserire numeri compresi tra %8.4f e %8.4f" %(l1, l2))
  20.                continue
  21.           return x
  22.  
  23.  
  24. print(' Ipocicloide '.center(80, '-'))
  25. re=domanda('Raggio esterno '.ljust(28, '.')+' ? ', 0.5, 9.5)
  26. ri=domanda('Rapporto tra i raggi '.ljust(28, '.')+' ? ', 1.0, 500)
  27. giri=domanda('Giri '.ljust(28, '.')+' ? ', 0.01, 500)
  28. radice=Tk()
  29. radice.title('Ipocicloide')
  30. foglio=Canvas(radice, bg='#000000', width=800, height=800)
  31. sb=Punto()
  32. ad=Punto()
  33. sb.x=-10.0
  34. sb.y=sb.x
  35. ad.x=-1*sb.x
  36. ad.y=ad.x
  37. omega=6.2831853*giri
  38. c=Cicloide(re=re, ri=re/ri)
  39. tela=Disegno(foglio, sb, ad)
  40. alfa=0.0
  41. inizio=c.calcola(alfa)
  42. tela.assi('#ffffff')
  43. while alfa<omega:
  44.      alfa+=0.01
  45.      fine=c.calcola(alfa)
  46.      tela.linea(inizio, fine)
  47.      inizio=fine.clona()
  48. print('-'*80)
  49. print('Fine... ')
  50. foglio.pack()
  51. radice.mainloop()