Bei einem kleinen Test in MATLAB für die Anzahl der Scheitelpunkte ist jede Komponente eine einheitliche Zufallszahl in :[ 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;
Ergebnis:
time_elapse =
0.014807
Vol =
0.67880219135839
Ich würde sagen, es ist ziemlich schnell, wenn Sie es Mal ausführen möchten, dauert es nur weniger als 3 Stunden. So ist es:106
Ich möchte auch erwähnen, dass er in Professor O'Rourkes Beitrag die Verwendung von Determinanten zur Berechnung der Tetraeder-Volumina erwähnt hat, aber hier bevorzuge ich die Verwendung von Dreifachprodukten. Es ist eine natürlich vektorisierte Operation, die skalierbarer ist als die eingebaute Determinantenroutine (oder Sie können eine Determinante von Hand erweitern: p). Hier ist ein weiterer Test für , das Ergebnis istN = 10 54 × 4N.= 105
time_elapse =
3.244278
Vol =
0.998068316875714
mit Tetraederzahl . Beachten Sie, dass das Gesamtvolumen ziemlich nahe bei da in zu viele Punkte gruppiert sind . 1 [ 0 , 1 ] 3≈ 7 × 1051[ 0 , 1 ]3