W konwersja modelu 3D do zbioru punktów, zostały wyrzucone informacji wymaganych znaleźć kształty skrzyżowaniu. Przejdź do wykresu łączliwości krawędzi z Twojego modelu 3D, aby znaleźć punkty przecięcia płaszczyzny krawędzi w kolejności.
zakładając, że masz, albo można skonstruować, 3D modelu topografia (niektóre liczba wierzchołków, krawędzi między wierzchołków twarze związanymi krawędziami):
- iterację listy krawędzi, aż znajdziesz taki, która przecina Test samolot, dodać go do listy
- Wybierz jedną z twarzy, które podzielają tę przewagę
- iterację pozostałych krawędziach tej twarzy, aby znaleźć kolejne skrzyżowanie, dodać go do listy
- powtórz dla drugiej twarzy który dzieli tę przewagę, dopóki nie wrócisz t krawędzi wyjściowej
pan zbudowany uporządkowaną listę krawędzi, które przecinają płaszczyznę - to trywialne liniowo interpolować każdą krawędź, aby znaleźć punkty przecięcia, tak, że tworzą kształt przecięcia. Zauważ, że proces ten zakłada, że wielokąty twarzy są wypukłe, co w twoim przypadku jest. Jeśli twoja objętość jest wklęsła, będziesz mieć wiele dyskretnych kształtów przecięć, a więc musisz powtarzać ten proces, aż wszystkie brzegi zostaną zbadane.
Istnieje kod Java, który wykonuje to here i dość sprytna aplikacja testowa here.
Kontrole:
- 1-5 zmienić Testowana objętość
- qiw zmieniać liczbę płaszczyzn zapytania
- , S i D, w celu zmiany szybkości skanowania zapytania samoloty
- lewej kliknij-przeciągnij, aby obrócić widok
- prawym przyciskiem przeciągania do obracania płaszczyzny zapytań
Czy mówisz o dowolnym typie kształtu 3D, czy też są jakieś ograniczenia aplikacji lub domeny? –
Chcesz uzyskać rozpoznawanie wzoru na wielokątach 2D? – ltjax
@Andre, Hello, mówię o dowolnym kształcie * 2d *. Ponieważ ciało 3d jest w kształcie gałęzi drzewa, prawdopodobnie będzie blisko elipsy – Ojala