Этот код принимает координаты двух прямоугольников и находит их пересечение.Confused about rectangles in ruby
def rec_intersection(rect1, rect2)
x_min = [rect1[0][0], rect2[0][1]].max
x_max = [rect1[1][0], rect2[1][1]].min
y_min = [rect1[0][0], rect2[0][1]].max
y_max = [rect1[1][0], rect2[1][1]].min
return nil if ((x_max < x_min) || (y_max < y_min))
return [[x_min, y_min], [x_max, y_max]]
end
rec_intersection([[1, 1], [2, 2]],[[0, 0], [5, 5]])
Я действительно не понимаю. В частности, я хотел бы узнать больше о том, что означает координаты (я знаю, что они являются координатами для левого и правого верха), но может ли кто-нибудь уточнить больше? К чему они относятся? Размер прямоугольника? Или это место? Как прямоугольник с нижней левой координатой [1,1] отличается от прямоугольника с левой нижней левой стороной от [0,0]?
Также я хотел бы знать, почему для того, чтобы найти x_min, используется метод max (и наоборот). Любые разъяснения приветствуются.
Ваше поклонение, прямоугольники обычно определяются путем указания координат для двух противоположных углов. В вашем примере 'rect1 = [[1,1], [2,2]]', поэтому '[1,1]' будет координатой для верхнего левого угла, а '[2,2]' будет координата в нижнем правом углу. Таким образом, два других угла были бы на '[1,2]' (вверху справа) и '[2,1]' (внизу слева). –
, поэтому во втором прямоугольнике верхние левые координаты равны [0,0] по сравнению с первым прямоугольником в верхнем левом углу [1,1] ... так что это говорит о прямоугольниках? что они отличаются по размеру или местоположению? ... так как они оба являются верхними левыми – HolyMoly
@HolyMoly оба. Похоже, что вы должны потратить некоторое время на то, чтобы догнать Пифагора или Декарта. –