구간

 0

 1

 2

 3

 4

 5

 6

 7

 8

 9

 10

 1

 

 

 

 

 

 

 

 

 

 

 

 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 3

 

 

 

 

 

 

 

 

 

 

 

 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 5

 

 

 

 

 

 

 

 

 

 

 

 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


두개의 선상에 거리를 알려면 보다 향산된 알고리즘이 필요합니다
비교대상이 좌측에 있거나 우측에 있는경우와 대상보다 크거나 같거나 작은경우를 생각해보면
다양한 경우가 나타납니다
경우의 수가 많아질수록 계산하는데 오래 걸리게 됩니다
그러므로 계산 범위를 조절해야 하는데 2차원상의 선분은 대칭되므로 한번의 계산으로 양쪽의 거리를 구해옵니다


선분의 중심, 선분의 반경 구하기
index : 구간의 시작점
length : 구간의 끝점
f( index , length ){
  var len = length / 2;
  return {
    position : index + len,
    diameter : len
  }
}

두 대상에 대한 결과는 다음과 같습니다
p=position, d=diameter
구간 1 : p=2.5 , d=1.5
구간 2 : p=6 , d=1

구간 3 : p=2.5 , d=1.5
구간 4 : p=4 , d=1

구간 5 : p=2.5 , d=1.5
구간 6 : p=1 , d=1


거리 측정
line1 : 첫번째 선분-반경 데이터
line2 : 두번째 선분-반경 데이터
f( line1 , line2 ){
  var range = Math.abs( line1.position - line2.position );
  return ( range - line1.diameter - line2.diameter );
}

구간 1, 구간 2 결과는 다음과 같습니다
> |2.5 - 6|
= 3.5
> 3.5 - 1.5 - 1
= 1

구간 3, 구간 4 결과는 다음과 같습니다
> |2.5 - 4|
= 1.5
> 1.5 - 1.5 - 1
= -1

구간 5, 구간 6 결과는 다음과 같습니다
> |2.5 - 1|
= 1.5
> 1.5 - 1.5 - 1
= -1

 

 구간

 1

 2

 3

 4

 5

 6

 7

 8

 9

 10

 1

 

 

 

 

 

 

 

 

 

 

 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 3

 

 

 

 

 

 

 

 

 

 

 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 5

 

 

 

 

 

 

 

 

 

 

 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



구간 1 : p=6 , d=2
구간 2 : p=6 , d=4

> | 6 - 6 |
= 0
> 0 - 2 - 2
= -4


구간 3 : p=6, d=2
구간 4 : p=6, d=4
> | 6 - 6 |
= 0
> 0 - 2 - 4
= -6


구간 5 : p=6, d=2
구간 6 : p=4, d=2
> | 6 - 4 |
= 2
> 2 - 2 - 2
= -2


https://jsfiddle.net/etzdm3eu/ 

  

Posted by Nightly Luna
,
® © Tanny Tales
/ rss