• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przeliczenie układu kartezjańskiego okna, na opengl'owski

Object Storage Arubacloud
0 głosów
343 wizyt
pytanie zadane 14 października 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
edycja 14 października 2016 przez Avernis
Cześć. W glfw okno ma wymiary np. 600/600, i jak używam pobrania pozycji myszki to chcę aby zamiast pokazywania mi w konsoli pozycji kursora względem okna, chcę aby pokazywało mi tak jak jest w opengl, czyli środek okna to 0/0 a np. górny lewy róg to 1/1 a dolny prawy to -1/-1
komentarz 14 października 2016 przez Patrycjerz Mędrzec (192,320 p.)
Nie pogubiłeś się lekko w swoich zeznaniach? Jak może być "0/0" dla "środka okna" i "górnego lewego rogu"?

Poza tym współrzędne na ekranie nie muszą się pokrywać z tymi na scenie OpenGL.
komentarz 14 października 2016 przez Avernis Nałogowiec (27,400 p.)
A ja właśnie potrzebuję aby się pokrywały

1 odpowiedź

0 głosów
odpowiedź 14 października 2016 przez criss Mędrzec (172,590 p.)
wybrane 14 października 2016 przez Avernis
 
Najlepsza
Nie bardzo widzę sens, bo współrzędne w GL się przecież zmieniają zależnie od view i projection matrixa. No ale jak już to co za problem napisać sobie taką funkcje konwerującą? Pomyśl troche - to nie jest trudne do napisania. Zaledwie kilka ifów i sensowne obliczenia.

Edit:

Chcesz żeby pokrywały się wsp. okna i openGL? To zamiast konwertować koordynaty, ustaw view i projection matrix tak żeby się koordynaty rysowania openGL pokrywały się z koordynatami okna. Juz był taki temat na forum: http://forum.pasja-informatyki.pl/133020/wspolrzedne-myszki-opengl#a133032
komentarz 14 października 2016 przez Avernis Nałogowiec (27,400 p.)
potrzebne mi to aby zrobić kolizję: kursor-obiekt. A pytam bo myślałem nad tym cały dzień
komentarz 14 października 2016 przez criss Mędrzec (172,590 p.)
W sumie to nie pytałem po co ci to :P pomógł ci ten zalinkowany przeze mnie temat czy nadal chcesz konwertować współrzędne?
komentarz 14 października 2016 przez Patrycjerz Mędrzec (192,320 p.)
Jeśli chcesz wykryć kolizję kursora z obiektem w przestrzeni 3D, to zainteresuj się rzutowaniem figur trójwymiarowych na płaszczyznę dwuwymiarową. Jakbyś znał współrzędne zrzutowanych wierzchołków danego modelu na ekran, to mógłbyś wtedy połączyć zewnętrzne punkty rzutu w wielokąt, a później rozwiązać jakiś układ równań, aby wykryć kolizję.
komentarz 14 października 2016 przez Avernis Nałogowiec (27,400 p.)
Wykrywać kolizję umiem, ale chciałbym wygrywać kolizje w gui
komentarz 14 października 2016 przez Avernis Nałogowiec (27,400 p.)
Criss, nadal chcę konwertować
komentarz 14 października 2016 przez criss Mędrzec (172,590 p.)

Wykrywać kolizję umiem, ale chciałbym wygrywać kolizje w gui

Czym to się różni ? :-:

 Takie coś napisałem do konwersji, jeśli sam nie możesz do tego dojść to wklejam:

if (x >= scr.x / 2) new_x =( scr.x / 2 - x) /( scr.x / 2);
else new_x = -x / (scr.x / 2);

if(y >= scr.y / 2) new_y = -(scr.y / 2 - y) / (scr.y / 2);
else new_y = y / (scr.y / 2);

scr.x i scr.y to odpowiednio szerokość i wysokość okna

x i y to wsp. myszki 

new_x i new_y to oczywiście przekonwertowane wspolrzędne.

komentarz 14 października 2016 przez Avernis Nałogowiec (27,400 p.)
Znalazłem błąd w twoim kodzie gdyż kiedy myszka jest na pozycji 0/0 względem okna, to względem opengl też jest 0/0
komentarz 14 października 2016 przez criss Mędrzec (172,590 p.)
Pisałem go na kartce, nie testowałem. Więc mogą być błędy niestety.
komentarz 17 października 2016 przez Avernis Nałogowiec (27,400 p.)

Pomyślałem kilka dni, i wymyśliłem coś lepszego:

std::cout << (x_cursor_pos - (window_width / 2)) / (window_width / 2) << std::endl;

 

Podobne pytania

–1 głos
1 odpowiedź 239 wizyt
pytanie zadane 25 marca 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
0 głosów
1 odpowiedź 360 wizyt
pytanie zadane 27 lutego 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
–2 głosów
0 odpowiedzi 178 wizyt
pytanie zadane 25 grudnia 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...