есть 2 прямоугольника которые пересекаются как найти их пересечение и выполнить его заливку нажатием на кнопку
Python:
from tkinter import *
from math import *
def is_cross(a,b):
ax1,ay1,ax2,ay2 = a[0],a[1],a[2],a[3] # прямоугольник А
bx1, by1, bx2, by2 = b[0], b[1], b[2], b[3] # прямоугольник B
# это были координаты точек диагонали по каждому прямоугольнику
# 1. Проверить условия перекрытия, например, если XПA<XЛB ,
# то прямоугольники не пересекаются,и общая площадь равна нулю.
# (это случай, когда они справа и слева) и аналогично, если они сверху
# и снизу относительно друг друга.
# (XПА - это Х Правой точки прямоугольника А)
# (ХЛВ - Х Левой точки прямоугольника В )
# нарисуй картинку (должно стать понятнее)
xA = [ax1,ax2] # координаты x обеих точек прямоугольника А
xB = [bx1,bx2] # координаты x обеих точке прямоугольника В
yA = [ay1, ay2] # координаты x обеих точек прямоугольника А
yB = [by1, by2] # координаты x обеих точек прямоугольника В
if max(xA)<min(xB) or max(yA) < min(yB) or min(yA) > max(yB):
return False # не пересекаются
# 2. Определить стороны прямоугольника образованного пересечением,
# например,
# если XПA>XЛB, а XЛA<XЛB, то ΔX=XПA−XЛB
elif max(xA)>min(xB) and min(xA)<min(xB):
dx = max(xA)-min(xB)
return True # пересекаются
else:
return True # пересекаются
def new(N):
for i in range(len(N) - 1):
canvas.create_rectangle(xA, Ya, width=5, fill='red')
def click(click_event):
global prev
try:
canvas.create_rectangle(prev.x, prev.y, click_event.x, click_event.y, width=2)
except:
prev = click_event
return
prev = click_event
def move(move_event):
global prev
canvas.create_rectangle(prev.x, prev.y, move_event.x, move_event.y, width=2)
prev = move_event
master = Tk()
canvas = Canvas(master, width=600, height=300)
canvas.pack(padx=20, pady=20)
canvas.bind('<Button-1>', click)
but1 = Button(master, text='генерализация', command=is_cross );
mainloop()