我的Segment类包含2个部分,每个部分包含2个X和Y坐标点。
Point类有getX()和getX()方法。
public class Segment
{
private Point pointLeft;
private Point pointRight;
}
我想找到两个部分之间的重叠(有):
public double overlap (Segment other)
{
}
我怎样才能找到它(只有X轴重叠)
平行于X轴的2个部分(每个部分具有相同的Y)
答案 0 :(得分:1)
答案 1 :(得分:1)
我对你的问题的理解是你首先想要在X轴上投射两条线,然后找到它们的交点。
也就是说,您想要在上图中X轴上的灰色部分的长度。
你想要分4个部分来做,像这样:
if (other.pointLeft.X <= pointLeft.X && other.pointRight.X >= pointRight.X)
return pointRight.X - pointLeft.X;
if (pointLeft.X <= other.pointLeft.X && pointRight.X >= other.pointRight.X)
return other.pointRight.X - other.pointLeft.X;
if (pointLeft.X <= other.pointLeft.X && pointRight.X <= other.pointRight.X)
return pointRight.X - other.pointLeft.X;
if (pointLeft.X >= other.pointLeft.X && pointRight.X >= other.pointRight.X)
return other.pointRight.X - pointLeft.X;
return 0;
请注意,我已对此进行了编码,并且没有机会对其进行测试。但它应该让你基本了解需要做什么。