Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, Allegro5] Odczyt pozycji obróconego punktu względem obiektu

Ostatnio zmodyfikowano 2012-05-12 15:10
Autor Wiadomość
SeaMonster131
Temat założony przez niniejszego użytkownika
[C++, Allegro5] Odczyt pozycji obróconego punktu względem obiektu
» 2012-05-12 14:26:36
Może najpierw przedstawię rysunek:

http://scr.hu/0ug/p2wo3

Czyli tak:
Na pierwszym rysunku (ten po lewej) jest sobie obiekt (na pozycji x, y) - prostokąt i czerwona kropka (na pozycji x2, y2). Po obróceniu obiektu o n-stopni (na rysunku o 90 stopni w prawo, rysunek po prawej) pozycja x2 i y2 to czerwona kropka, a ja chciałbym odczytać nową pozycje tej kropki - tej żółtej.

Kropkę rysuję tak:
C/C++
al_draw_rotated_bitmap( pkt, - 30, 5, 1024 / 2 - 37.5, 768 / 2 - 37.5, angle, 0 );
-30,5 - jest to pozycja na bitmapie (obiekcie) wokół którego ma się obracać pkt
1024/2-37.5, 768/2-37.5 - to pozycja kropki
angle - to kąt obiektu

Wszystko jest dobrze, lecz tutaj jest moje pytanie.. W jaki sposób mam teraz odczytać, gdzie znajduje się ta kropka po obróceniu obiektu?
P-56548
xevuel
» 2012-05-12 14:50:49
Może źle cię zrozumiałem, jeśli tak, to przepraszam... Ale czy zwykłe sin() i cos() nie wystarczą? W końcu jakby nie patrzyć, po wprawieniu w ciągły obrót tego prostokąta kropka będzie się poruszać po okręgu :)
P-56550
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2012-05-12 15:02:55
Hm.. zrobiłem tak:
C/C++
float x2 = 1024 / 2 - 37.5, y2 = 768 / 2 - 37.5;
...
al_draw_rotated_bitmap( pkt, - 30, 5, x2, y2, angle, 0 );
x2 += speed * cos( angle );
y2 += speed * sin( angle );
Lecz kropka porusza się za szybko, i zmienia pozycje według której się obraca..


// Dobra, nie zauważyłem jednego małego i głupiego błędu.. Nie dodałem pozycji kamery do wyświetlania tego pkt ! :)

Przepraszam za temat :)
P-56551
xevuel
» 2012-05-12 15:09:09
Cóż... Ja bym to zrobił tak, że pozycja kropki przy kącie obrotu 0° wynosi środek prostokąta + sinus i cosinus * np. 50. Potem liczę sinus i cosinus dla obrotu prostokąta (jego środek pozostanie przecież cały czas w jednym miejscu) i mnożę wynik przez te 50. Szybkość może być za szybka, ale raczej nie zmieni już pozycji po której się obraca :) Przynajmniej tak to wygląda u mnie na papierze...

//Jak pisałem tego posta to jeszcze nie zdążyłeś wyedytować tamtego :P Super :)
P-56552
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2012-05-12 15:10:27
Dziękuję Ci bardzo za wszelką pomoc, lecz temat już rozwiązany :)
P-56553
« 1 »
  Strona 1 z 1