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

Jak pobrać pozycję nw. punktów w SFML

Object Storage Arubacloud
0 głosów
90 wizyt
pytanie zadane 5 kwietnia 2017 w C i C++ przez Milesq Nałogowiec (32,020 p.)
Chodzi mi o funkcje pobierające punkty(e dokumentcji znalazłem tylko nieistotne informacje):

Pozycja myszy ale jako nie getposition tylko tak żebym miał X i Y w sensie żeby były dwie metody jedna do pionu druga do poziomu.

Pozycję obiektu klasy RectangleShape ale jako 4 zmienne :lewy dolny róg.

Prawy dolny róg. Lewy górny róg . Prawy górny róg.

Pytanie może wydawać się prozaiczne ale chodzi mi o każdy róg w tych obiektach więc to trochę komplikuje sprawy.

1 odpowiedź

+1 głos
odpowiedź 5 kwietnia 2017 przez niezalogowany
wybrane 5 kwietnia 2017 przez Milesq
 
Najlepsza

Pozycja myszy:

int x = sf::Mouse::getPosition().x;
int y = sf::Mouse::getPosition().y;

W przypadku RectangleShape masz metodę getPoint. Ona także zwraca wektor pozycji punktów w lokalnym układzie prostokąta (trzeba dodać wektor pozycji z getPosition() ), więc możesz wybrać, którą składową dokładnie chcesz. Metoda getPoint przyjmuje indeks punktów 0 - 3. Przykład: 

    sf::RectangleShape rectangle;

    rectangle.setPosition(200, 100);
    rectangle.setSize( sf::Vector2f( 20, 20) );

    float x0 = rectangle.getPosition().x;
    float y0 = rectangle.getPosition().y;

    cout<<rectangle.getPoint(0).x+x0<<" "<<rectangle.getPoint(0).y+y0<<endl;
    cout<<rectangle.getPoint(1).x+x0<<" "<<rectangle.getPoint(1).y+y0<<endl;
    cout<<rectangle.getPoint(2).x+x0<<" "<<rectangle.getPoint(2).y+y0<<endl;
    cout<<rectangle.getPoint(3).x+x0<<" "<<rectangle.getPoint(3).y+y0<<endl;

Lepiej jest jednak korzystać z wektorów od razu:

sf::RectangleShape rectangle;

rectangle.setPosition(200, 100);
rectangle.setSize( sf::Vector2f( 20, 20) );

sf::Vector2f A = rectangle.getPosition() + rectangle.getPoint(0);
sf::Vector2f B = rectangle.getPosition() + rectangle.getPoint(1);
sf::Vector2f C = rectangle.getPosition() + rectangle.getPoint(2);
sf::Vector2f D = rectangle.getPosition() + rectangle.getPoint(3);

cout<<A.x<<" "<<A.y<<" "<<endl;
cout<<B.x<<" "<<B.y<<" "<<endl;
cout<<C.x<<" "<<C.y<<" "<<endl;
cout<<D.x<<" "<<D.y<<" "<<endl;

Podobne pytania

0 głosów
1 odpowiedź 510 wizyt
pytanie zadane 5 maja 2019 w C i C++ przez Lampards Obywatel (1,130 p.)
0 głosów
1 odpowiedź 531 wizyt
pytanie zadane 8 października 2017 w Java przez Hiskiel Pasjonat (22,830 p.)
+2 głosów
3 odpowiedzi 488 wizyt
pytanie zadane 25 listopada 2022 w HTML i CSS przez MacieKap Bywalec (2,400 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 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!

...