unkn0wn Temat założony przez niniejszego użytkownika |
[C++] Odbicie piłeczek » 2013-03-22 17:29:13 Krótkie przemyślenia gdyby kogoś interesowało. Zastanawiam się, dlaczego tak trudno znaleźć jakiekolwiek materiały po polsku o fizyce w programowaniu(O FiZyCe, nie o odbiciu od powierzchni zmieniając prędkość na przeciwną). Po angielsku rozumiem problem+wyjaśnienie jak co trzeba zrobić, często sam nawet się domyślam, lecz przy kodzie nie daję już rady, gdyż zawsze pojawia się coś, czego po prostu nie umiem. Uparłem się, że zaprogramuję kolizje SAT dla prostokątów i kółek, rozumiem o co chodzi, lecz gdy na angielskojęzycznym tutorialu pojawiają się te nazwy parendicullar, parallel itp., które sobie wyjaśniam to i tak przy zdaniu "the resulting velocity of the particle is determined by scaling the parallel and perpendicular components of the incoming velocity by the coefficients of friction and bounce , respectively" -- wymiękam. Głównie to brakuje mi wiedzy z matmy, gdyż taki system nauczania w gimbazjum, gdzie przez 2 lata powtarza się pierwszą klasę(jestem w 3 i przez dwa lata nic nowego się nie nauczyłem). Sam próbuję/uczę się pisać obiektowo, lecz gdy podglądam w gotowym kodzie, gdzie oczywiście brak komentarzy -- jeszcze co nie co trudno mi załapać. (nie próbuję nawet przepisywać kodu, tyle że zrozumieć i samemu napisać). Na razie więc próbuję standardowo kółeczko vs kółeczko odnajdując kolizje według promieni. Do tematu: Odnajduję kolizje piłeczek. Teraz taki mam problem: 1. Oddzielenie jednej od drugiej. Jak mam je cofnąć spowrotem, aby nie były jedna w drugiej ? Wiem że na pewno obliczę ile wchodzą w siebie i cofnę jedną, lub obydwie, lecz jak cofnę?? i wtedy trzeba by było działać odbicie 2. odbicie. I tu zawsze gubię się, gdy dochodzę do sinusów i cosinusów lub pojęć, aby obliczyć "normalną". Mam tyle w tym problemie, lecz siedzę przy tym wszystkim już szóstą godzinę dziś i zastanawiam się, po co to napisałem skoro przy poruszających się piłeczkach, kąt odbicia nie będzie już równy kątowi padania?? Chyba że zaprzeczam tym wszystkim prawom, to sorry. double angle; float k; int v;
double x, y;
v = sqrt( vY * vY + vX * vX );
x = ballVec.x; y = ballVec.y;
k = 180.0f / PI; angle = atan2( y, x ) * k;
vX = v * cos( angle ); vY = v * sin( angle ); Gdyby ktoś po prostu byłby w stanie prostym językiem wytłumaczyć, lub przynajmniej w punktach co po czym działać. byłbym wdzięczny |
|
Hipochondryk |
» 2013-03-22 22:13:06 co do głównego tematu nie jestem w stanie Ci pomóc, ponieważ sam uczę się dopiero skłądni opena, i niezbyt bawiłem się fizycznymi zagadnieniami. Polecam Ci książkę "OpenGL programowanie gier" Kevin Hawkins i Dave Astle.
Jest wiele ciekawych rzeczy nawet i teoretycznych jak i przykładów kodu. co do samej fizyki jest w tej ksiażce dział, Modelowanie fizycznych wlasciwości świata. i zajmuje on 60 stron.
roździał ten zawiera między innymi zagadnienia takie jak :
Czas w grze odległość , przemieszczanie i położenie, prędkość i przyśpieszenie, siła wykorzystywanie 3 zasad dynamiki w programowaniu gier wykorzystywanie zasady zachowania pędu w programowaniu gier tarcie na płaszczyźnie i równi pochylej zderzenie obiektów 30 stron
mimo iż nie doszedłem jeszcze do tego zapowiada się ciekawie. a co do samej ksiażki to polecam. Uczy ona programować gry w oparciu o OpenGL do grafiki oraz DirectX input opraz DirecrX audio. wprowadza również do tworzenia sztucznej inteligencji dla przeciwników. Więc naprawdę polecam tą książkę :) mimo iż jest trudno dostępna, i dość stara (2003 najnowsze wydanie) to sama struktura i zasady algorytmów opisane w książce nie uległy zmianie, dlatego uważam iż ta książka nadaje się świetnie do nauki. |
|
Chlorek |
» 2013-03-23 11:11:39 Zacznę od tego, że nie trzeba cofać piłki, a przed jej przemieszczeniem sprawdzić, czy można ją przesunąć w dane miejsce (tu kolizje), jeśli nie to robisz całą masę innych rzeczy. A fizyka jak fizyka, wiele wzorów które poznałeś w szkole na fizyce można zastosować w programowaniu, wymaga to jedynie mocnego zaangażowania i trochę żmudnej pracy. Co do polskich kursów tego typu to prawda, mój angielski jest na tyle dobry, że każdy tekst czytam bez problemów, ale w takich przypadkach mi też jest ciężko się połapać i muszę czytać często po kilka razy. Co do realistycznych odbić piłki itd., kąt odbicia jest taki sam, więc bez zaawansowanej matematyki się obędzie, musisz tylko zastosować siłę grawitacji, by dodać odrobinę realizmu, musisz mieć kierunek i prędkość piłki, jak chcesz mieć na prawdę dobry efekt przydaje się też masa (ale do samego odbijania i grawitacji tu nie potrzebna masa obiektu). |
|
Wanngo |
» 2013-03-23 11:57:31 może i mało materiałów ;p http://e-wiki.pl/download/pmf.pdf( troche wzorów może coś sie przyda ) , tak narzekasz na naukę ale czy to nie twoja wina że nie chciałeś nić więcej się nauczyć :p ??
Jeśli nie chcesz bawić sie w implementacje własnej fizyki możesz użyć Box2d . PhysX . itp ... Nie wiem czy dobrze to odczytałem ale masz problem z przedstawieniem wzorów w postaci kodu(np c++), bo tak chcesz przykłady w programowaniu ;p (jeśli źle zrozumiałem nie obraź się )
Zawsze możesz też używać Książki [ENG] (jeśli nie posługujesz się za dobrze nim to ) wolniej wolniej ale do przodu nie ważne jak oby do przodu :p (najważniejsze zeby sie nie porywać na początku za jakieś mega mega Silniki fizyczne ) (miałęm kiedyś taki plan Symulatora Reaktora Jądrowego :p i też znalazłem mało wzorów w PL wersji ) (ale z tego co pamiętam nawet jedną całą książkę z takimi zworami )
|
|
unkn0wn Temat założony przez niniejszego użytkownika |
» 2013-03-23 12:07:56 rzeczywiście, przepowiadam kolizje, tyle żem się tego wszystkiego naczytał, że na tak prostą rzecz nie wpadłem :p ja to przy użyciu allegro piszę, lecz w tych książkach o OpenGL'u, np. "OpenGL i wprowadzenie do programowania gier" w spisie treści upatrzyłem, że są działy o trygonometrii, działaniach na wektorach i podstaw fizyki czyli podstawy podstaw. upatrzę takową książkę i zacznę rozumować nad OpenGL'em zanim się zniechęcę do tego wszystkiego (a łatwo się nie zniechęcam :p)
# Moja i tylko moja wina ale kurcze mogłoby się tego w szkole uczyć, a nie musiałbym po lekcjach zostać aby czegoś się nauczyć. To co w tej podstawie programowej to wprost na pamięć znam :p Gdy na przedostatniej lekcji, na tablicy baba zapisała Temat - Twierdzenie Pitagorasa, od razu zachciało mi się wyjść... Do tego zadania - pojedyncze trójkąciki i liczyć przeciwprostokątna albo przyprostokątną na przemian
Czytałem już o Box2d itp. lecz mi się wydaje, że to są podstawy, które po prostu muszę znać(a nawet ciekawie to wygląda, gdy coś się udaje z fizyką), dlatego sam to wszystko próbuję zaimplementować
Zakodowanie tego nie byłoby mi trudne, gdybym te wzory kumał i wiedział gdzie ich użyć. A gdy w necie zaczynam czytać tak chaotycznie, od tego do tamtego, strasznie długo przesiaduję przy kompie jedynie czytając i na kartce sobie wyjaśniając |
|
« 1 » |