2013-03-18 2 views
0

닫힌 경로에서 다각형을 만들 수있는 간단한 (또는없는) 알고리즘이 있습니까? 모양을 다각형으로 변환

가정 w 경로를 따라가 : 나는 OpenGL을 정점 버퍼 다각형 인덱스를 생성 할 수 있어야합니다

0,0; 2,0, 2,1; 1,1; 
1,2; 2,2; 2,3; 0,3; 

. 사용하고있는 언어는 C#입니다.

누군가 나에게 볼록 헐을 제안했지만, 내가 뭘 찾고있는 건 아니니까, 내가 이미 모양을 가지고 있기 때문에. 나는 이것이 사소한 문제가 될 수 있음을 알고 있지만, 진지하게, 나는 mi를 올바른 방향으로 향하게하는 어떤 설명이나 것을 발견 할 수 없다.

편집 : 대답 모양에서 제시하지만, 난 게시 된 모양을 위해 일 다음과 같습니다 위의 형성하지 않습니다에 대한

대답 1 점을 선택하고 다른되지 연결된 지점에 연결하는 것이 좋습니다이 잘 작동합니다 :

Shape

+0

이 폴리곤을 삼각형 화하고 싶습니까? 아니면'GL_POLYGON'을 사용 하시겠습니까? –

+0

'glDrawElements' 함수에서'GL_TRIANGLES'를 사용하여 렌더링합니다 버텍스 버퍼가 필요합니다. 꼭지점 (위), 인덱스 (모양이 있어야 함) 및 법선 (현재 필요하지 않음)이 필요합니다. – dr4cul4

답변

2

은 삼각형으로 변환하면 요구 사항이 얼마나 잘 당신이 그것을 수행하려는 작업에 따라 쉽게 또는 하드 중 하나입니다. 당신의 다각형이 볼록 인 경우

는 가장 쉬운 방법은 모든 인덱스

0, 1, 2, 0, 2, 3, 0, 3, 4, ... 

그것은 다음과 같이 표시됩니다으로 GL_TRIANGLES을 사용하는 것입니다 오목에 대한

triangulation by fanning

상황은 더 많은 작업이다. 오목한 폴리곤 (구멍이있는 것은 아닙니다!)에서 작동하는 알고리즘은 wikipedia에 설명 된 귀 클립핑 방법입니다 (그 페이지에 더 많은 내용이 있습니다).

"좋은"삼각 측량을 원할 때 상황이 정말 재미 있습니다. : 마른 체형이나 작은 삼각형을 피하고, 삼각형 수를 줄이고, 속도를 내기 위해 품질을 교환 할 수 있습니다. 나는 여기에 어떤 고급 알고리듬도 가지 않을 것이다. Google에서 폴리곤 삼각 측량을 검색하면 많은 정보를 얻을 수 있습니다.

법선의 경우 폴리곤이 평평한 경우 ("있어야 함"일 가능성이 큽니다) 두 개의 비 동시 발생 에지를 가져 와서 두 제품을 교차시킵니다 (두 개의 법선이 있고 아마 하나만 원할 것입니다 : right hand rule을 기준으로 제품을 교차하는 순서

+0

나는이 방법을 생각해 냈지만, 적어도 모든 점에서 작동하지는 않습니다. 내 프로젝트에 필요한 모양으로. 물건을 정리할 수 있도록 내 질문을 업데이트했습니다. 아르 자형. – dr4cul4

+0

예, 팬 아웃 방식은 오목 폴리곤에서는 작동하지 않습니다. (그것은 또한 일반적으로 매우 나쁘다.) 나는 (귀 - 클리핑, 링크가있다 - 몇 가지 다른 방법을 언급한다) 해결책을 언급했다. 그리고 더 많은 알고리즘을 원한다면 google에 "polygon triangulation"을 검색해야한다. 서로 다른 장단점을 가진 대다수입니다. –

+1

남자, 너는 최고야. 귀에 대한 클리핑 (나는 이름을 잃어 버렸습니다 : P) 내가 건너 왔어 [이] (http://www.codeproject.com/Articles/8238/Polygon-Triangulation-in-C) – dr4cul4

관련 문제