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
Cassini - disegno.py

disegno.py

Caricato da: Poggi Marco
Scarica il programma completo

  1. from tkinter import *
  2. from punto import Punto
  3.  
  4. class Disegno:
  5.  
  6.      def __init__(self, tavola, bassoSinistra, altoDestra):
  7.           """Costruttore"""
  8.           self.tavola=tavola
  9.           self.origine=bassoSinistra.clona()
  10.           self.scale=Punto()
  11.           self.scale.x=float(tavola['width'])/(altoDestra.x-bassoSinistra.x)
  12.           self.scale.y=float(tavola['height'])/(altoDestra.y-bassoSinistra.y)
  13.           self.colore='green'
  14.           self.spessore=1
  15.  
  16.      def converti(self, punto):
  17.           """Trasla le coordinate"""
  18.           nuovo=Punto()
  19.           nuovo.x=self.scale.x*(punto.x-self.origine.x)
  20.           nuovo.y=float(self.tavola['height'])-self.scale.y*(punto.y-self.origine.y)
  21.           if (nuovo.x<0.0):
  22.                nuovo.x=-1
  23.           if (nuovo.x>float(self.tavola['width'])):
  24.                nuovo.x=float(self.tavola['width'])+3
  25.           if (nuovo.y<0.0):
  26.                nuovo.y=-1
  27.           if (nuovo.y>float(self.tavola['height'])):
  28.                nuovo.x=float(self.tavola['height'])+3
  29.           return nuovo
  30.  
  31.      def linea(self, inizio, fine):
  32.           """Disegna una linea"""
  33.           a=self.converti(inizio)
  34.           b=self.converti(fine)
  35.           self.tavola.create_line(int(a.x), int(a.y), int(b.x), int(b.y), fill=self.colore, width=self.spessore)
  36.  
  37.      def assi(self, colore):
  38.           """Disegna gli assi cartesiani"""
  39.           a=self.converti(Punto())
  40.           self.tavola.create_line(int(a.x), 0, int(a.x), int(self.tavola['height']), fill=colore, width=self.spessore)
  41.           self.tavola.create_line(0, int(a.y), int(self.tavola['width']), int(a.y), fill=colore, width=self.spessore)