c++ - 查找受其父约束的矩形的算法

标签 c++ clipping

基本上我想做的是在这里说明: alt text

我从 A 和 B 开始,然后 B 符合 A 以创建 C。

想法是,给定 TLBR 矩形 A、B,使 C

我还需要知道它是否生成一个空矩形(B 在 A 案例之外)。

我试过了,但它没有按照我的意愿行事:

if(clipRect.getLeft() > rect.getLeft())
    L = clipRect.getLeft();
else
    L = rect.getLeft();

if(clipRect.getRight() < rect.getRight())
    R = clipRect.getRight();
else
    R = rect.getRight();

if(clipRect.getBottom() > rect.getBottom())
    B = clipRect.getBottom();
else
    B = rect.getBottom();

if(clipRect.getTop() < rect.getTop())
    T = clipRect.getTop();
else
    T = rect.getTop();

if(L < R && B < T)
{
    clipRect = AguiRectangle(0,0,0,0);
}
else
{
    clipRect = AguiRectangle::fromTLBR(T,L,B,R);
}

谢谢

最佳答案

您似乎在最终条件检查相交矩形是否为空时出错。

你检查L < R && B < T , 但似乎空矩形的条件应该是:

L > R || B < T .

顺便说一下,您可以使用 Min 使您的代码更简单、更易于阅读。和 Max职能。你有很多这种模式:

if (x < y)
    a = x;
else
    a = y;

可以简单的写成

a = Min(x, y);

编辑

另一个错误是你取了最大底部和最小顶部。您应该采用最小底部和最大顶部。 (假设矩形对应于屏幕坐标,其中顶部实际上具有较低的 y 值。

关于c++ - 查找受其父约束的矩形的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4572866/

相关文章:

css - css 中的单个固定位置剪切区域仅影响图像

c++ - 访问 std::string 字符的段错误

c++ - 我的代码的 Boost 更新问题

C++ 传递对类私有(private)变量的引用-编译器问题?

c++ - 在小部件的 paintEvent 中裁剪

css - 修复了 SVG clippingPath

c++ - 在容器中删除 std::map 元素的有效方法

c++ - Windows 8.x 附带什么 VC++ 可再发行组件(如果有)?

html - 如何在 Canvas 中夹环?

OpenGL 4.4 管道 - 裁剪前的透视划分?