下面只看横方向的坐标,纵向的Yaxis也类似:
bool isCrossSquare = (int)start.x != (int)end.x; 错的. 因为int是四舍五入, int(-0.2) = 0. bool isCrossSquare = floor(start.x) != floor(end.x); 对的.当然还得考虑特殊情况,像上面的大绿色三角形:
floor(start.x) = 0, floor(end.x) = 1, 但end.x == floor(end.x)表示右边压界,所以例外。
还得考虑横跨了两个square并刚好压界.
完整的判断是:
bool isCrossSquare = (floor(start.x) != floor(end.x) && end.x != floor(end.x)) || (end.x - start.x > 1);
其中一个应用实例是判断uv layout有没有超出范围.

没有评论:
发表评论