Witajcie
Mam pytanie dotyczące OpenGL. Mianowicie mam zrobioną scenę na TPanelu w OpenGL. Na scenie wyświetlam zestaw punktów i umożliwiam użytkownikowi robienie obrotu i zooma względem punktu 0,0,0 (x,y,z). Dzięki czemu zestaw punktów może być dowolnie obrócony. W punkcie 0,0,0 (x,y,z) mam również na sztywno (niezależnie od tego co user rysuje) narysowane kolorowe osie wyznaczające kierunki X, Y, Z
procedure RysujOsie(const rozmiar :Single);
begin
glBegin(GL_LINES);
glColor3ub(255,0,0);
glVertex3f(0,0,0); glVertex3f(rozmiar,0,0); //OX, w prawo
glColor3ub(0,255,0);
glVertex3f(0,0,0); glVertex3f(0,rozmiar,0); //OY, do gory
glColor3ub(0,0,255);
glVertex3f(0,0,0); glVertex3f(0,0,rozmiar); //OZ, w glab
glEnd;
end;
Wszystko super bo przy obrocie osie wraz z obrazem się obracają ale gdy obraz nachodzi na punkty 0,0,0 to zaczyna się to zlewać.
Pomyślałem zatem, że odsunę sobie moje kolorowe osie np o 500 punktów względem X i Y. No i super też się udało ale w przypadku gdy user zaczyna robić zoom lub obracać to moje linie zaczynają znikać (bo np zoom jest taki, że punktu 500,500 nie ma na scenie).
Pytanie do was jak zrobić aby bez względu na zoom , obrót moje kolorowe linie znajdowały się np zawsze w lewym górnym rogu sceny?
Zoom robię tak:
gluLookAt(0,0,KameraZ, 0,0,0, 0,1,0);
Obrót robię tak:
glRotatef(Theta, 1.0, 0.0, 0.0); //wokol OX
glRotatef(Phi, 0.0, 1.0, 0.0); //wokol OY