Mam pytanie podobne do tego zadanego wcześniej, z wyjątkiem 3D, i potrzebuję tylko objętości, a nie faktycznego kształtu kadłuba.
Mówiąc dokładniej, otrzymałem mały zestaw punktów (powiedzmy 10-15) w 3D, z których wszystkie leżą na wypukłym kadłubie zestawu punktów (więc wszystkie one „mają znaczenie” i definiują kadłub). Chcę tylko obliczyć objętość kadłuba, nie dbam o obliczenie rzeczywistego wielościanu. Czy istnieje skuteczny algorytm do tego celu?
algorithms
reference-request
computational-geometry
Victor Liu
źródło
źródło
Odpowiedzi:
Byłbym zaskoczony, jeśli potrafisz pokonać sugestię Shuhao Cao: obliczyć kadłub, a następnie głośność, gdy tylko triangulacja kadłuba. Można obliczyć kadłub za pomocą algorytmu przyrostowego lub algorytmu pakowania prezentów. Jeśli naprawdę chcesz łatwego kodu, możesz po prostu napisać pętlę n 4 nad wszystkimi możliwymi trójkątami, aby sprawdzić, czy są na kadłubie. Dla n = 15 jest to wciąż dość szybkie i można łatwo wdrożyć skróty. Po uzyskaniu wszystkich powierzchni trójkąta wybierz jeden wierzchołek v i utwórz czworościan z każdym trójkątem T i v . Jego objętość to 4 ×O ( n2)) n4 n = 15 v T. v wyznacznik we współrzędnych wierzchołka.4 × 4
źródło
Mały test w MATLAB, dla liczby wierzchołków , każdy składnik jest jednolitą liczbą losową w [ 0 , 1 ] :N.= 100 [ 0 , 1 ]
Wynik:
Powiedziałbym, że jest dość szybki, jeśli chcesz uruchomić go razy, zajmuje to mniej niż 3 godziny. Oto jak to jest:106
źródło
Z FAQ obliczeń wielościennych obliczeń Komei Fukudy :
Może to wydawać się zakrywać specyfikę problemu 3D wśród trudności wyższych wymiarów, pomimo tytułu papieru Dyer and Frieze. Z ich streszczenia: „Pokazujemy, że obliczenie objętości wielościanu podanego albo jako listę aspektów, albo jako listę wierzchołków jest tak trudne, jak obliczenie stałej macierzy”.
źródło