Moją intuicją zawsze było to, że kiedy jakakolwiek sfera jest rzutowana w przestrzeń 2D, wynik zawsze będzie matematycznie elipsą (lub kołem w zdegenerowanych przypadkach).
W przeszłości, kiedy aktywnie zajmowałem się programowaniem graficznym i rozmawiałem z innymi ludźmi, byli nieugięci, że się mylę. Jeśli dobrze pamiętam, wierzyli, że wynikiem może być coś „w kształcie jajka”.
Kto miał rację?
Ponieważ została już przesłana jedna odpowiedź, nie chcę całkowicie zmieniać mojego pytania, ale zdaję sobie sprawę, że pominąłem ważne szczegóły z powodu utraty znajomości tej dziedziny z biegiem lat.
Chciałem zapytać konkretnie o rzutowanie perspektywiczne, w którym rzutowanie ma charakter liniowy .
Inne projekcje są oczywiście interesujące dla wielu zastosowań, więc nie chciałbym, aby zostały w tym momencie usunięte. Byłoby jednak wspaniale, gdyby odpowiedzi mogły mieć projekcję perspektywiczną jako najważniejszą część.
źródło
Odpowiedzi:
Zakładając rzut perspektywiczny i punkt widzenia zewnętrzny względem kuli, wówczas „granica” utworzona przez punkt widzenia i okrąg na kuli, który tworzy horyzont WRT punkt widzenia, będzie stożkiem.
Wykonanie rzutu perspektywicznego (na płaszczyznę) jest następnie równoważne przecięciu tego stożka z płaszczyzną, która w ten sposób wytwarza odcinek stożkowy. FYI cztery przypadki nie zdegenerowane pokazano na tym zdjęciu z Wikipedii
Elipsa / okrąg jest więc możliwą, ale nie jedyną - nieograniczonymi parabolami lub hiperbolami (i myślę, że jeśli samolot przejdzie przez oko, nawet zdegenerowane przypadki) są możliwe.
źródło
To jest bardziej jak długi komentarz do odpowiedzi @ SimonF, że próbuję zrobić coś samowystarczalnego.
Możliwe są wszystkie nacięcia stożka, hiperbola, parabola i owale. Można to łatwo przetestować, rysując obrazy w silniku 3D za pomocą kamery o bardzo szerokim kącie. Obróć kamerę, aby powiedzieć pod kątem 30 stopni, aby obiekt nie znalazł się w środku ostrości. Następnie stopniowo zbliżaj aparat do kuli.
Zdjęcie 1: Latanie bardzo blisko kuli wyglądającej lekko na boki. Zauważ, jak nagle przebiliśmy formę wewnątrz.
Podsumowując, gdy kula jest bardzo blisko i wychodzi z obrazu na szerokim obrazie, może to być parabola lub hiperbola. Ale kształt po prostu opuści ramkę, aby to zrobić.
źródło
Systemy projekcyjne służą do przekształcania kształtu 3D w kształt płaski (2D).
Zgodnie z rodzajem systemu projekcji z kuli można wytwarzać różne wyniki i kształty, takie jak prostokąty, ciasta, elipsy, koła ...
Systemy projekcyjne można klasyfikować według cech generowanego przez nie wyniku.
Aby kontynuować, chciałbym użyć bardzo dotykalnego i powszechnego przykładu, który wszyscy widzieliśmy wcześniej, kuli ziemskiej i globalnych szerokich map, są one wszędzie.
Załóżmy, że twoja kula jest ziemią!
Wyobraź sobie ziemię jako swoją kulę i płaską mapę świata, która jest utworzona z kulistego kształtu ziemi. Na większości map świata widać, że kraje znajdujące się w pobliżu biegunów stają się znacznie większe niż w rzeczywistości, na przykład Islandia, która w rzeczywistości stanowi 1/14 kontynentu afrykańskiego, ale mapa pokazuje je jako równe. Dzieje się tak, ponieważ pomijając jeden wymiar, tracimy jedną cechę charakterystyczną naszych kształtów.
Różne systemy projekcji i ich wyniki
Jest to rzut płaski, który nie zachowuje odległości, kątów ani powierzchni. Czerwone kółka pokazują ilość przesady, która jest wynikiem tej projekcji.
Równy Obszar, spójrz na Islandię i Afrykę w tym jednym i porównaj z powyższym.
Systemy projekcyjne można sklasyfikować według tego, co zachowują.
Rzuty konformalne zachowują kształty, ale obszar nie zostanie zachowany (pierwszy obrazek powyżej) ten jest najbardziej znanym systemem rzutowania, który jest używany w wielu aplikacjach. Twoja kula jest tutaj prostokątem!
Nie można więc powiedzieć, że kula będzie zawsze rzutowana na elipsę. Jak wspomniano powyżej, kula może być rzutowana na prostokąt (pierwszy kształt) lub może być elipsą, ale o różnych cechach (równy kąt, odległość, kształt, pole - patrz poniższy rysunek), lub możesz również rzutować kulę na stożkowy a następnie otwórz stożek, aby uzyskać ciasto.
Każdy z powyższych systemów projekcji można zastosować za pomocą iteracyjnych lub bezpośrednich algorytmów, które można znaleźć w Internecie. Nie mówiłem o formule i transformacjach, ponieważ nie pytałeś. Chociaż życzę ci, aby ta odpowiedź była przydatna.
W rzutach perspektywicznych mówię tak, tylko sfery będą wytwarzane z kul
Cięcie stożka za pomocą płaszczyzny poziomej tworzy okrąg.
Cięcie ukośną płaszczyzną tworzy fazę, która byłaby elipsą lub hiperbolą w zależności od kąta cięcia, a gdy ten kąt będzie nachylony do pionu, utworzy się parabola (poniższy rysunek).
Może to oczywiste, ale spójrz na ich równania.
Dla uproszczenia założyłem, że wszystkie geometrie są wyśrodkowane.
Równania:
Morfologia:
Elipsa ma oczywiście dwa ogniska. Okrąg jako szczególny rodzaj elipsy ma również dwa ogniska, ale są one zbieżne. Hiperbola jest jednak zwierciadłem osi równej elipsy i ma również dwa ogniska. Parabola ma jedno ognisko, ale w rzeczywistości ma dwa, ponieważ drugie znajduje się w nieskończoności: gdy płaszczyzna cięcia pochyla się do 90 stopni (kąt namiaru), drugie ogniskowanie przechodzi w nieskończoność.
Wniosek
Jak widać, wszystkie są elipsami, jednak możesz nazwać je inaczej w celu opisania specjalnych przypadków, ale jeśli zamierzasz zaimplementować je w grze, musisz przyjąć równanie elipsy i to wystarczy. Nie mogę powiedzieć, który z was ma rację, ty czy twój przyjaciel, ponieważ obaj mogą mieć rację.
źródło
Rozumowanie SimonFa w zasadzie mnie przekonało, ale postanowiłem zrobić kontrolę zdrowia psychicznego. Załadowałem poziom UE4, który ma pewne sfery, takie jak ten:
Ustawiłem pole widzenia kamery na 160 stopni, aby uzyskać duże zniekształcenie perspektywy, i ustawiłem go tak, aby kula znajdowała się w pobliżu rogu obrazu:
Potem wziąłem to do Inkscape i użyłem narzędzia elipsy, aby na nim narysować:
Niespodzianka! Idealnie pasuje!
źródło
Nie ma żadnych paraboli ani hiperbol powstających podczas krojenia kuli raz. Nie ma też elips, z wyjątkiem specjalnego przypadku, którym jest okrąg. Rezultatem jest zawsze okrąg. Jeśli rzutujesz kulę na nachyloną płaszczyznę, otrzymujesz elipsę
źródło