Autor Wątek: SFML - convex shape origin position points problem z ustawieniem.  (Przeczytany 251 razy)

Offline lukaszsa

  • Użytkownik

# Styczeń 12, 2018, 02:32:50
Cześć

(Poprawiłem gramatykę, interpunkję i stylistykę, więc mam nadzieję, że teraz ktoś przeczyta i pomoże)

Tworzę grę, w której mam siatkę trójkątów.
Generuję sobie te trójkąty w swoich klasach Triangle i TriangleGrid gdzie mam listę trójkątów w postaci 3 punktów każdy trójkąt i z tego tworzę sobie trójkąty w SFML korzystając z ConvexShape.

Po utworzeniu trójkątów chcę sobie ustawić origin i Position dla każdego, bo domyślnie jest 0,0 i w tym momencie się wszystko sypie (wiem czym jest origin i position), ale nie mogę zrozumieć, dlaczego position jest domyślnie 0,0. Wyliczam sobie, gdzie jest środek i gdzie go chcę mieć i ustawiam, ale po ustawieniu się sypie. Po ustawieniu positions są dziwnie poprzesuwane i przy obracaniu wszystkich trójkątów i zamiast obracać się wokół środka kwadratu opisanego na trójkącie, to się obracają wokół początku układu współrzędnych.

Uprzejmie proszę o pomoc oraz uświadomienie mnie gdzie się mylę albo źle coś rozumiem, bo już wszystkie chyba kombinacje ustawień sprawdziłem i dalej lipa.

Pozdrawiam i dziękuję
Łukasz
« Ostatnia zmiana: Styczeń 12, 2018, 15:53:05 wysłana przez lukaszsa »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Risist

  • Użytkownik

# Wczoraj o 23:57:04
ConvexShape sh;

Vector2f origin = coś tam;

sh.setPoint(0,p1);
...
sh.setPoint(n,pn);

sh.setOrigin(origin);
sh.setPosition(-origin);

Ogólnie rzeczywista pozycja wierzchołka to sh.getPosition() + sh.getOrigin() + point (obrócony przez transform)

W razie wątpliwości polecam zajrzeć do dokumentacji lub do źródeł sfml'a.
// Ps. piszę z pamięci więc w szczegółach coś może się różnić.

Edit
Dlatego obraca ci się wokoło początku układu współrzędnych bo pozycja sh jest równa 0, a pozycje punktów to jedynie offset od tej pozycji
« Ostatnia zmiana: Wczoraj o 23:59:52 wysłana przez Risist »