from tkinter import *
from punto import Punto
class Disegno:
def __init__(self, tavola, bassoSinistra, altoDestra):
"""Costruttore"""
self.tavola=tavola
self.origine=bassoSinistra.clona()
self.scale=Punto()
self.scale.x=float(tavola['width'])/(altoDestra.x-bassoSinistra.x)
self.scale.y=float(tavola['height'])/(altoDestra.y-bassoSinistra.y)
self.colore='green'
self.spessore=1
def converti(self, punto):
"""Trasla le coordinate"""
nuovo=Punto()
nuovo.x=self.scale.x*(punto.x-self.origine.x)
nuovo.y=float(self.tavola['height'])-self.scale.y*(punto.y-self.origine.y)
if (nuovo.x<0.0):
nuovo.x=-1
if (nuovo.x>float(self.tavola['width'])):
nuovo.x=float(self.tavola['width'])+3
if (nuovo.y<0.0):
nuovo.y=-1
if (nuovo.y>float(self.tavola['height'])):
nuovo.x=float(self.tavola['height'])+3
return nuovo
def linea(self, inizio, fine):
"""Disegna una linea"""
a=self.converti(inizio)
b=self.converti(fine)
self.tavola.create_line(int(a.x), int(a.y), int(b.x), int(b.y), fill=self.colore, width=self.spessore)
def assi(self, colore):
"""Disegna gli assi cartesiani"""
a=self.converti(Punto())
self.tavola.create_line(int(a.x), 0, int(a.x), int(self.tavola['height']), fill=colore, width=self.spessore)
self.tavola.create_line(0, int(a.y), int(self.tavola['width']), int(a.y), fill=colore, width=self.spessore)