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