Advertisement
Laster_Alex

Plot Code

Dec 11th, 2021
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.62 KB | None | 0 0
  1. from tkinter import*
  2. from math import trunc
  3. import numpy
  4. import numpy as np
  5.  
  6.  
  7. def x_to_px(x_, x_max, x_min):
  8.     return (x_ - x_min)/(x_max - x_min) * width
  9.  
  10.  
  11. def y_to_px(y_, y_max, y_min):
  12.     return (y_max - y_) / (y_max - y_min) * height
  13.  
  14.  
  15. def draw_small_graph(points: list):
  16.     for coord in range(len(points)):
  17.         fll = points[coord][2]
  18.         size = 1
  19.         c.create_oval(points[coord][0] - size, points[coord][1] - size, points[coord][0] + size,
  20.                       points[coord][1] + size, fill=fll, outline=fll)
  21.  
  22.  
  23. def is_int(number):
  24.     if int(number) == float(number):
  25.         return True
  26.     return False
  27.  
  28.  
  29. def gcd(n, m):
  30.     n, m = abs(float(n)), abs(float(m))
  31.     if is_int(n) and is_int(m):
  32.         try:
  33.             if n > m:
  34.                 r = n % m
  35.                 if r == 0:
  36.                     return m
  37.                 else:
  38.                     return gcd(m, r)
  39.             else:
  40.                 r = m % n
  41.                 if r == 0:
  42.                     return n
  43.                 else:
  44.                     return gcd(r, n)
  45.         except RecursionError:
  46.             return 1
  47.         except ZeroDivisionError:
  48.             return 1
  49.     else:
  50.         return 1
  51.  
  52.  
  53. def math_of_graph1(x_len, y_len):
  54.     points = []
  55.     for x in np.arange(-x_len, x_len, 0.006):
  56.         for y in np.arange(-y_len, y_len, 0.006):
  57.             if (abs(x**5-y**5)+abs(x**5+y**5)<2) and (x**2+abs(y) >= 1):
  58.                 color = "#00FF7F"
  59.                 points.append([x, y, color])
  60.     return points
  61.  
  62.  
  63. def math_of_graph2(x_len, y_len):
  64.     points = []
  65.     for x in np.arange(-x_len, x_len, 0.06):
  66.         for y in np.arange(-y_len, y_len, 0.06):
  67.             if (trunc(x)**2 + trunc(y)**2 <= 9) ^ (trunc(x)**2+trunc(y**2) > 4):
  68.                 color = "#00FF7F"
  69.                 points.append([x, y, color])
  70.     return points
  71.  
  72.  
  73. def convert_to_pixels(points: list, x_max, x_min, y_max, y_min):
  74.     px_points = []
  75.     for i in points:
  76.         px_points.append((x_to_px(i[0], x_max, x_min), y_to_px(i[1], y_max, y_min), i[2]))
  77.  
  78.     return px_points
  79.  
  80.  
  81. root = Tk()
  82. root.title("The Plot")
  83.  
  84. width = 700
  85. height = 700
  86.  
  87. c = Canvas(root, width=width, height=height, bg="gray15")
  88. c.pack()
  89.  
  90.  
  91. # Функции. Что бы посмотреть на другой граф, раскомментируйте одну функцию, и закомментируйте другую.
  92.  
  93. # draw_small_graph(convert_to_pixels(math_of_graph1(1.5, 1.5), x_max=1.5, x_min=-1.5, y_max=1.5, y_min=-1.5))
  94. draw_small_graph(convert_to_pixels(math_of_graph2(6, 6), x_max=6, x_min=-6, y_max=6, y_min=-6))
  95.  
  96.  
  97. root.mainloop()
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement