Может кто-нибудь объяснить, почему прямоугольники Rectangle
отрицательного размера пересекаются именно так?
var r = new Rectangle(0, 0, 3, 3);
var r0 = new Rectangle(0, 0, -1, -1);
var r1 = new Rectangle(1, 1, -1, -1);
var r2 = new Rectangle(2, 2, -1, -1);
var r3 = new Rectangle(3, 3, -1, -1);
System.Console.WriteLine(r.IntersectsWith(r0)); // False
System.Console.WriteLine(r.IntersectsWith(r1)); // False
System.Console.WriteLine(r.IntersectsWith(r2)); // True
System.Console.WriteLine(r.IntersectsWith(r3)); // False
Я думаю, что r1
и r2
должны всегда пересекаются с r
, даже если они этого не делают. r3
должны пересекаться, если учесть их отрицательный размер. Если отрицательные размеры не рассматриваются, r0
должны пересекаться.
Почему это работает именно так, и на какие еще предостережения следует обратить внимание при работе со структурами Rectangle
?