2012-09-08 1 views
3

저는 전문 프로그래머가 아닙니다. pls는 정교한 접근법이나 언어를 기대하지 않습니다. 그러나 나중에 프로젝트에서 프로그래밍 방식으로 프로젝트에 추가 할 수있는 알고리즘을 구체화하기위한 조언과 권장 사항을 알려 주시면 감사하겠습니다. 다음은 문제입니다.불규칙한 모양의 내부 점

공간에서 임의의 점 (점 X)을 다음 특성 :

  • 가 갖는 임의의 주어진 시간에 하나의 영역 (경계 좌표가있는도 알려져있다)에 속한다
  • 정지 차원 표면에
  • 거짓말을 조정한다. 즉, 그것은 "부모"요소의 유일한 "자식"입니다. 다시 말하지만, 한 지역에 앉아 있지 않으면 다른 지역에 분명히 앉아 있습니다!

영역은 단순한 정사각형, 사각형 또는 원형이 아니며 대신 불규칙한 모양입니다.

내 질문은 : 어떻게 결정할 수 있습니까? (i) 포인트 X가 특정 영역 내에 있고 인접한 영역 내에 있지 않으면 어떻게해야합니까? (ii) 어떤 특정 영역 (영역 세트 A, B 또는 C 중에서)은?!?에 속합니다. 내가 Point in Polygon 문제 (! 특히, "레이 캐스팅 알고리즘은"매우 똑똑한 소리) 처리의 가능성을 정독 있지만하지 않는 것 :

PS : 더 나은 문제를 시각화하기 위해 링크 된 이미지보기 (i) 영역들이 서로 인접 해있을 수 있기 때문에 해결책이 될 수있다. (ii) 포인트가 속한 영역을 내부/외부보다 더 많이 결정해야합니다.

미리 감사드립니다.

+1

영역의 경계가 곡률을 가질 수있는 경우 영역의 "경계 좌표"는 영역의 실제 경계를 어떻게 나타낼까요? 어떤 종류의 곡선 매개 변수화를 사용하거나 다각형으로 영역을 근사합니까? –

+0

레이 캐스팅 알고리즘의 변형이 아마도 효과가있을 것입니다. 한 지점에서 하나의 광선을 투영하고 첫 번째 광선이 닿았을 때, 그 지점을 공유하는 (최대) 두 영역 중 하나에 있음을 알 수 있습니다. 그런 다음 두 개의 후보 영역 각각에 대해 레이 캐스팅 알고리즘을 두 번 사용할 수 있습니다. –

+0

죄송합니다. 내 잘못 - 나는 내 질문을 추가로 편집했습니다 : 형상 (영역) 세그먼트의 좌표가 2D로 정의되었으므로 곡률이 없습니다! –

답변

0

프로그래머는 그렇게 할 것 : 함수가 parametres로 영역 및 점의 배열을 취하고

  1. . 포인트가 속하는 경우 귀하의 모든 영역을 확인하고 레이 캐스팅 algorythm에 의해 모두

    확인을 위해 -

  2. 은주기를 확인합니다.

    아니, 사이클을 계속하면

    ,

    예 경우, 현재 영역의 수를 반환하는 기능을 마무리합니다.

  3. 범위를 벗어난 경우 -1을 반환합니다.

은 물론, 당신은 그들을 위해 각도의 계산을 반복, 계정에 공통의 경계를하지 복용 algorythm을 향상시킬 수 있지만, 이러한 algorythms 이제 possiblilities에서 분명히 있습니다. 그리고 좋은 프로그래머조차도 은 쉽게 시작할 수 있지만 작동은입니다.