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

데이터 구조에서 B-Rep를 트리로 변환

<시간/>

1 B-rep 스트림

일부 표준 다각형 형식으로 외부적으로 정의된 B-rep을 가져오는 생산자 프로세스를 설정하도록 명시되어 있습니다. 웨이브 프론트 또는 java3D obj 파일을 기하학적 파이프라인의 입력 스트림으로 변환합니다. 폴리곤과 법선이 제공하는 경계 표현은 일관성 있게 지향되어야 합니다. 비평면 다각형 및 기타 기하학적 부정확성에 대처하기 위한 입력 파일의 필터링은 주로 컴퓨터 그래픽에서 구현되는 일반적으로 보관된 기하학적 모델에 필요할 수 있습니다. 일관성 있게 지향된 삼각형의 출력 스트림은 아래에 설명된 알고리즘 단계에 따라 트윈 프로그레시브 BSP(Binary Search Partitioning) 트리로 변환됩니다.

2 B-rep to BSP 알고리즘 개요

우리 방법의 기본 절차는 각 삼각형의 미리 계산된 관성을 축소하여 삼각형 부분 집합의 관성을 계산하고 삼각형 부분 집합의 관성을 Eigen 분해하여 모양을 최적 및 재귀적으로 묶는 것입니다.

d차원의 경우, 오일러 행렬의 고유벡터 각각에 대해 2개의 극단 접선 초평면을 구현하여 형상 제한을 얻습니다. 대응하는 2차원 초공간의 교차는 현재 셀에 포함된 경계 부분집합의 가장 적합한(초)평행 육면체를 생성합니다. 3차원에는 6=2×3과 같은 평면이 있습니다.

초기화

  • 각 입력 삼각형의 affinely 확장된 오일러 텐서가 먼저 계산됩니다(선형 시간으로).
  • 입력 삼각형의 전체 세트는 BSP 루트와 결합됩니다.
  • 전체 E3 공간(볼록)이 루트에 결합됩니다.
  • 루트 레이블이 FUZZY로 설정되었습니다.

재귀적 대소문자

  • 현재 FUZZY 셀은 현재 삼각형 하위 집합의 오일러 텐서 행렬 표현의 고유 벡터에 수직인 최대 6개의 직교 초평면으로 나뉩니다.
  • 이러한 평면은 선형 함수 w =a의 가장 낮은 값과 가장 높은 값을 통해 계산됩니다. • v는 현재 삼각형 부분 집합의 꼭짓점 v에서 평가됩니다. 여기서 a는 현재 고유 벡터로 표시됩니다.
  • 각 고유 벡터의 경우 최대 3개의 볼록 셀이 {OUT, FUZZY, IN} 또는 {OUT, FUZZY, OUT}인 두 개의 최대-최소 병렬 초평면에 의해 생성됩니다.
  • 각 FUZZY 셀은 최대 고유 벡터와 관련된 주요 초평면으로 더 나뉩니다.
  • 더 작은 삼각형 하위 집합이 정점의 포함 테스트를 통해 분할된 각 셀에 결합됩니다.
  • 분할 평면을 가로지르는 삼각형이 분할되고 (서브)삼각형이 노드 하위 트리에 결합됩니다.

기본 사례

재귀 관성 기반 분할은 현재 셀이 소수의 경계 삼각형으로만 구성될 때 중지됩니다. 경계 삼각형의 평면을 구현하여 최종 셀 분할이 실행됩니다.