Warsztat.GD

Programowanie => Programowanie grafiki => Wątek zaczęty przez: lukaszsa w Styczeń 12, 2018, 02:32:50

Tytuł: SFML - convex shape origin position points problem z ustawieniem.
Wiadomość wysłana przez: lukaszsa w 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
Tytuł: Odp: SFML - convex shape origin position points problem z ustawieniem.
Wiadomość wysłana przez: Risist w Styczeń 20, 2018, 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