TI/Klasy - ćwiczenia

Z Brain-wiki
Wersja z dnia 11:23, 16 kwi 2019 autorstwa Tgub (dyskusja | edycje) (Utworzono nową stronę "<source lang="python"> #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue Apr 16 12:49:54 2019 @author: tgub """ import numpy as np import pylab as py ta...")
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 16 12:49:54 2019

@author: tgub
"""
import numpy as np
import pylab as py
tab=np.zeros((100,100))


class Punkt():
    def __init__(self,x,y):
        self.x=x
        self.y=y

class Odcinek():
    def __init__(self,a,b):
        self.a=a
        self.b=b
    def rysuj(self,tablica):
        dx=(self.b.x-self.a.x)
        dy=(self.b.y-self.a.y)
        if abs(dx)>=abs(dy):
            slope=dy/dx
            for x in np.linspace(self.a.x,self.b.x,abs(dx)+1):
                y= slope*(x-self.a.x)+self.a.y
                tablica[int(round(x)),int(round(y))]=1
        else:
            slope=dx/dy
            for y in np.linspace(self.a.y,self.b.y,abs(dy)+1):
                x= slope*(y-self.a.y)+self.a.x
                tablica[int(round(x)),int(round(y))]=1
                
class Wielokat():
    def __init__(self,*args):
        self.points=args
    def rysuj(self,tab):
        for n in range(len(self.points)):
            Odcinek(self.points[n],self.points[(n+1)%len(self.points)]).rysuj(tab)
        

k=Wielokat(Punkt(10,10),Punkt(20,90),Punkt(60,70),Punkt(90,15))
k.rysuj(tab)
py.imshow(tab,cmap = py.cm.gray, interpolation = 'nearest')
py.show()