작은 점의 3D 볼록 껍질의 양이 선체에 모두 설정됩니다.


11

3D 제외하고 는 이전에 요청한 것과 비슷한 질문 있으며 실제 선체 모양이 아닌 볼륨 만 필요합니다.

보다 정확하게는, 3D로 작은 점 세트 (예 : 10-15)가 주어 졌는데,이 점들은 모두 점 세트의 볼록 껍질에 놓여있는 것으로 알려져 있습니다. 선체의 부피 만 계산하고 싶습니다. 실제 다면체 계산은 신경 쓰지 않습니다. 이를위한 효율적인 알고리즘이 있습니까?


당신은 점들이 다면체의 정점이라는 것을 알고 있습니다. 얼굴 (선체의 다각형)을 알고 있습니까? 그렇다면 볼륨을 "콘"볼륨의 합으로 쉽게 계산할 수 있습니다.
hardmath

1
게으른 방법은 먼저 삼각 측량 한 다음 사면체의 양을 합산하는 것입니다 (매우 계산하기 쉽습니다).
Shuhao Cao

@hardmath : 아니요. 패싯 ​​모양을 알면 쉽다는 것을 알고 있습니다.
Victor Liu

@ Shuhao Cao :이 특별한 경우에 간단한 삼각 측량 알고리즘이 있습니까? 일반적으로 3D 사면 체화 알고리즘은 매우 복잡하므로이 문제를 수천 또는 수백만 번 해결해야합니다.
Victor Liu

답변:


5

Shuhao Cao의 제안을 이길 수 있다면 놀랄 것입니다. 선체를 삼각 측량하면 선체를 계산 한 다음 볼륨을 계산하십시오. 증분 알고리즘 또는 선물 포장 알고리즘을 사용하여 선체를 계산할 수 있습니다. 쉬운 코드를 원한다면 가능한 모든 삼각형 위에 n 4 루프를 작성 하여 선체에 있는지 확인할 수 있습니다. 를 들어 N = 15 , 이것은 꽤 빨리 여전히, 당신은 쉽게 바로 가기를 구현할 수 있습니다. 삼각형면이 모두 있으면 정점 v 하나를 선택 하고 각 삼각형 Tv 로 4 면체를 만듭니다 . 볼륨은 4 ×O(n2)n4n=15vTv꼭짓점 좌표에서 4 개의 결정 요인.4×4


2

MATLAB에서 정점 수 대한 작은 테스트에서 각 성분은 [ 0 , 1 ] 에서 균일 한 난수입니다 .N=100[0,1]

N = 100;
p=rand(N,3);
tic;
T = delaunayTri(p(:,1),p(:,2),p(:,3));
t = T.Triangulation;
e1 = p(t(:,2),:)-p(t(:,1),:);
e2 = p(t(:,3),:)-p(t(:,1),:);
e3 = p(t(:,4),:)-p(t(:,1),:);
V = abs(dot(cross(e1,e2,2),e3,2))/6;
Vol = sum(V);
time_elapse = toc;

결과:

time_elapse =
              0.014807
Vol =
      0.67880219135839

10 번 실행하려면 3 시간도 걸리지 않습니다. 다음과 같습니다.106

컨볼

4×4N=105

time_elapse =
              3.244278
Vol =
     0.998068316875714

7×1051[0,1]3


BTW 테스트는 이전 2007 Core 2 T61p에서 수행됩니다.
Shuhao Cao

2

Komei Fukuda의 다면체 계산 FAQ에서 :

Rd

V- 폴리 토프 (또는 H- 폴리 토프)의 부피를 계산하는 것은 # P-hard 인 것으로 알려져있다 [DF88] 및 [Kha93]. 볼록 바디의 부피를 근사화하는 이론적으로 효율적인 랜덤 알고리즘이 있지만 [LS93] 구현이 불가능한 것 같습니다. 볼록형 폴리 토프에 대한 다양한 부피 계산 알고리즘에 대한 비교 연구 [BEF00]가 있습니다. 여러 유형의 폴리 토프에 잘 작동하는 단일 알고리즘이 없음을 나타냅니다.

[DF88] ME Dyer와 AM Frieze. 다면체의 부피를 계산하는 복잡성. SIAM J. 컴퓨팅 , 17 : 967-974, 1988.

[Kha93] LG 카 치얀. 폴리 토프 부피 계산의 복잡성. J. Pach, 편집자, 이산 및 계산 기하학의 새로운 트렌드 , 91-101 페이지에서. 1993 년 베를린 Springer Verlag

L. Lovasz와 M. Simonovits. 볼록한 몸통에서의 무작위 보행과 향상된 볼륨 알고리즘. 무작위 구조 및 알고리즘 , 4 : 359-412, 1993.

[BEF00] B. Bueler, A. Enge 및 K. Fukuda. 볼록한 폴리 토프에 대한 정확한 부피 계산 : 실용적인 연구. G. Kalai 및 GM Ziegler에서 편집자 인 Polytopes-Combinatorics and Computation , DMV-Seminar 29, 131-154 페이지를 참조하십시오. Birkhauser, 2000 년.

이것은 Dyer와 Frieze 논문의 제목에도 불구하고 더 큰 차원의 어려움 중에서 3D 문제의 세부 사항을 묻는 것처럼 보일 수 있습니다. 초록에서 : "우리는 패싯 목록 또는 정점 목록으로 주어진 다면체의 부피를 계산하는 것이 행렬의 영속성을 계산하는 것만 큼 어렵다는 것을 보여줍니다."

PPNvvPPPP={xR3:Axb}

P

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.