Advertisement
here2share

# tk_Radial_Scan_Visualizer.py

Jun 10th, 2025
447
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.54 KB | None | 0 0
  1. # tk_Radial_Scan_Visualizer.py
  2.  
  3. import math
  4. import tkinter as tk
  5. from tkinter import Canvas
  6. import time
  7.  
  8. ww = 640
  9. hh = 640
  10.  
  11. root = tk.Tk()
  12. root.title("Radial Scan Visualizer")
  13. root.geometry(f"{ww}x{hh}+0+0")
  14.  
  15. cell_size = 40
  16. font_size = 10
  17. n = 10
  18. grid_size = 20 * cell_size
  19. squares = {}
  20. cell_order = []
  21. visited = set()
  22.  
  23. drag_start_x = 0
  24. drag_start_y = 0
  25.  
  26. canvas = tk.Canvas(root, width=ww, height=hh, bg="white")
  27. canvas.pack(fill=tk.BOTH, expand=True)
  28.  
  29. for x in range(-n, n):
  30.     for y in range(-n, n):
  31.         canvas_x = (x + n) * cell_size
  32.         canvas_y = (-y + n - 1) * cell_size
  33.         rect_id = canvas.create_rectangle(
  34.             canvas_x,
  35.             canvas_y,
  36.             canvas_x + cell_size,
  37.             canvas_y + cell_size,
  38.             outline="black",
  39.             fill="white",
  40.             tag="cells",
  41.         )
  42.         squares[(x, y)] = rect_id
  43.         text_x = canvas_x + cell_size // 2
  44.         text_y = canvas_y + cell_size // 2
  45.         canvas.create_text(
  46.             text_x,
  47.             text_y,
  48.             text=f"{x},{y}",
  49.             font=("Arial", font_size),
  50.             fill="black",
  51.         )
  52.  
  53. for angle_deg in range(90):
  54.     angle_rad = math.radians(angle_deg)
  55.     cos_val = math.cos(angle_rad)
  56.     sin_val = math.sin(angle_rad)
  57.     for r in range(n + 1):
  58.         x = int(r * cos_val)
  59.         y = int(r * sin_val)
  60.         if (x, y) in visited:
  61.             continue
  62.        
  63.         quadrants = [
  64.             (x, y),
  65.             (-y-1, x),
  66.             (-x-1, -y-1),
  67.             (y, -x-1)
  68.         ]
  69.        
  70.         for qx, qy in quadrants:
  71.             cell_order.append((qx, qy))
  72.             visited.add((qx, qy))
  73.  
  74. def detect_color(x, y):
  75.     return None
  76.  
  77. def process_pixels():
  78.     for x, y in cell_order:
  79.         if (x, y) in squares:
  80.             canvas.itemconfig(squares[(x, y)], fill="lime")
  81.             time.sleep(0.01)
  82.             if detect_color(x, y):
  83.                 canvas.itemconfig(squares[(x, y)], fill="red")
  84.             canvas.update()
  85.  
  86. def start_drag(event):
  87.     global drag_start_x, drag_start_y
  88.     drag_start_x = event.x
  89.     drag_start_y = event.y
  90.     canvas.config(cursor="fleur")
  91.  
  92. def drag_canvas(event):
  93.     global drag_start_x, drag_start_y
  94.     dx = event.x - drag_start_x
  95.     dy = event.y - drag_start_y
  96.     canvas.move("all", dx, dy)
  97.     drag_start_x = event.x
  98.     drag_start_y = event.y
  99.  
  100. def stop_drag(event):
  101.     canvas.config(cursor="")
  102.  
  103. canvas.bind("<Button-1>", start_drag)
  104. canvas.bind("<B1-Motion>", drag_canvas)
  105. canvas.bind("<ButtonRelease-1>", stop_drag)
  106.  
  107. while True:
  108.     process_pixels()
  109.     canvas.itemconfig("cells", fill="white")
  110.  
  111. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement