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

SFML - wyliczenie pozycji w czasie rotacji

Object Storage Arubacloud
0 głosów
236 wizyt
pytanie zadane 11 czerwca 2016 w C i C++ przez Maciek123233 Gaduła (3,400 p.)

Witam!

oknoAplikacji.clear();
obrazek.setOrigin(500,500);
obrazek.rotate(1);

sf::Vector2f poz= obrazek.getPosition();
cout<<poz.x<<" i "<<poz.y<<endl;

oknoAplikacji.draw( obrazek );
oknoAplikacji.display();

Gdy obrazek się obraca to poz.x i poz.y i tak wskazuje ten sam punkt.

Jak wyliczyć dokładny punkt?

2 odpowiedzi

+1 głos
odpowiedź 11 czerwca 2016 przez MetRiko Nałogowiec (37,110 p.)

Sprawianie by jakiś obiekt, krążył dookoła innego przez zmianę Origin jest niepoprawne.
W celu osiągnięcia tego i uzyskania pozycji obiektu krążącego musisz użyć matmy, a dokładniej trygonometrii :)
Trochę ci w tym pomogę:
1. Musisz zainkludować bibliotekę <cmath>, będzie potrzebna do funkcji trygonometrycznych.
1. Potrzebujesz zmiennej (nazwijmy ją) Time, która będzie się inkrementować w każdym obiegu pętli głównej, będzie to czas naszej gry.. w końcu pozycja będzie się zmieniać z czasem.
2. Proponuję ustawić Origin w obu obiektach na środku. Ok nazwijmy obiektem krążącym, a Oc obiektem centralnym.
3. A teraz ustawiamy pozycję Ok:
   > Ok.x=Oc.x+Radius*cos(Time/Cycle);
  
> Ok.y=Oc.y+Radius*sin(Time/Cycle);
   Gdzie:
   Radius - Promień naszego okręgu
   Time - Czas gry
   Cycle - Zmienna kontrolująca szybkość jednego cyklu.. mówiąc inaczej im jest większa tym Ok będzie krążył wolniej.

   Ważne by wszystkie zmienne wymienione wyżej były typu zmiennoprzecinkowego (np. float, double)

0 głosów
odpowiedź 11 czerwca 2016 przez niezalogowany
I dobrze się dzieje. getPosition() zwraca pozycję Origin (pivota), a podczas rotacji jego pozycja się nie zmienia (bo jest dokonywana względem tego punktu).

Jaki punkt chcesz obliczyć?
komentarz 11 czerwca 2016 przez Maciek123233 Gaduła (3,400 p.)

#mistrzpa9i

#mistrzpainta

zakładamy  że czerwone kółko to wymiary origin, zielone kółko się obraca wokół czerwonego kółka ale pozycja zielonego się nie zmienia. No ale skoro obraca się wokół drugiego kółka to się musi zmieniać.

I chcę wyliczyć tą prawdziwą pozycję.

komentarz 11 czerwca 2016 przez niezalogowany

Wymiary? Raczej pozycja. Origin to punkt. Pozwól że skorzystamy z mojego obrazka, po lewej mamy figurę w stanie początkowym (znane są nam wszystkie wartości początkowe), po prawej mamy figurę po rotacji o znany nam ß, (xc, yc) to punkt origin, więc jest identyczny przed i po rotacji. Chcesz obliczyć np wartości (x1',y1')?

[full size]

komentarz 11 czerwca 2016 przez Maciek123233 Gaduła (3,400 p.)
Dokładnie o to chodzi! Przepraszam, czy to ty zrobiłeś poradnik dla pocz. na temat SMFL?
komentarz 11 czerwca 2016 przez Boshi VIP (100,240 p.)
Tak, to Szymon ;)

Podobne pytania

0 głosów
0 odpowiedzi 242 wizyt
pytanie zadane 29 kwietnia 2017 w C i C++ przez Pajdas Mądrala (5,930 p.)
0 głosów
2 odpowiedzi 269 wizyt
pytanie zadane 16 marca 2017 w C i C++ przez 10kw10 Pasjonat (22,880 p.)
0 głosów
3 odpowiedzi 663 wizyt
pytanie zadane 19 lutego 2017 w C i C++ przez Munvik Dyskutant (9,350 p.)

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

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

...