2007年7月6日金曜日

NSUnionRectは数学的にはただしいのだろう.


NSRect a= NSMakeRect(100, 100, 50, 0);
NSRect b= NSMakeRect(149, 99, 2, 2);
NSLog(NSStringFromRect(NSUnionRect(a, b))); // {{149, 99}, {2, 2}} ?


確かに高さが0ならその面は面積のない空集合である.
よってUnioinをとったらbのみがのこる….

でも欲しかった回答は{{100, 99}, {51, 2}}なんだ.
NSBezierPathに水平線をかかせてその端部に矢印を描いた.
更新すべき描画領域を計算するのに双方のboundsをUnionすればよいと思ったのだが…

NSBezierPathに水平線のboundsを問えばheight=0と答えるという落とし穴.
#こっちがむしろ問題かもね.でもこれも数学的にはただしいか….
#(でも1dotはやっぱりないとだめじゃない?)

0 件のコメント: