1 / 76

Computational Geometry

Computational Geometry. 목 차 계산 기하학이란 ? 배경 유용한 알고리즘 전략 다각형 분할 공간데이터베이스를 위한 알고리즘 요 약. 발표자 : 지정희 , 이선준. 2001 년 10 월 19 일. 계산 기하학이란 ?. 계산 기하학 기하 객체에 대한 계산을 다루는 알고리즘의 한 분야 응용 GIS 를 위한 공간 데이터베이스 GUIs, robotics, CAD/CAM 이 장에서 다루는 내용 공간 데이터베이스에서 요구되는 공간 연산을 위한 계산 기하학. 배 경. 알고리즘

jontae
Download Presentation

Computational Geometry

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computational Geometry • 목 차 • 계산 기하학이란? • 배경 • 유용한 알고리즘 전략 • 다각형 분할 • 공간데이터베이스를 위한 알고리즘 • 요 약 발표자: 지정희, 이선준 2001년10월19일

  2. 계산 기하학이란? • 계산 기하학 • 기하 객체에 대한 계산을 다루는 알고리즘의 한 분야 • 응용 • GIS를 위한 공간 데이터베이스 • GUIs, robotics, CAD/CAM • 이 장에서 다루는 내용 • 공간 데이터베이스에서 요구되는 공간 연산을 위한 계산 기하학 Representation of Spatial Objects

  3. 배 경 • 알고리즘 • 컴퓨터 알고리즘의 설계와 분석 • 알고리즘 설계 • Pseudo language를 사용한 추상레벨에서의 기술 • 정확성에 대한 검증 • 알고리즘 분석 • 알고리즘의 성능 평가(복잡도) • 이 절에서 설명하는 내용들 • 알고리즘에 대한 기본 개념들 • 알고리즘 분석 • 최적 • 자료구조 Representation of Spatial Objects

  4. 알고리즘의 기본 개념들 • 알고리즘의 구성 요소 • 계산 모델, 알고리즘 기술 언어, 성능평가 • 계산 모델 • 어떤 형태의 정보를 기계가 다룰 수 있고, 연산이 가능한지를 기술하는 수단 제공 • 일반적으로 RAM 모델, 사칙연산과 비교연산을 갖는 실수 사용 • 알고리즘 기술 언어 • 단순 언어 또는 pseudo-language • 문법은 PASCAL이나 C와 같은 프로그래밍 언어와 유사 • 성능 평가 • 프로그램의 실행 시 수행되는 각 연산의 발생횟수의 총합 • 단순성과 표현의 용이성을 위해 불필요한 세부사항은 제거 • f(n, c1, c2, …, cm), n: 입력의 크기,ci: 각 key operation의 비용 • O(Big “oh”): Upper bound, Ω(Omega): Lower bound, Θ(Theta): Same order Representation of Spatial Objects

  5. 알고리즘의 기본 개념들 Representation of Spatial Objects

  6. 알고리즘 분석 • 알고리즘 복잡도 • 입력의 크기가 n일 때 알고리즘에 의해 수행된 연산의 개수의 상한을 제공하는 함수 g(n) • 상한(upper bound) • Worst-case complexity • 주어진 크기의 어떤 입력에 대한 수행시간이 최대에 도달하는 입력에 대한 몇몇 값들을 제외하면 상한보다 낮다. • 대부분의 알고리즘 분석에서 사용 • Average-case complexity • f(n)이 주어진 크기에 대한 모든 problem instance에 걸친 연산들의 평균 개수이다. • 알고리즘의 실제적 행위를 더 잘 표현한다. • 추정하기가 어렵다. • 복잡도 • Linear(n), logarithmic(log n), polynomial(na), exponential(an) Representation of Spatial Objects

  7. 최 적 • 주어진 문제를 해결하는 알고리즘의 복잡도가 하한에 도달하면 최적이다. • 하한(lower bound) 추정 • 출력 크기 이용 • 예: n 세그먼트 교차 계산 문제 • 출력 크기: O(n2) • 어떤 알고리즘도 이 문제를 최악의 경우에는 O(n2)에 해결한다. • 이것은 이 문제가 Ω(n2)이라고 말해서 줄일 수 있다. • 이 문제를 해결하는 O(n2) 알고리즘을 찾으면 그것은 최적이고 복잡도는 Θ(n2)이다. Representation of Spatial Objects

  8. 최 적 Representation of Spatial Objects

  9. 최 적 • 문제 변환(transformation of problems ,problem reduction) • 문제 A에 대한 하한을 알고 있다고 가정하고 문제 B에 대한 하한을 추정 • A를 해결하는 것 보다 작은 비용을 갖는 변환 단계에 의해 A를 B로 변환할 수 있다면 B는 A와 동일한 하한을 갖는다. • 예: ConvexHull 문제 • Point들의 집합 S에 대한 ConvexHull은 S를 둘러싸는 가장 작은 convex 다각형으로 점들이 순서대로 정렬되어 있다. • 하한은 정렬문제(Θ(nlog n))를 convex-hull 문제로 줄여서 설정 • 집합 {x1, x2, … , xn}에 대해 O(n) 시간에 (xi, xi2)을 계산 • 이 point의 집합에 대한 convex hull을 계산 • O(n) 시간에 맨 왼쪽 정점을 찾는다. • ConvexHull 문제의 복잡도가 nlog n 보다 작다고 가정  위배  Ω(nlog n) Representation of Spatial Objects

  10. 최 적 Representation of Spatial Objects

  11. 자료 구조 • 높이-균형 트리 • AVL, 2-3-4 트리 • 검색, 갱신 시간: O(log n) • Interval tree • 실수 집합 R에 있는 interval들의 집합을 저장 • 삽입, 삭제 시간: O(log n) • 주어진 점을 포함하는 interval들을 검색 가능 • 트리에서의 interval의 위치: 어떤 interval I=[x1,x2] • x2 < N.v. N의 왼쪽 서브트리에 저장 • x1 > N.v. N의 오른쪽 서브트리에 저장 • x1 ≤ N.v ≤ x2. N에 저장 • w를 포함하는 interval 검색 • 루트에서 시작하여 다음 단계를 순환적으로 적용한다. • w < N.v이면, N.L1을 스캔하고 x1>w를 만족하는 첫번째 interval [x1, x2]를 만날 때까지 모든 interval을 보고. 검색은 N의 왼쪽 서브트리로 진행. • w > N.v이면, N.L2를 스캔하고 x2<w인 첫번째 interval [x1, x2]를 만날때까지 모든 interval을 보고. 검색은 N의 오른쪽 서브트리로 진행. • 예: 6을 포함하는 interval을 출력하시오. • 복잡도 : O(log n + k), output sensitive Representation of Spatial Objects

  12. 자료 구조 Representation of Spatial Objects

  13. 유용한 알고리즘 전략 • 계산 기하학에서의 일반적인 세가지 전략 • Incremental • Divide and conquer • Sweep-line Representation of Spatial Objects

  14. Incremental 알고리즘: The Convex-Hull 예제 • Incremental 알고리즘 • 문제를 해결할 수 있는 충분히 작은 입력의 부분집합을 취한다. • 남아 있는 입력 중에서 하나씩 추가(단, 각 단계에서 해를 유지해야 한다.) • 초보 알고리즘 • S={p1,p2, … , pn}는 convex hull로 간주되는 point들의 집합. • 3개의 points {p1, p2, p3}로 구성되는 convex hull에서 시작 • Convex hull Hi-1에 point pi를 추가하는 문제 • pi ∈ Hi-1. pi가 Hi-1의 내부에 있는 경우. Hi-1의 모든 point를 시계방향으로 스캔할 때 pi가 항상 모든 line들의 right에 존재하는가를 체크. 이러한 경우 Hi = Hi-1. • pi Hi-1. Hi = Hi-1∪pi. pi에서 Hi-1로 두개의 접촉 line을 찾는 문제. 접촉 point pt는 pi가 방향성 edge pt-1pt의 right에 존재하고 ptpt+1의 left에 존재하는 point이다. 즉, (pt1, .. Pt2)  (pt1pipt2) 로 교환하여 Hi를 얻는다. • 복잡도: 3+…+(n-1) = O(n2) Representation of Spatial Objects

  15. Incremental 알고리즘: The Convex-Hull 예제 Representation of Spatial Objects

  16. Incremental 알고리즘: The Convex-Hull 예제 • 향상된 Convex-hull 알고리즘 • 입력을 사전 정렬하여 최적의 복잡도 Θ(nlog n)에 도달하도록 한다. • S내의 point들은 정렬되어 있다고 가정. • 삽입되어야 하는 point가 hull에 포함될 수 없기 때문에 초보 알고리즘에서 수행했던 스캔 연산이 불필요. • 접촉 point는 x축에 대한 두개의 monotonic chains에 대해 각각 하나씩 존재 • Convex hull Hi의 boundary는 시계방향의 순서로 저장 • n이 H를 기술하는 point들의 수라고 하면 point 인덱스는 modulo n으로 계산된다. • 복잡도 • n points 삽입: O(n) • 주된 비용이 초기의 정렬 비용이므로 전체 비용은 O(nlog n) • Incremental algorithm: Θ(nlog n) Representation of Spatial Objects

  17. Incremental 알고리즘: The Convex-Hull 예제 INCREMENTALCONVEXHULL(S:set of points): the hull H begin Sort the n points in S by their x coordinate. H = triangle(p1,p2,p3) for(i = 4 to n) do begin j = index of the rightmost point of H //Find the upper tangency point u = j while(pihu is not tangent to H) do begin if(u != j) remove hu from H u = u – 1 end while //Find the lower tangency point l = j while(pihl is not tangent to H) do begin if(I != u), remove hl from H I = l + 1 end while Insert pi in H between hu and hl end for end Representation of Spatial Objects

  18. Divide-and-Conquer: The Half-Plane 교차 예제 • Divide-and-conquer 전략 • 입력은 subproblem이 쉽게 해결될 수 있을 정도의 충분히 작은 크기가 될 때까지 순환적으로 분할된다. • 순환적으로 해들을 결합한다. • Half-plane intersection • 가정 • 결과물은 작은 convex polygon. • Search space R은 rectangle. • 결과 polygon은 항상 R에 포함된다. • 3단계 전략 • 구조형성 • 입력으로 받는 n개의 half-plane들의 집합이 n개의 singleton half-plane을 얻을 때까지 2등분된다.  이진트리 형성 • 단일문제 해결 • 각 리프에 있는 half-plane이 R과 교차  각 리프에서 convex polygon을 생성 • 결과들의 결합 • Convex polygon들의 교차를 순환적으로 계산 • 복잡도: O(nlog n) , convex polygon intersection: O(p+p’) Representation of Spatial Objects

  19. Divide-and-Conquer: The Half-Plane 교차 예제 HALFPLANEINTER(S:set of half-planes): a convex polygon begin if(Card(S) > 2) then return HALFPLANEINTER(S/2) ∩ HALFPLANEINTER(S-S/2) else return S ∩ R end if end Representation of Spatial Objects

  20. Sweep-Line Method:The Rectangle Intersection 예제 • Sweep-line 기법 • 2차원 문제를 2개의 1차원 문제로 해결 • 자료구조 • Sweep-line active list: L • Event list:  • The rectangle intersection • 주목할 사항 • 수직 라인 l과 l에 의해 잘려진 모든 rectangle들의 집합 Sl, Sl내에서 교차되는 쌍에 대해서 그 rectangle들이 y축에 대해 교차되는지를 검사 • l은 event list의 모든 point를 경유 • 각 event point에서의 연산 • Rectangle r의 왼쪽 edge가 sweep-line에 도달하면 r은 L에 삽입 • L내에 있는 edge들은 서로 교차 : 2차원 문제  1차원 문제 • Rectangle r의 오른쪽 edge가 sweep-line에 도달하면 r은 L에서 삭제 • 복잡도 • 자료구조 L: O(log n) • 초기 정렬: O(nlog n) • Internal tree 내의 리스트 스캔: O(k), k는 rectangle intersection의 개수 • O(nlog n + k) Representation of Spatial Objects

  21. Sweep-Line Method:The Rectangle Intersection 예제 RECTANGLEINTERSECTION(S:set of a rectangle) Begin Sort the 2n xmin and xmax values of S and place them in ε £ = 0 while(ε != 0) do begin p <- MIN(ε) //extract the next event from ε if(p is left edge of a rectangle r) then begin INSERT(r, £) Search and report the rectangles in £ interesting r end if if(p is right edge of a rectangle r) then DELETE(r, £) end while end Representation of Spatial Objects

  22. Polygon 분할 • 중요성 • 2차원 응용에서 polygon은 가장 복잡한 객체 • Polygon을 더 단순한 객체로 분할하는 것은 알고리즘 설계와 구현을 단순화 • Polygon • Monotone polygon • Simple이고 δP가 두개의 monotonic chain으로 구성 • Simple  monotone  convex • 분할 방법 • 사다리꼴 분할(trapezoidalization) • 삼각분할(triangulation) Representation of Spatial Objects

  23. 사다리꼴 분할 • 사다리꼴 분할 알고리즘 • Sweep-line 기법에 기반 • 절차 • Polygon P의 정점들을 x 좌표에 따라 정렬 • 수직 라인 l이 정렬된 vertex들을 스캔 • 각 정점 v에 대해 v를 포함하고 P의 내부에 존재하는 가장 큰 수직 segment를 계산 • Polygon은 visibility segment에 의해 사다리꼴로 분할된다. • RECTANGLEINTERSECTION 알고리즘의 변형 • Event list : x 좌표에 따라 정렬된 정점들의 리스트 • Active list L: 현재 L에 의해 교차되는 P의 edge들의 리스트를 포함, y 좌표에 따라 정렬 • 각 event point • 정점 v에 대해 v에 인접하는 edge들이 L에 삽입 또는 삭제된다. • v의 above or below인 edge들을 L에서 검색 • P로부터 사다리꼴 추출 • 첫번째 수직 edge: v에서 e로의 visibility segment • 두번째 edge: i에서 왼쪽 정점까지의 edge • 두번째 수직 edge: 이전 event에서의 visibility segment • 복잡도 • Edge search in L: O(log n) • 전체 scan : O(nlog n) • O(nlog n) Representation of Spatial Objects

  24. 사다리꼴 분할 Representation of Spatial Objects

  25. 삼각 분할 • Diagonal • Polygon P의 두 정점 사이의 Segment vivj로 P의 boundary와 교차하지 않는 것 • vi와 vj는 서로에 대해 visible하다고 말한다. • N개의 정점으로 이루어진 polygon P • N-3개의 diagonals • N-2개의 삼각형 • 삼각 분할 알고리즘 • Simple polygon을 삼각 분할하는 알고리즘  느림 • Simple  monotone으로 분할 후 삼각분할 • Monotone polygon의 삼각분할 알고리즘 • P의 정렬된 순서에 따라 스캔 • 이미 스캔 되었으나 삼각형을 형성하지 않은 점들의 리스트 L 유지 • L 의 원소 중 삼각형을 형성하면 L에서 제거 • 복잡도 • P의 정점 정렬 : O(n) • 삼각형 생성 : O(n) • Θ(n) Representation of Spatial Objects

  26. 삼각 분할 MONOTONETRIANGULATION(P:monotone polygon):set(triangles) begin Sort the n vertices of P by x coordinate and store them into ν £ = a list with the first two points of ν while(ν != 0) do begin p <- MIN(ν) //Extract the next vertex from ν if(p is opposite to points in £) then begin while((Card(£) > 1) do output triangle {First(£), Second(£),p} REMOVE(Firtst(£)) end while Add p to £ end else begin while(angle(Last(£), Previous(Last(£)), p) is convex and Card(£) > 1) do Output triangle {Last(£), Previous(Last(£)),p} REMOVE Last(£) end while //The angle is reflex, or Card(£) = 1 Add p to £ end end while end Representation of Spatial Objects

  27. 삼각 분할 • Simple polygon에 대한 삼각분할 • P를 monotone polygon으로 분할 • 위 단계에서 생성된 monotone polygon에 대해 삼각 분할 • Simple polygon을 monotone polygon으로 분할 • Notch(return) : 두개의 인접 edge가 수직 라인의 동일한 편에 존재 • Return point에서polygon을 monotone polygon으로 분할 • 가상 사다리꼴 만들기 • 가상 사다리꼴 만들고(r1의 왼편과 r2의 오른편) • 각 사다리꼴에서 diagonal을 생성해서 monotone component를 획득 • 복잡도 • Monotone partitioning: O(nlog n) • Triangulation of the monotone polygon: O(n) • O(nlog n) Representation of Spatial Objects

  28. 삼각 분할 Representation of Spatial Objects

  29. 삼각 분할 • Convex 분할 • polygon을 삼각형이나 사다리꼴로 분할했을 경우 중간 분할 요소가 너무 많아질 수 있으므로 polygon을 convex로 분할. • Convex 요소의 수:  • r/2 + 1 ≤ ≤ r+1, r: simple polygon에서 notch 수 • 요소의 수를 최소로 만드는 알고리즘이 존재하나 복잡도가 크다. • Suboptimal 알고리즘 • 삼각분할 단계에서 분할된 삼각형 사이의 인접 관계를 전달 • 자료구조: dual graph • 초기 삼각형 집합과 dual graph를 가지고 인접한 삼각형들을 convex를 유지하는 동안 합쳐 나간다. O(n) Representation of Spatial Objects

  30. 삼각 분할 Representation of Spatial Objects

  31. 공간 데이터베이스를 위한 알고리즘 • 기하학 알고리즘의 설계 및 분석 • 전통적인 기하학적 요소 • 포인트 • 좌표의 쌍 • 라인 • 폴리라인 ( 쌍으로 연결된 세그먼트들의 리스트 ) • 폴리곤 • 단순 다각형, 닫혀진 폴리라인으로 표현. • 제외대상 • 홀이 있는 폴리곤, 리전(region) Representation of Spatial Objects

  32. 다각형 영역의 크기와 관련 연산 • 삼각형의 넓이 계산 • T(P1, P2, P3)의 영역 계산 • 시계역방향 : 양의 값 • 시계방향 : 음의 값 ( × (-1)) • 다각형의 영역 계산 • area(P) = areaT(P1, P2, P3) + areaT(P1, P3, P4) • 각 정점들이 시계역방향으로 정렬되었을때 • 단, xn+1=x1이고 yn+1=y1 Representation of Spatial Objects

  33. C B B + - A C A 다각형 영역의 크기와 관련 연산 • 함수의 사용 • areaT(ABC)의 값에 따라 • AB : 선분 • 양수 : 포인트 C는 왼쪽에 위치 • 음수 : 포인트 C는 오른쪽에 위치 • 0(영) : 포인트 C는 동일선상에 위치 • 선분 AB와 CD의 교차 • AB의 관점에서 C와 D를 동등하게 점유 • A가 CD의 한 쪽에 있고, B가 다른 쪽에 있다 Representation of Spatial Objects

  34. 다각형 내의 포인트 • 포인트가 다각형 내에 있는지 검사 • p : 포인트, l: 단방향 직선, P : 다각형 • l과 교차하는 P의 선분들의 수에 따라 • 짝수 : 포인트 p는 P의 외부에 위치 • 홀수 : 포인트 p는 P의 내부에 위치 • 복잡도 : O(n) • 각 경계를 한번씩만 조사하기 때문에 Representation of Spatial Objects

  35. 다각형 내의 포인트 • 특별한 경우 • 순수한 교차개수 : 9개 • 경계들을 반닫힌(half-closed)선분으로 간주 : 5개 Representation of Spatial Objects

  36. 다각형 내의 포인트 • 문제해결 • 규칙 • l과 동일선상의 경계는 세지 않는다 • l 위에 경계 e의 끝점이 하나라도 있다면, 하나의 교차하는 경계로 계산한다 • 규칙적용 • a, b, c가 모두 제외된다 • p3가 교차하는 개수 : 6개 • p3는 다각형 P의 외부에 위치 • 정점에서의 문제 • Boundary위에 있는 포인트의 경우 • Preliminary scan 필요 Representation of Spatial Objects

  37. 다각형 내의 포인트(알고리즘) Representation of Spatial Objects

  38. 폴리라인의 교차 • 검출 연산 • Boolean 연산 • 객체들 사이의 교차를 검출 • 계산 연산 • 두 객체가 교차되면서 생기는 새로운 기하학적 객체들을 계산하는 연산 Representation of Spatial Objects

  39. 라인 교차의 검출 • 두 선분 사이의 교차를 검출 • S : 라인의 집합 • Nested-loop 알고리즘 : O(n2) • 교차가 발견되는 즉시 멈춘다 • Plane-sweep 알고리즘 : O(nlogn) • 폴리라인 교차를 테스트 • 액티브 리스트 • 선분과 수직선의 교차를 저장 • y좌표를 기준으로 정렬된다 • l2 • S2 > l2 S3 > l2 s1 Representation of Spatial Objects

  40. 라인 교차의 검출 • 액티브 리스트의 연속성 • s1과 s2사이의 교차가 있다고 가정 • 수직선이 s1과 s2의 교차에 가까워지면 • s1과 s2는 액티브 리스트에서 연속하게 된다 • Plane-sweep 알고리즘 (2가지 경우 발생) • Active list 와 Event list를 유지. ( Event list는 라인의 끝점의 x좌표 저장 ) • 선이 선분 s의 최좌측 포인트와 만났을 때 • s를 L에 삽입 • L의 상위와 하위에 있는 이웃 선분과 교차되는지 테스트 • 선이 선분 s의 최우측 포인트와 만났을 때 • s를 L에서 제거 • 현재 리스트에서 인접한 두 선분이 교차하는지 테스트 Representation of Spatial Objects

  41. 라인 교차의 검출 Representation of Spatial Objects

  42. 라인 교차의 계산 • 라인 교차 계산 알고리즘 • 가장 나쁜 경우 • 중첩 반복 알고리즘 : O(n2) • 경우에 따라 가장 최적 • O(n2)만큼의 교차가 일어날 수도 있기 때문 • 단점 • 교차가 없어도 n2만큼의 테스트를 해야 한다 • 교차의 수가 적을 경우 • 산출크기 중심의 알고리즘이 필요 • 확장된 스윕-라인 알고리즘 • 레드-블루 알고리즘 Representation of Spatial Objects

  43. 라인 교차의 계산-첫번째 • 확장 스윕-라인 알고리즘 • 교차점을 이벤트로 간주 • L에서의 변화를 트리거한다 • 교차점이 생길때 마다 E에 추가 • 라인을 스윕할 때 사용 • 선이 s1과 s2의 교차점에서 만났을 경우 • L에서 s1과 s2의 위치를 바꾼다 • L에서 현재 s1 또는 s2과 이웃해 있는 선분들은 그 선분의 인접 선분과 교차되는지 테스트 Representation of Spatial Objects

  44. 라인 교차의 계산(첫번째) Representation of Spatial Objects

  45. 라인 교차의 계산-첫번째 • 알고리즘 분석 • 초기 단계(정렬과정) : O(nlogn) • 반복문 : 2n+k • k : 교차하는 수 • 반복문 내의 공정 : O(logn) • 전체 알고리즘의 비용 • O((n+k)logn) Representation of Spatial Objects

  46. 라인 교차의 계산-두번째 • 레드-블루 교차 알고리즘 • 레드집합, 블루집합 • 교차되지 않는 선분들을 두 개의 집합으로 구성 • 두 개의 액티브 리스트 • Lb, Lr • 선분의 오른쪽(왼쪽)의 끝점을 만났을 때 • 액티브 리스트가 변화한다 • 이벤트 리스트 • 2n의 일반적인 배열 • 복잡도 • O(nlogn+k) Representation of Spatial Objects

  47. 라인 교차의 계산-두번째 • 레드선분 r에 대해서 교차조사 • 스윕라인 l이 r의 오른쪽 끝점에 도달 • 선분 r과 다른 집합(블루집합) 사이의 교차를 계산 • r과 교차하는 블루선분을 Lb에서 검색 • Case 1 (그림 5.17a) • r과 교차하는 모든 선분 b1, b2, b3가 Lb에서 연속적 • 복잡도 : O(nlogn+k) • Case 2 (그림 5.17b) • r과 교차하는 선분들이 연속적이지 않을때 • b3와의 교차점을 숨긴다 • Case 2의 복잡도 : 2차의 복잡도 • 알고리즘 구현시 • Case 2가 나타나지 않도록 고려 Representation of Spatial Objects

  48. 라인 교차의 계산-두번째 Representation of Spatial Objects

  49. 라인 교차의 계산-두번째 • Cone • (p, u, v) • u의 왼쪽 끝점이 s의 아래에, v보다 위에 위치 • u, v : 선분 • 교차점 p의 오른쪽에 위치 • 선분이 액티브 리스트에서 삽입될 때 검출 • cone을 제거 • 선분 u, v 모두를 p를 왼쪽 끝점으로 하는 선분으로 자른다 • u, v의 왼쪽 선분은 제거 • p에서의 교차를 알린다 Representation of Spatial Objects

  50. 라인 교차의 계산-두번째 • 라인 교차 계산 방법 • 선분이 삽입될 때 • 왼쪽 끝점 • 각각의 cone을 제거, cone과 연관된 교차를 알린다 • 선분이 삭제될 때 • 오른쪽 끝점 • 액티브 리스트를 검색, 교차를 알린다 • 복잡도 : O(nlogn+k) • cone이 없기 때문에 • 복잡도의 계산 • 액티브 리스트를 검색 : O(logn) • 구조를 위나 아래로 움직인다 • 각 움직일때 교차를 알린다 • 전체 비용 : (nlogn+k) Representation of Spatial Objects

More Related