有人能解释一下为什么负大小的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
结构时,还需要注意哪些陷阱呢?