Ruch jest zmianą prędkości która jest wartością wektorową. W
Transkrypt
Ruch jest zmianą prędkości która jest wartością wektorową. W
Ruch Ruch jest zmianą prędkości która jest wartością wektorową. W najprostszym przypadku możemy zmieniać położenie o piksele, nie przejmując się wektorami, prędkością i przyspieszeniem. Taki ruch jednak nie będzie najlepszy – mało płynny i nienaturalny. Do opisu ruchu służy przede wszystkim prędkość. Prędkość jest stosunkiem przesunięcia do czasu w jakim nastąpiło. Gdy na przykład obiekt przesunie się o jedną jednostkę w prawo i dwie do góry, to wektor przesunięcia będzie równy (1 , 2). v = ∆r / ∆t Prędkość jako wektor mówi nam, jak szybko porusza się przedmiot oraz w jakim kierunku. Do dobrego przedstawienia ruchu na ekranie potrzebne jest nam przyspieszenie. Jest to wektor przedstawiająca zmianę prędkości następującą w określonym czasie: a = ∆v / ∆t Siła – jest to kolejna wielkość wektorową która warto znać. Siła działająca na ciało powoduje zmianę jego prędkości. Jeżeli na ciało działa pewna stała siła to przedmiot porusza się z przyspieszeniem równym: a = F /m Przyspieszenie jest wprost proporcjonalne do działającej na ciało siły – im większa siła tym większe przyspieszenie i odwrotnie proporcjonalne do masy – im większa masa tym mniejsze przyspieszenie. Ruch sprężysty Ciało o właściwościach sprężystych nazywamy sprężyną. Każda sprężyna ma określoną długość (mierzona w spoczynku). Kiedy zadziała na nią siła (np. zawieszenie na niej jakiegoś obiektu) spowodujemy zmianę jej długości. Wydłużeniem sprężyny w danej chwili nazywamy różnicę obecnej długości sprężyny i jej długości w spoczynku. Na ciało zawieszone na sprężynie działa siła której wartość jest proporcjonalna do wydłużenia sprężyny a kierunek wektora siły wskazuje punkt zawieszenia sprężyny: F = k * x; gdzie: F – siła k – współczynnik sprężystości x – wydłużeni Współczynnik sprężystości jest różny dla różnych ciał – im ciało łatwiej rozciągnąć tym współczynnik jest mniejszy. Ruch po okręgu Dotychczas rozpatrywaliśmy ciało na które działaliśmy siłą przyczepioną do środka jego masy. Teraz rozpatrzymy sytuację w której na ciało będziemy działać siłą przyczepioną do różnych miejsc, wprowadzając go w rotację. Kiedy ciało porusza się po okręgu, to w każdej jednostce czasu zakreśla pewien kąt. Wartość prędkości kątowej jest równa ilorazowi wartości kąta zakreślonego przez ciało i jednostki czasu, w którym nastąpił ten ruch. Prędkość kątowa: w = ∆a / ∆t W ruchu po okręgu wyróżniamy dwie prędkości: liniową oraz kątową. Zależność między tymi wielkościami opisuje wzór: w = v/r gdzie: w – prędkość kątowa v – prędkość liniowa r – promień obrotu Czyli prędkość liniowa wynosi: v = w*r Najprostszym przypadkiem ruchu obrotowego byłoby ciało zawieszone na lince, poruszające się z pewną prędkością kątową. Aby opisać taki ruch nie potrzebujemy współrzędnych ciała a jedynie kąt, długość liny oraz prędkość kątową. W ruchu po okręgu także możemy mierzyć przyspieszenie (kątowe): e = ∆w /∆t gdzie e – przyspieszenie kątowe ∆w – zmiana prędkości kątowej ∆t – zmiana czasu Przykład prostej funkcji umożliwiającej obrót wokół pewnego okręgu: void drawTri() { float m = 0; //wspolrzedna x okregu float n = 0; //wspolrzedna y okregu float r = 0.2; //;promien okregu alpha +=omega; //zmiana kata float h = r*sin(alpha); //wysokosc trojkata float a = r*cos(alpha); //podstawa trojkata coordY = n+h; //nowe wspolrzedne coordX = m+a; //jw coordY = coordY-0.001*sin(alpha); coordX = coordX-0.001*sin(alpha); glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(coordX + 0.0f, coordY+0.1f); glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(coordX + 0.087f, coordY-0.05f); glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(coordX-0.087f,coordY-0.05f); glEnd(); } Projekt: Arkanoid!