Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # tk_Radial_Scan_Visualizer.py
- import math
- import tkinter as tk
- from tkinter import Canvas
- import time
- ww = 640
- hh = 640
- root = tk.Tk()
- root.title("Radial Scan Visualizer")
- root.geometry(f"{ww}x{hh}+0+0")
- cell_size = 40
- font_size = 10
- n = 10
- grid_size = 20 * cell_size
- squares = {}
- cell_order = []
- visited = set()
- drag_start_x = 0
- drag_start_y = 0
- canvas = tk.Canvas(root, width=ww, height=hh, bg="white")
- canvas.pack(fill=tk.BOTH, expand=True)
- for x in range(-n, n):
- for y in range(-n, n):
- canvas_x = (x + n) * cell_size
- canvas_y = (-y + n - 1) * cell_size
- rect_id = canvas.create_rectangle(
- canvas_x,
- canvas_y,
- canvas_x + cell_size,
- canvas_y + cell_size,
- outline="black",
- fill="white",
- tag="cells",
- )
- squares[(x, y)] = rect_id
- text_x = canvas_x + cell_size // 2
- text_y = canvas_y + cell_size // 2
- canvas.create_text(
- text_x,
- text_y,
- text=f"{x},{y}",
- font=("Arial", font_size),
- fill="black",
- )
- for angle_deg in range(90):
- angle_rad = math.radians(angle_deg)
- cos_val = math.cos(angle_rad)
- sin_val = math.sin(angle_rad)
- for r in range(n + 1):
- x = int(r * cos_val)
- y = int(r * sin_val)
- if (x, y) in visited:
- continue
- quadrants = [
- (x, y),
- (-y-1, x),
- (-x-1, -y-1),
- (y, -x-1)
- ]
- for qx, qy in quadrants:
- cell_order.append((qx, qy))
- visited.add((qx, qy))
- def detect_color(x, y):
- return None
- def process_pixels():
- for x, y in cell_order:
- if (x, y) in squares:
- canvas.itemconfig(squares[(x, y)], fill="lime")
- time.sleep(0.01)
- if detect_color(x, y):
- canvas.itemconfig(squares[(x, y)], fill="red")
- canvas.update()
- def start_drag(event):
- global drag_start_x, drag_start_y
- drag_start_x = event.x
- drag_start_y = event.y
- canvas.config(cursor="fleur")
- def drag_canvas(event):
- global drag_start_x, drag_start_y
- dx = event.x - drag_start_x
- dy = event.y - drag_start_y
- canvas.move("all", dx, dy)
- drag_start_x = event.x
- drag_start_y = event.y
- def stop_drag(event):
- canvas.config(cursor="")
- canvas.bind("<Button-1>", start_drag)
- canvas.bind("<B1-Motion>", drag_canvas)
- canvas.bind("<ButtonRelease-1>", stop_drag)
- while True:
- process_pixels()
- canvas.itemconfig("cells", fill="white")
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement