Advertisement
Guest User

Untitled

a guest
May 3rd, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 20.58 KB | None | 0 0
  1. import tkinter
  2. from tkinter import filedialog as fd
  3. import math
  4.  
  5. class Program(object):
  6.  
  7.     def __init__(self):
  8.         self.matica = [[100,0,0,0],[0,-100,0,0],[0,0,100,0],[300,200,0,1]]
  9.         self.zaciatok = [[1,0,0,0],[0,1,0,0],[0,0,0,0],[-300,-200,0,1]]
  10.         self.spat = [[1,0,0,0],[0,1,0,0],[0,0,0,0],[300,200,0,1]]
  11.         self.angle = math.radians(5)
  12.         self.subor = ""
  13.         self.report = ""
  14.         master = tkinter.Tk()
  15.         self.g = tkinter.Canvas(height= 400, width = 600, bg = "white")
  16.  
  17.         self.red = tkinter.StringVar()
  18.         self.green = tkinter.StringVar()
  19.         self.blue = tkinter.StringVar()
  20.         self.intenzita_value = tkinter.StringVar()
  21.         self.x_surad=tkinter.StringVar()
  22.         self.y_surad=tkinter.StringVar()
  23.         self.z_surad=tkinter.StringVar()
  24.         self.color=''
  25.         self.light = [100,0,0]
  26.         self.rendered = False
  27.         self.sila=10
  28.         self._oldvaluex=0
  29.         self._oldvaluey=0
  30.         self._oldvaluez=0
  31.         self.kolkox=0
  32.         self.vrcholy=[]
  33.         self.posx=0
  34.         self.posz=0
  35.         self.posy=0
  36.         self.color=''
  37.         self.rgb=None
  38.         self.sila=10
  39.         self.sur_svetla=[3,3,5]
  40.        
  41.         self.g.grid(row=0,column=0,columnspan=20)
  42.         load_button = tkinter.Button(master, text="LOAD .obj FILE", command=self.load)
  43.         load_button.grid(row=1,column=1)
  44.        
  45.         draw_button = tkinter.Button(master, text="DRAW", command=self.draw)
  46.         draw_button.grid(row=2,column=1)
  47.  
  48.  
  49.         txplus_button = tkinter.Button(master, text="x+", command=self.trans_x)
  50.         txplus_button.grid(row=1,column=2)
  51.         txminus_button = tkinter.Button(master, text="x-", command=lambda:self.trans_x(False))
  52.         txminus_button.grid(row=1,column=3)
  53.  
  54.         typlus_button = tkinter.Button(master, text="y+", command=self.trans_y)
  55.         typlus_button.grid(row=2,column=2)
  56.         tyminus_button = tkinter.Button(master, text="y-", command=lambda:self.trans_y(False))
  57.         tyminus_button.grid(row=2,column=3)
  58.  
  59.         tzplus_button = tkinter.Button(master, text="z+", command=self.trans_z)
  60.         tzplus_button.grid(row=3,column=2)
  61.         tzminus_button = tkinter.Button(master, text="z-", command=lambda:self.trans_z(False))
  62.         tzminus_button.grid(row=3,column=3)
  63.  
  64.  
  65.  
  66.         splus_button = tkinter.Button(master, text="scale+", command=self.scale)
  67.         splus_button.grid(row=1,column=4)
  68.  
  69.         sminus_button = tkinter.Button(master, text="scale-", command=lambda:self.scale(False))
  70.         sminus_button.grid(row=2,column=4)
  71.  
  72.        
  73.  
  74.  
  75.  
  76.         rxplus_button = tkinter.Button(master, text="rotate x+", command=self.rot_x)
  77.         rxplus_button.grid(row=1,column=5)
  78.         rxminus_button = tkinter.Button(master, text="rotate x-", command=lambda:self.rot_x(False))
  79.         rxminus_button.grid(row=1,column=6)
  80.  
  81.         ryplus_button = tkinter.Button(master, text="rotate y+", command=self.rot_y)
  82.         ryplus_button.grid(row=2,column=5)
  83.         ryminus_button = tkinter.Button(master, text="rotate y-", command=lambda:self.rot_y(False))
  84.         ryminus_button.grid(row=2,column=6)
  85.  
  86.         rzplus_button = tkinter.Button(master, text="rotate z+", command=self.rot_z)
  87.         rzplus_button.grid(row=3,column=5)
  88.         rzminus_button = tkinter.Button(master, text="rotate z-", command=lambda:self.rot_z(False))
  89.         rzminus_button.grid(row=3,column=6)
  90.  
  91.  
  92.  
  93.        
  94.  
  95.         self.label_intenzita=tkinter.Label(master,text="Intenzita:")
  96.         self.label_intenzita.grid(row=4,column=7)
  97.         self.intenzita=tkinter.Entry(master,textvariable=self.intenzita_value,width=8)
  98.         self.intenzita.grid(row=4,column=8)
  99.  
  100.         self.label_x=tkinter.Label(master,text="  X:  ")
  101.         self.label_x.grid(row=1,column=9)
  102.         self.vstup_x=tkinter.Entry(master,textvariable=self.x_surad,width=8)
  103.         self.vstup_x.grid(row=1,column=10)
  104.  
  105.         self.label_y=tkinter.Label(master,text="  Y:  ")
  106.         self.label_y.grid(row=2,column=9)
  107.         self.vstup_y=tkinter.Entry(master,textvariable=self.y_surad,width=8)
  108.         self.vstup_y.grid(row=2,column=10)
  109.  
  110.         self.label_z=tkinter.Label(master,text="  Z:  ")
  111.         self.label_z.grid(row=3,column=9)
  112.         self.vstup_z=tkinter.Entry(master,textvariable=self.z_surad,width=8)
  113.         self.vstup_z.grid(row=3,column=10)
  114.  
  115.         self.re_paint=tkinter.Button(master,width=15,text="WireFrame",command=self.repaint)
  116.         self.re_paint.grid(row=2,column=7)
  117.  
  118.         self.render=tkinter.Button(master,width=15,text="Render",command=self.render)
  119.         self.render.grid(row=1,column=7)
  120.        
  121.         tkinter.mainloop()
  122.        
  123.     def draw(self):
  124.         self.g.delete("all")
  125.         self.zaciatok = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[-300,-200,0,1]]
  126.         self.spat = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[300,200,0,1]]
  127.         if self.subor == "":
  128.              self.report = self.g.create_text(85,390, text = "No file loaded", font = "Arial 20", fill = "red")
  129.              return
  130.            
  131.         if self.report:
  132.                 self.g.delete(self.report)
  133.                
  134.         t = open(self.subor, "r")
  135.         pole = list()
  136.         for riadok in t:
  137.             pole_riadok = riadok.strip().split()
  138.            
  139.             if pole_riadok[0] in "vf":
  140.                 pole.append(pole_riadok)
  141.         self.vertices = list()
  142.         self.edges = list()
  143.         for prvok in pole:
  144.             if prvok[0] == "v":
  145.                 prvok.append("1")
  146.                 prvok = [prvok[1],prvok[2],prvok[3],prvok[4]]
  147.                 novy_bod = self.nasob_maticou(prvok, self.matica,False)
  148.                 self.vertices.append((novy_bod[0], novy_bod[1], novy_bod[2], novy_bod[3]))
  149.             elif prvok[0] == "f":
  150.  
  151.                 points = [(self.vertices[int(x)-1][0],self.vertices[int(x)-1][1]) for x in prvok[1:]]
  152.                 points2 = [(self.vertices[int(x)-1][0],self.vertices[int(x)-1][1],self.vertices[int(x)-1][2] ) for x in prvok[1:]]
  153.                 if len(points) >=3:
  154.                     self.edges.append((self.g.create_polygon(points,fill = "", outline = "black"),points2))
  155.                 else:
  156.                     self.edges.append((self.g.create_line(points),points2))
  157.     def repaint(self):
  158.         if self.rendered:
  159.             if self.red.get():
  160.                 if 0<=int(self.red.get())<=255:
  161.                     self.color[0]=int(self.red.get())
  162.             if self.green.get():
  163.                 if 0<=int(self.green.get())<=255:
  164.                     self.color[1]=int(self.green.get())
  165.             if self.blue.get():
  166.                 if 0<=int(self.blue.get())<=255:
  167.                     self.color[2]=int(self.blue.get())
  168.             if self.intenzita_value.get():
  169.                 if 0<=float(self.intenzita_value.get())<1:
  170.                     self.intenzita=float(self.intenzita_value.get())
  171.             if self.x_surad.get():
  172.                 self.light[0]=int(self.x_surad.get())
  173.             if self.y_surad.get():
  174.                 self.light[1]=int(self.y_surad.get())
  175.             if self.z_surad.get():
  176.                 self.light[2]=int(self.z_surad.get())
  177.         self.re_draw()
  178.  
  179.     def render(self):
  180.         try:
  181.             farba=tkinter.colorchooser.askcolor()
  182.             self.g.delete('all')
  183.             self.rgb=farba[0]
  184.             self.color=farba[1]
  185.             self.kresli()
  186.         except:
  187.             self.color=''
  188.             pass
  189.        
  190.     def farba(self,intenzita):
  191.         a=self.rgb[0]*intenzita
  192.         b=self.rgb[1]*intenzita
  193.         c=self.rgb[2]*intenzita
  194.         a=round(a,0)
  195.         b=round(b,0)
  196.         c=round(c,0)
  197.         farba='#{0:02x}{1:02x}{2:02x}'.format(int(a), int(b), int(c))
  198.         return farba
  199.    
  200.     def kresli(self):
  201.         vidit=0
  202.         i=0
  203.         if self.color!='':      
  204.             for p in self.edges:
  205.                 vidit=self.vektor(p[1])
  206.                 print(p[1])
  207.                 i=self.intensity(p[1])
  208.                 if vidit < 0:
  209.                     if i >0 and i <1:
  210.                         self.color=self.farba(i)
  211.                     elif i>=1:
  212.                         self.color='white'
  213.                     elif i<=0:
  214.                         self.color='black'
  215.                     self.g.create_polygon(p,fill=self.color,outline=self.color)
  216.                
  217.         else:
  218.             for p in self.pocitanie():
  219.                 for j in range(len(p)):
  220.                     p[j]=p[j][:2]
  221.                 self.g.create_polygon(p,fill=self.color,outline='black')
  222.                
  223.     def re_draw(self):
  224.         edges_temp = list()
  225.         for prvok in self.edges:
  226.             farba = self.get_color(prvok[1])
  227.             edges_temp.append((self.g.create_polygon(prvok[1],fill = farba, outline = "black"),prvok[1]))
  228.         self.edges = edges_temp
  229.  
  230.     def intensity(self,pole):
  231.         v1=self.svetlo(pole)
  232.         v2=self.vektor1(pole)
  233.         return (v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2])*self.sila
  234.      
  235.     def stredny_bod(self,pole):
  236.         print("styri")
  237.         if len(pole)==3:
  238.             print("styri1")
  239.             return [(pole[0][0]+pole[1][0]+pole[2][0])/3,(pole[0][1]+pole[1][1]+pole[2][1])/3,(pole[0][2]+pole[1][2]+pole[2][2])/3]
  240.         if len(pole)==4:
  241.             print("styri2")
  242.             return [(pole[0][0]+pole[1][0]+pole[2][0]+pole[3][0])/4,(pole[0][1]+pole[1][1]+pole[2][1]+pole[3][1])/4,(pole[0][2]+pole[1][2]+pole[2][2]+pole[3][2])/4]
  243.  
  244.     def vektor1(self,pole):
  245.         s_vektor1=[0,0,0]
  246.         s_vektor2=[0,0,0]
  247.         v1=[]
  248.         normal=[]
  249.         for i in pole:
  250.             v1.append(i)
  251.         s_vektor1[0]=v1[1][0]-v1[0][0]
  252.         s_vektor1[1]=v1[1][1]-v1[0][1]
  253.         s_vektor1[2]=v1[1][2]-v1[0][2]
  254.         s_vektor2[0]=v1[2][0]-v1[0][0]
  255.         s_vektor2[1]=v1[2][1]-v1[0][1]
  256.         s_vektor2[2]=v1[2][2]-v1[0][2]
  257.         normal=[(s_vektor1[1]*s_vektor2[2])-(s_vektor1[2]*s_vektor2[0]),(s_vektor1[2]*s_vektor2[0])-(s_vektor1[0]*s_vektor2[2]),(s_vektor1[0]*s_vektor2[1])-(s_vektor1[1]*s_vektor2[0])]
  258.         velkost=(normal[0]**2+normal[1]**2+normal[2]**2)**(1/2)
  259.         normal[0]=normal[0]/velkost
  260.         normal[1]=normal[1]/velkost
  261.         normal[2]=normal[2]/velkost
  262.         return normal
  263.  
  264.     def svetlo(self,pole):
  265.         print("som tu3")
  266.         v1=self.stredny_bod(pole)
  267.         smer=[0,0,0]
  268.         smer[0]= self.sur_svetla[0]-v1[0]
  269.         smer[1]= self.sur_svetla[1]-v1[1]
  270.         smer[2]= self.sur_svetla[2]-v1[2]
  271.         velkost=(smer[0]**2+smer[1]**2+smer[2]**2)**(1/2)
  272.         smer[0]=smer[0]/velkost
  273.         smer[1]=smer[0]/velkost
  274.         smer[2]=smer[0]/velkost
  275.         return smer
  276.  
  277.     def vektor(self,pole):
  278.         print("aj tu")
  279.         s_vektor1=[0,0,0]
  280.         s_vektor2=[0,0,0]
  281.         v1=[]
  282.         normal=[]
  283.         for i in pole:
  284.             v1.append(i)
  285.         s_vektor1[0]=v1[1][0]-v1[0][0]
  286.         s_vektor1[1]=v1[1][1]-v1[0][1]
  287.         s_vektor1[2]=v1[1][2]-v1[0][2]
  288.         s_vektor2[0]=v1[2][0]-v1[1][0]
  289.         s_vektor2[1]=v1[2][1]-v1[1][1]
  290.         s_vektor2[2]=v1[2][2]-v1[1][2]
  291.         normal=[(s_vektor1[1]*s_vektor2[2])-(s_vektor1[2]*s_vektor2[0]),(s_vektor1[2]*s_vektor2[0])-(s_vektor1[0]*s_vektor2[2]),(s_vektor1[0]*s_vektor2[1])-(s_vektor1[1]*s_vektor2[0])]
  292.         kam=[0,0,1]
  293.         uhol=kam[0]*normal[0]+kam[1]*normal[1]+kam[2]*normal[2]
  294.         return uhol    
  295.    
  296.     def nasob_maticou(self, bod, matica,normal = True):
  297.         if normal == False:
  298.             novy_bod = [None, None, None, None]
  299.             novy_bod[0] = float(bod[0])*matica[0][0] + float(bod[1])*matica[1][0] + float(bod[2])*matica[2][0] + float(bod[3])*matica[3][0]
  300.             novy_bod[1] = float(bod[0])*matica[0][1] + float(bod[1])*matica[1][1] + float(bod[2])*matica[2][1] + float(bod[3])*matica[3][1]
  301.             novy_bod[2] = float(bod[0])*matica[0][2] + float(bod[1])*matica[1][2] + float(bod[2])*matica[2][2] + float(bod[3])*matica[3][2]
  302.             novy_bod[3] = float(bod[0])*matica[0][3] + float(bod[1])*matica[1][3] + float(bod[2])*matica[2][3] + float(bod[3])*matica[3][3]
  303.             return novy_bod
  304.         else:
  305.             novy_bod = [None, None, None, None]
  306.             novy_bod[0] = bod[0]*matica[0][0] + bod[1]*matica[1][0] + bod[2]*matica[2][0] + bod[3]*matica[3][0]
  307.             novy_bod[1] = bod[0]*matica[0][1] + bod[1]*matica[1][1] + bod[2]*matica[2][1] + bod[3]*matica[3][1]
  308.             novy_bod[2] = bod[0]*matica[0][2] + bod[1]*matica[1][2] + bod[2]*matica[2][2] + bod[3]*matica[3][2]
  309.             novy_bod[3] = bod[0]*matica[0][3] + bod[1]*matica[1][3] + bod[2]*matica[2][3] + bod[3]*matica[3][3]
  310.             return novy_bod
  311.     def trans_x(self,normal = True):
  312.         self.g.delete("all")
  313.         if normal:
  314.             trans = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[5,0,0,1]]
  315.             self.zaciatok[3][0] -= 5
  316.             self.spat[3][0] += 5
  317.         else:
  318.             trans = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[-5,0,0,1]]
  319.             self.zaciatok[3][0] += 5
  320.             self.spat[3][0] -= 5
  321.         edges_new = list()
  322.         for prvok in self.edges:
  323.             nove_pole = list()
  324.             nove_pole2 = list()
  325.             for bod in prvok[1]:
  326.                 bod = (bod[0],bod[1],bod[2],1)
  327.                 new_bod = self.nasob_maticou(bod,trans)
  328.                 nove_pole.append((new_bod[0],new_bod[1], new_bod[2]))
  329.                 nove_pole2.append((new_bod[0],new_bod[1]))
  330.             edges_new.append((self.g.create_polygon(nove_pole2,fill = "", outline = "black"),nove_pole))
  331.         self.edges = edges_new
  332.  
  333.        
  334.     def trans_y(self, normal = True):
  335.         self.g.delete("all")
  336.         if normal:
  337.             trans = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,5,0,1]]
  338.             self.zaciatok[3][1] -= 5
  339.             self.spat[3][1] += 5
  340.         else:
  341.             trans = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,-5,0,1]]
  342.             self.zaciatok[3][1] += 5
  343.             self.spat[3][1] -= 5
  344.         edges_new = list()
  345.         for prvok in self.edges:
  346.             nove_pole = list()
  347.             nove_pole2 = list()
  348.             for bod in prvok[1]:
  349.                 bod = (bod[0],bod[1],bod[2],1)
  350.                 new_bod = self.nasob_maticou(bod,trans)
  351.                 nove_pole.append((new_bod[0],new_bod[1], new_bod[2]))
  352.                 nove_pole2.append((new_bod[0],new_bod[1]))
  353.             edges_new.append((self.g.create_polygon(nove_pole2,fill = "", outline = "black"),nove_pole))
  354.         self.edges = edges_new
  355.  
  356.  
  357.     def trans_z(self, normal = True):
  358.         self.g.delete("all")
  359.         if normal:
  360.             trans = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,5,1]]
  361.             self.zaciatok[3][2] -= 5
  362.             self.spat[3][2] += 5
  363.         else:
  364.             trans = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,-5,1]]
  365.             self.zaciatok[3][2] += 5
  366.             self.spat[3][2] -= 5
  367.         edges_new = list()
  368.         for prvok in self.edges:
  369.             nove_pole = list()
  370.             nove_pole2 = list()
  371.             for bod in prvok[1]:
  372.                 bod = (bod[0],bod[1],bod[2],1)
  373.                 new_bod = self.nasob_maticou(bod,trans)
  374.                 nove_pole.append((new_bod[0],new_bod[1], new_bod[2]))
  375.                 nove_pole2.append((new_bod[0],new_bod[1]))
  376.             edges_new.append((self.g.create_polygon(nove_pole2,fill = "", outline = "black"),nove_pole))
  377.         self.edges = edges_new
  378.  
  379.     def scale(self, normal = True):
  380.         self.g.delete("all")
  381.         if normal:
  382.             scale = [[1.1,0,0,0],[0,1.1,0,0],[0,0,1.1,0],[0,0,0,1]]
  383.         else:
  384.             scale = [[0.9,0,0,0],[0,0.9,0,0],[0,0,0.9,0],[0,0,0,1]]
  385.        
  386.         edges_new = list()
  387.        
  388.         self.start()
  389.  
  390.         for prvok in self.edges:
  391.             nove_pole = list()
  392.             for bod in prvok[1]:
  393.                 bod = (bod[0],bod[1],bod[2],1)
  394.                 new_bod = self.nasob_maticou(bod,scale)
  395.                 nove_pole.append((new_bod[0],new_bod[1], new_bod[2]))
  396.                 points = [(x[0],x[1]) for x in nove_pole]
  397.             edges_new.append((None,nove_pole))
  398.         self.edges = edges_new        
  399.        
  400.         self.back()
  401.        
  402.  
  403.     def rot_x(self, normal = True):
  404.         self.g.delete("all")
  405.         if normal:
  406.             rotation = [[1,0,0,0],
  407.                   [0,math.cos(self.angle),-math.sin(self.angle),0],
  408.                   [0,math.sin(self.angle),math.cos(self.angle),0],
  409.                   [0,0,0,1]]
  410.         else:
  411.             rotation = [[1,0,0,0],
  412.                   [0,math.cos(self.angle),math.sin(self.angle),0],
  413.                   [0,-math.sin(self.angle),math.cos(self.angle),0],
  414.                   [0,0,0,1]]
  415.  
  416.         edges_new = list()
  417.        
  418.         self.start()
  419.  
  420.         for prvok in self.edges:
  421.             nove_pole = list()
  422.             for bod in prvok[1]:
  423.                 bod = (bod[0],bod[1],bod[2],1)
  424.                 new_bod = self.nasob_maticou(bod,rotation)
  425.                 nove_pole.append((new_bod[0],new_bod[1], new_bod[2]))
  426.                 points = [(x[0],x[1]) for x in nove_pole]
  427.             edges_new.append((None,nove_pole))
  428.         self.edges = edges_new        
  429.        
  430.         self.back()
  431.    
  432.     def rot_y(self, normal = True):
  433.         self.g.delete("all")
  434.         if normal:
  435.             rotation = [[math.cos(self.angle),0,-math.sin(self.angle),0],
  436.                   [0,1,0,0],
  437.                   [math.sin(self.angle),0,math.cos(self.angle),0],
  438.                   [0,0,0,1]]
  439.         else:
  440.             rotation = [[math.cos(self.angle),0,math.sin(self.angle),0],
  441.                   [0,1,0,0],
  442.                   [-math.sin(self.angle),0,math.cos(self.angle),0],
  443.                   [0,0,0,1]]
  444.         edges_new = list()
  445.  
  446.         self.start()
  447.  
  448.         for prvok in self.edges:
  449.             nove_pole = list()
  450.             for bod in prvok[1]:
  451.                 bod = (bod[0],bod[1],bod[2],1)
  452.                 new_bod = self.nasob_maticou(bod,rotation)
  453.                 nove_pole.append((new_bod[0],new_bod[1], new_bod[2]))
  454.                 points = [(x[0],x[1]) for x in nove_pole]
  455.             edges_new.append((None,nove_pole))
  456.         self.edges = edges_new        
  457.        
  458.         self.back()
  459.    
  460.     def rot_z(self, normal = True):
  461.         self.g.delete("all")
  462.         if normal:
  463.             rotation = [[math.cos(self.angle),-math.sin(self.angle),0,0],
  464.                   [math.sin(self.angle),math.cos(self.angle),0,0],
  465.                   [0,0,1,0],
  466.                   [0,0,0,1]]
  467.         else:
  468.             rotation = [[math.cos(self.angle),math.sin(self.angle),0,0],
  469.                   [-math.sin(self.angle),math.cos(self.angle),0,0],
  470.                   [0,0,1,0],
  471.                   [0,0,0,1]]
  472.         edges_new = list()
  473.  
  474.         self.start()
  475.  
  476.         for prvok in self.edges:
  477.             nove_pole = list()
  478.             for bod in prvok[1]:
  479.                 bod = (bod[0],bod[1],bod[2],1)
  480.                 new_bod = self.nasob_maticou(bod,rotation)
  481.                 nove_pole.append((new_bod[0],new_bod[1], new_bod[2]))
  482.                 points = [(x[0],x[1]) for x in nove_pole]
  483.             edges_new.append((None,nove_pole))
  484.         self.edges = edges_new
  485.        
  486.         self.back()
  487.        
  488.     def start(self):
  489.         edges_new = list()
  490.         for prvok in self.edges:
  491.             nove_pole = list()
  492.             for bod in prvok[1]:
  493.                 bod = (bod[0],bod[1],bod[2],1)
  494.                 new_bod = self.nasob_maticou(bod,self.zaciatok)
  495.                 nove_pole.append((new_bod[0],new_bod[1], new_bod[2]))
  496.                 points = [(x[0],x[1]) for x in nove_pole]
  497.             edges_new.append((None,nove_pole))
  498.         self.edges = edges_new
  499.        
  500.     def back(self):
  501.         edges_new = list()
  502.         for prvok in self.edges:
  503.             nove_pole = list()
  504.             for bod in prvok[1]:
  505.                 bod = (bod[0],bod[1],bod[2],1)
  506.                 new_bod = self.nasob_maticou(bod,self.spat)
  507.                 nove_pole.append((new_bod[0],new_bod[1], new_bod[2]))
  508.                 points = [(x[0],x[1]) for x in nove_pole]
  509.             edges_new.append((self.g.create_polygon(points,fill = "", outline = "black"),nove_pole))
  510.         self.edges = edges_new
  511.        
  512.     def load(self):
  513.         self.subor = fd.askopenfilename()
  514.         if self.subor[-4:] != ".obj":
  515.             if self.report:
  516.                 self.g.delete(self.report)
  517.             self.report = self.g.create_text(110,385, text = "Wrong file format", font = "Arial 20" , fill = "red")
  518.             self.subor = ""
  519.         else:
  520.             if self.report:
  521.                 self.g.delete(self.report)
  522.             self.report = self.g.create_text(140,390, text = "File loaded...let's draw", font = "Arial 20")          
  523.  
  524. a = Program()
  525. #a.draw("square.obj")
  526. #a.draw("cylinder.obj")
  527. #a.draw("monkey.obj")
  528. #a.draw("Buzz.obj")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement