daily pastebin goal
44%
SHARE
TWEET

Untitled

a guest Feb 19th, 2019 65 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from tkinter import *
  2. import random
  3. import math
  4. import numpy as np
  5.  
  6. root = Tk()
  7. root.geometry('800x600')
  8. c = Canvas(root, width=800, height=600, bg='white')
  9. c.pack()
  10.  
  11. max_rand = 0
  12.  
  13. line_array = [[random.randint(300,500), 0], [random.randint(400,600), 800]]
  14.  
  15.  
  16. def draw_line(self, x1=0, y1=0, x2=0, y2=0):
  17.     dx = x2 - x1
  18.     dy = y2 - y1
  19.  
  20.     sign_x = 1 if dx > 0 else -1 if dx < 0 else 0
  21.     sign_y = 1 if dy > 0 else -1 if dy < 0 else 0
  22.  
  23.     if dx < 0 :dx = -dx
  24.     if dy < 0 :dy = -dy
  25.  
  26.     if dx > dy:
  27.         pdx, pdy = sign_x, 0
  28.         es, el = dy, dx
  29.     else:
  30.         pdx, pdy = 0, sign_y
  31.         es, el = dx, dy
  32.  
  33.     x, y = x1, y1
  34.  
  35.     error, t = el / 2, 0
  36.  
  37.     c.create_line(x, y, x + 1, y)
  38.     while t < el:
  39.         error -= es
  40.         if error < 0:
  41.             error += el
  42.             x += sign_x
  43.             y += sign_y
  44.         else:
  45.             x += pdx
  46.             y += pdy
  47.         t += 1
  48.         c.create_line(x, y, x + 1, y)
  49.  
  50.  
  51. def check_x():
  52.     if line_array[0][0] < line_array[1][0]:
  53.         global max_rand
  54.         max_rand = line_array[0][0]
  55.     else:
  56.         max_rand = line_array[1][0]
  57.     return
  58.  
  59.  
  60. def slope():
  61.     dy = float(line_array[1][1] - line_array[0][1])
  62.     dx = float(line_array[1][0] - line_array[0][0])
  63.     k = float(math.atan(dy/dx))
  64.     return k
  65.  
  66.  
  67. try:
  68.     draw_line(c, line_array[0][0], line_array[0][1], line_array[1][0], line_array[1][1])
  69.  
  70.     check_x()
  71.  
  72.     triangle_array = [[random.randint(100, max_rand), random.randint(150, 500)],
  73.                   [random.randint(150, max_rand), random.randint(150, 500)],
  74.                   [random.randint(150, max_rand), random.randint(150, 500)]]
  75.  
  76.     draw_line(c, triangle_array[0][0], triangle_array[0][1], triangle_array[1][0], triangle_array[1][1])
  77.     draw_line(c, triangle_array[1][0], triangle_array[1][1], triangle_array[2][0], triangle_array[2][1])
  78.     draw_line(c, triangle_array[2][0], triangle_array[2][1], triangle_array[0][0], triangle_array[0][1])
  79.  
  80.     result1 = np.matmul([[triangle_array[0][0], triangle_array[0][1], 1],
  81.                          [triangle_array[1][0], triangle_array[1][1], 1],
  82.                          [triangle_array[2][0], triangle_array[2][1], 1]],
  83.                         [[1,0,0], [0,1,0], [-line_array[0][0], -line_array[0][1], 1]])
  84.  
  85.     result2 = np.matmul(result1, [[math.cos(-slope()), (math.sin(-slope())), 0],
  86.                                   [-math.sin(-slope()), (math.cos(-slope())), 0], [0, 0, 1]])
  87.  
  88.     result3 = np.matmul(result2, [[1, 0, 0], [0, -1, 0], [0, 0, 1]])
  89.  
  90.     result4 = np.matmul(result3, [[math.cos(slope()), (math.sin(slope())), 0],
  91.                                   [-math.sin(slope()), (math.cos(slope())), 0], [0, 0, 1]])
  92.  
  93.     result5 = np.matmul(result4, [[1, 0, 0], [0, 1, 0], [line_array[0][0], line_array[0][1], 1]])
  94.  
  95.     draw_line(c, result5[0][0], result5[0][1], result5[1][0], result5[1][1])
  96.     draw_line(c, result5[1][0], result5[1][1], result5[2][0], result5[2][1])
  97.     draw_line(c, result5[2][0], result5[2][1], result5[0][0], result5[0][1])
  98.  
  99. except:
  100.         pass
  101. root.mainloop()
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top