gpt4 book ai didi

c++ - 矩形碰撞确定边

转载 作者:行者123 更新时间:2023-11-30 05:29:04 24 4
gpt4 key购买 nike

假设我有一个由点(它的左上角)定义的矩形,以及这样的宽度和高度(在 C++ 中):

class Rectangle
{
public:
Rectangle(float _x, float _y, float _width, float _height);
~Rectangle();

float X, Y, Width, Height;

bool intersects(Rectangle& _rect)
{
return (
(X < _rect.X + _rect.Width)&&
(X + Width > _rect.X)&&
(Y < _rect.Y + _rect.Height)&&
(Y + Height > _rect.Y)
);
}
}

上面的 intersects 函数在矩形重叠时返回 true - 如果它们发生碰撞。但是,如果我想找出另一个矩形与矩形的哪一边相撞怎么办?我该怎么做(高效,但不是优先事项)?

最佳答案

如果检测到碰撞,则有 16 种不同的变体 enter image description here

我是怎么得到这张 table 的?红色矩形的左上角有 4 个不同的位置。第一行是第一个变体,第二行是第二个变体,依此类推。也有4个差异。红色矩形右下角的位置。而且我还将每个变体放在单独的列中。
例如,我们想知道 (*this) 的顶部(让它是红色的)是否与 _rect(让它是蓝色的)相撞。对于变体 9、10、11、12、14、16 也是如此。所以情况是
(_rect.Y < Y < _rect.Y + _rect.Height) &&
(X < _rect.X || X + Width > _rect.X + _rect.Width)

关于c++ - 矩形碰撞确定边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36545273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com