我有2个部分,每个部分包含2个点,每个点有X和Y. 找到这两个部分之间的重叠的最佳方法是什么? (仅在此处与X相关)Alogritm找到2个部分之间的重叠
public class section
{
double leftPoint;
double rightPoint;
}
我有2个部分,每个部分包含2个点,每个点有X和Y. 找到这两个部分之间的重叠的最佳方法是什么? (仅在此处与X相关)Alogritm找到2个部分之间的重叠
public class section
{
double leftPoint;
double rightPoint;
}
下面是示例代码,向您展示如何执行此操作。我假设这两个部分是(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()))
每个部分有2个点,每个点有getX(),getY() – 2012-04-06 06:34:32
如果你定义了section类,我将提供一个更接近你所需要的答案。也可以假设两部分的x坐标都是非递减的? – 2012-04-06 06:43:12
看到我的更新,每个点都有getX()和getY()方法 – 2012-04-06 07:08:01
矩形类没有方法吗? 如果您创建两个矩形(大小和位置与这些“部分”类似),则可以使用intersection()
进行比较,这会返回重叠区域的矩形。
like:'rectangle1.intersection(rectangle2);' – 11684 2012-04-06 07:37:38
什么是“可溶性”? – 11684 2012-04-06 07:36:58
错误........ – 2012-04-06 08:12:58
我怀疑,但在OOP中,您始终可以拥有自定义的类/对象! – 11684 2012-04-06 08:26:52