1 차원 평면에 두 개의 수평선이 주어 졌을 때. 나는 그들이 어떤 점에서 겹치는 지 확인하고 싶다.한 라인에 다른 라인의 일부가 포함되어 있는지 확인하십시오.
다음은 중첩의 몇 가지 예입니다. [1,2]
및 [2,3]
과 같은 간격에는 테두리가 "만져"있지만 서로 겹치지 않습니다. [1,2]
은 기본적으로 x 축의 1에서 x 축의 2까지가는 선입니다. 이러한 조건에 대한 검사의 완전한 세트를 어떤 내 질문은
. 첫 줄이 a라고하고 두 번째 줄이 b라고 가정하고 이것들을 생각해 냈습니다.
b.s <= a.s && b.e > a.s
b.s <= a.s && b.e >= a.e
b.s < a.e && b.e >= a.e
b.s > a.s && b.e < a.s
정말 복잡합니까? 두 줄이 겹치는 지/한 줄에 다른 줄이 있는지 쉽게 알 수있는 방법이 있습니까? 다른 방법 부정 조건
public boolean isOverlap(Interval i1, Interval i2)
{
// if(i2.start <= i1.start && i2.end > i1.start)
// return true;
//
// if(i2.start <= i1.start && i2.end >= i1.end)
// return true;
//
// if(i2.start < i1.end && i2.end >= i1.end)
// return true;
//
// if(i2.start >= i1.start && i2.end <= i1.end)
// return true;
//
// return false;
if(i2.start <= i1.start && i2.end <= i1.start)
return false;
if(i2.start >= i1.end && i2.end >= i1.end)
return false;
return true;
}
'a.s을
@ n.m. 답장을 보내 주셔서 감사합니다.하지만이 조건이 추가되어야합니까? – PepperBoy
아니요, 전체 조건입니다. 그것은 귀하의 수표를 대체합니다. a.s