Как пересекаются прямоугольники отрицательного размера?

Может кто-нибудь объяснить, почему прямоугольники 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 ?

10
задан dlras2 30 April 2011 в 08:20
поделиться