Aktualnie próbuję użyć OpenGL (z SDL), aby narysować sześcian w miejscu, w którym kliknąłem lewym przyciskiem myszy na ekranie, a następnie ustawić go na ekranie wskaż pozycję na ekranie, na którą kliknę prawym przyciskiem myszy.Znaleźć kąty dla osi X, Y i Z w 3D - OpenGL/C++
Mogę z powodzeniem narysować kostkę w wybranym miejscu za pomocą gluUnproject - Znaczenie znam już współrzędne, z których moja kostka się znajduje.
Jednak nie wiem, jak obliczyć wszystkie kąty wymagane, aby mój punkt kostki w nowej lokalizacji.
Oczywiście nadal używam gluUnproject, aby znaleźć współrzędne mojego prawego kliknięcia, ale wiem tylko, jak obracać wokół osi Z z wykorzystaniem grafiki 2D.
Na przykład wcześniej, gdybym chciał obrócić kwadraturę wokół osi Z (Oczywiście byłby to widok z góry na dół, gdzie oś Z wciąż "przechodzi" przez ekran) w 2D, zrobiłbym coś takiego :
angle = atan2(mouseCoordsY - quadPosY, mouseCoordsX - quadPosX);
glRotatef(angle*180/PI, 0, 0, 1);
Moje pytanie brzmi: jak mam to zrobić w 3D?
- Czy muszę obliczać kąty dla każdej osi, tak jak powyżej?
- Jeśli tak, to jak obliczyć kąt obrotu wokół osi X i Y?
- Jeśli nie, jakiej metody należy użyć, aby osiągnąć pożądane wyniki?
Każda pomoc jest bardzo doceniana.
Jak określić współrzędna reprezentowany przez każde kliknięcie myszą? Jeśli po prostu ustawisz na 0, wystarczy geometria 2D i domyślam się, że to nie jest twój zamiar. –
Kliknięcie w przestrzeni 3D powinno definiować promień, a nie punkt. Jestem ciekawy, w jaki sposób udało ci się zlokalizować kostkę. – tafa
@Marcelo Cantos: Przebacz mi, jeśli źle zrozumiałem twoje pytanie, ale jestem nowy w tym i dlatego, chociaż myślę, że wiem, o co prosisz, może nadal mam zły pomysł.Zasadniczo, jeśli moja kostka znajduje się w (100, 200, 300) i klikam (400, 500, 600), potrzebuję znaleźć kąty, w których potrzebuję obrócić kostkę, aby spojrzeć na drugi zestaw współrzędne. –