Advertisement
jimkilled

GRAPHICS 8.1 graphics

Apr 12th, 2021 (edited)
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.63 KB | None | 0 0
  1. # GRAPHICS V8 graphics.py
  2. from math import *
  3.  
  4.  
  5. class Graphic():
  6.     def __init__(self, func, f_range=(-10000,10000), type_func='SIMPLE', hide_graphic=False):
  7.         self.function = func
  8.         self.type = type_func
  9.         self.l_range = f_range[0]
  10.         self.h_range = f_range[1]
  11.         self.hided = hide_graphic
  12.         self.dots = []
  13.         self.set_dots()
  14.         if self.dots[0].count(None) == len(self.dots[0]) and self.dots[1].count(None) == len(self.dots[1]):
  15.             self.dots = []
  16.             print(1)
  17.  
  18.     def set_dots(self):
  19.         if self.type == 'SIMPLE':
  20.             self.SIMPLE_set_dots()
  21.         elif self.type == 'POLAR':
  22.             self.POLAR_set_dots()
  23.  
  24.     def SIMPLE_set_dots(self):
  25.         x_dots = []
  26.         y_dots = []
  27.         for x in range(self.l_range, self.h_range+1):
  28.             try:
  29.                 x /= 100                                   # Уменьшение x для получения более точного рисунка графика
  30.                 y = self.set_y_value(x)
  31.                 x_dots.append(x)
  32.                 y_dots.append(y)
  33.             except Exception:
  34.                 x_dots.append(None)
  35.                 y_dots.append(None)
  36.                 continue
  37.         self.dots.append(x_dots)
  38.         self.dots.append(y_dots)
  39.  
  40.  
  41.     def POLAR_set_dots(self):
  42.         x_dots = []
  43.         y_dots = []
  44.         for t in range(0, int(2*pi*100)):
  45.             try:
  46.                 t /= 100                                   # Уменьшение x для получения более точного рисунка графика
  47.                 r = self.set_y_value(t)
  48.                 x = r * cos(t)
  49.                 y = r * sin(t)
  50.                 x_dots.append(x)
  51.                 y_dots.append(y)
  52.             except Exception:
  53.                 x_dots.append(None)
  54.                 y_dots.append(None)
  55.                 continue
  56.         self.dots.append(x_dots)
  57.         self.dots.append(y_dots)
  58.  
  59.  
  60.     def get_dots(self):
  61.         return self.dots
  62.  
  63.     def set_y_value(self, x):
  64.         if self.type == 'POLAR':
  65.             t = x
  66.         func = self.function
  67.         return eval(func)
  68.  
  69.     def get_y_value(self, x):
  70.         if x not in self.dots[0]:
  71.             try:
  72.                 y = self.set_y_value(x)
  73.                 return y
  74.             except Exception:
  75.                 return None
  76.         else:
  77.             index = self.dots[0].index(x)
  78.             return self.dots[1][index]
  79.  
  80. def main():
  81.     graph = Graphic('tg(x)',type_func='SIMPLE')
  82.     print(*graph.get_dots())
  83.  
  84.  
  85. if __name__ == '__main__':
  86.     main()
  87.  
  88. # made by George Golubev Lyceum №8
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement