gpt4 book ai didi

java - 判断一个矩形是否与一条线相接

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:02:00 28 4
gpt4 key购买 nike

我有一个名为 Rectangle 的类,它由两对整数组成,用于表示矩形左上角和右下角的 XY 坐标。我还有一个名为 Quadrant 的类,它包含正方形区域最左边、中间和最右边点的 X 值(分别为 leftX、midX 和 rightX),以及类似的顶部、中间和底部值Y 平面(botY、midY、topY)。我想确定给定的矩形是否触及给定象限的 x 或 y 平面的中间部分。现在这是我这样做的代码:

boolean isIntersect(Rectangle rect, Quadrant node)
{

boolean xOver = false;
boolean yOver = false;




if((rect.bottomRight.x >=node.midX && rect.topLeft.x <= node.midX) ||
(rect.bottomRight.x <=node.midX && rect.topLeft.x >= node.midX))

{
xOver = true;
}

if((rect.bottomRight.y <= node.midY && rect.topLeft.y >= node.midY) ||
(rect.bottomRight.y >= node.midY && rect.topLeft.y <= node.midY))
{

yOver = true;
}



if (yOver || xOver == true)

{
System.out.println("intersection found");
return true;
}

else
{
System.out.println("no intersection found");
return false;
}

}

在使用随机矩形测试此代码后,我知道有很多情况未涵盖,但我不确定哪些情况或如何解决它们。有谁知道更好、更彻底的算法?

最佳答案

你的算法很棒。这里实现得更干净一些;你正在使用比你需要的更多的 boolean 值。

boolean isIntersect(Rectangle rect, Quadrant node)
{
return (rect.bottomRight.x >=node.midX && rect.topLeft.x <= node.midX)
|| (rect.bottomRight.y <= node.midY && rect.topLeft.y >= node.midY)
}

在您的代码中,您似乎也在测试矩形的情况

bottomRight.x <= node.midX && topLeft.x >= node.midX

意思是右下角实际上是矩形的左下角,而左上角实际上是右上角。 (在您对 y 值的测试中也有类似的情况。)

在创建矩形时,您是否做了任何事情来确保为右下角和左上角给出的坐标确实代表了这些角?

关于java - 判断一个矩形是否与一条线相接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220688/

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