我有2个部分,每个部分包含2个点,每个点有X和Y. 找到这两个部分之间重叠的最佳方法是什么? (仅限于此处的X相关)
public class section
{
double leftPoint;
double rightPoint;
}
答案 0 :(得分:3)
矩形类不具有此方法吗?
如果您创建两个矩形(大小和位置就像那些“部分”),您可以使用intersection()
比较它们将返回重叠区域的矩形。
答案 1 :(得分:0)
以下示例代码向您展示如何执行此操作。我假设这两个部分是(a_from,a_to)和(b_from,b_to)并将结果部分设置为(res_from,res_to)。此外,我只在x轴上的间隔相交,因为这似乎是你想要的。我们的想法是,结果从两个开始的后期开始,到两个结束的早期结束。
Point a_from, a_to;
Point b_from, b_to;
Point res_from = new Point();
Point res_to = new Point();
res_from.SetX(Math.max(a_from.getX(), b_from.getX()));
res_to.SetX(Math.min(a_to.getX(), b_to.getX()));
请注意,如果res_to.x< res_from.x根本没有交叉点。
此外,我假设a_from.x< = a_to.x和b_from.x< = b_to.x,这可能并非总是如此。如果不是,您必须将res_from.x计算为Math.max(Math.min(a_from.getX(), a_to.getX()), Math.min(b_from.getX(), b_to.getX()))