Obrót
Czasami tworząc program możemy spotkać się z koniecznością narysowania linii pod określonym kątem, lub dokonania obrotu jakiejś figury. Wykonanie tych operacji jest stosunkowo proste. Wystarczy znajomość kilku wzorów.

Praktycznie w każdym języku programowania cała operacji obliczenia aktualnego położenia punkty znajdującego się pod określonym kątem do innego miejsca, sprowadza się do znajomości następującego wzoru:

x = xps + xr * sin(kat);

y = yps + yr * cos(kat);


x, y - współrzędna pozioma i pionowa punktu po dokonaniu obliczeń
xps, yps - współrzędna pozioma i pionowa punktu wokół którego dokonujemy obrotu
xr - promień x, odległość od punktu xps
yr - promień y, odległość od punktu yps

Jeżeli znasz matematykę chociażby na poziomie gimnazjum, pewnie już zauważyłeś, że otrzymane w ten sposób współrzędne są po prosty punktem leżącym na obwodzie koła, a właściwie elipsy ponieważ mamy możliwość zdefiniowania oddzielnego promienia poziomego i pionowego.

W większości języków programowania (o ile nie we wszystkich) miara kąta pełnego jest równa 2 * Pi. Gdybyśmy w miejsce zmiennej kat wpisali: 1 uzyskany w ten sposób kąt nie będzie równy 1 stopniowi. Aby obliczyć jego faktyczną wartość powinniśmy dokonać następującego obliczenia:

stopien = (2 * M_PI) / 360;


Powyższy fragment kodu, został zapisany w języku C++, jednak jego przełożenie na dowolny inny nie powinno sprawić trudności. Niektóre kompilatory ( np. C++ ) podczas, próby skompilowania programu zawierającego powyższe obliczenia mogą zwrócić komunikat o nieznajomych funkcjach sin() lub cos(). Okaże się wtedy konieczne dołączanie dodatkowych bibliotek. W C++ poprzez następujące wyrażenie:

#include "math.h"


Na koniec mały fragment kodu, który realizuje następujące założenie: oblicza aktualne położenie punktu, który jest położony pod kątem 45 stopni względem punkty o współrzędnych: 100, 50 i oddalony od niego o 20 pixeli:

int stopien, x, y;
stopien = (2 * M_PI) / 360;
 
x = 100 + 20 * sin(45 * stopien);
y = 50 + 20 * cos(45 * stopien);


Autorem tekstu jest: Michał Siudziński
http://cpw.net.pl
Materiał dodany przez użytkownika: alphan