Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

하프 에지 데이터 구조

<시간/>

소개

템플릿 매개변수 또는 하프에지 데이터 구조에 대한 HDS(HalfedgeDS로 약칭)는 평면 맵, 다면체 또는 기타 방향성 있는 2차원과 같은 꼭짓점, 가장자리 및 면의 입사 정보를 유지할 수 있는 가장자리 중심 데이터 구조로 정의됩니다. 임의의 차원에 포함된 표면. 각 모서리는 방향이 반대인 두 개의 절반 모서리로 나뉩니다. 각 하프 에지는 하나의 입사면과 하나의 입사 정점을 저장합니다. 각 면과 각 정점에 대해 하나의 입사 하프 에지가 저장됩니다. 하프에지 데이터 구조의 변형을 줄이면 면의 하프에지 포인터나 면의 저장과 같은 일부 정보를 제거할 수 있습니다.

하프 에지 데이터 구조는 조합 데이터 구조로 정의되며, 하프 에지 데이터 구조 위에 구축된 클래스에 의해 기하학적 해석이 추가됩니다. 이러한 클래스는 Halfedge 데이터 구조를 직접 구현하는 것보다 더 잘 알려져 있을 수 있습니다. Halfedge 데이터 구조는 구현 계층으로 취급되기 때문입니다.

하프 에지 데이터 구조는 쿼드 에지 데이터 구조의 변형 중 하나로 표시될 수도 있습니다. 일반적으로 방향성이 없는 2-다양체는 쿼드 에지 데이터로 나타낼 수 있지만 여기서 변형은 방향성 2-다양체로만 제한됩니다.

예시 프로그램

기본 하프에지 데이터 구조

다음 예제 프로그램은 기본 halfedge 데이터 구조와 데코레이터 클래스를 적용합니다. 기본 하프 에지 데이터 구조는 목록 기반 표현을 구현합니다. 항목의 모든 발생 빈도와 정점에 대한 포인트 유형이 설명됩니다. trivial traits 클래스는 포인트에 대해 구현된 유형을 제공합니다. 프로그램은 두 개의 반쪽, 한 개의 꼭짓점(Vertex)과 두 개의 면(Face1 및 Face2)으로 구성된 루프를 만들고 유효성을 확인합니다.

하프 에지 데이터 구조

#include <CGAL/HalfedgeDS_default.h>
#include <CGAL/HalfedgeDS_decorator.h>
struct Traits { typedefint Point_2; };
typedef CGAL::HalfedgeDS_default<Traits> HDS1;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator1;
int main() {
   HDS1 hds1;
   Decorator1 decorator(hds1);
   decorator.create_loop();
   CGAL_assertion(decorator.is_valid());
   return 0;
}