Kolizia kruhov – Matematika – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kolizia kruhov – Matematika – Fórum – Programujte.comKolizia kruhov – Matematika – Fórum – Programujte.com

 

Grungy0
Super člen
30. 1. 2010   #1
-
0
-

Ahojte riešim jeden problém, z kolíziou dvoch kruhov v 2D priestore. Ako som už povedal mám dva kruhy, poznám ich smerové vektory, ale netuším ako vypočítať ich smerové vektory po ich vzájomnej kolízii. Viem že tam treba použiť niečo z analytickej geometrie, tak som to dal do tejto sekcie. Budem vďačný za každú radu.

Nahlásit jako SPAM
IP: 188.123.100.–
Prvý náznak hlúposti, je pocit geniality.
KIIV
~ Moderátor
+43
God of flame
30. 1. 2010   #2
-
0
-

no letmym odhadem bych to resil pres vzdalenost stredu obou kruznic a od te vzdalenosti by se odecetly oba polomery... jakmile je vzdalenost 0 nebo mensi tak doslo ke kolizi..

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
yaqwsx+9
Posthunter
30. 1. 2010   #3
-
0
-
Nahlásit jako SPAM
IP: 85.160.65.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
KIIV
~ Moderátor
+43
God of flame
30. 1. 2010   #4
-
0
-

pozici dotyku by dostal i z tech stredu... bude to usecka rozdelena podle velikosti polomeru

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
yaqwsx+9
Posthunter
30. 1. 2010   #5
-
0
-

To KIIV : Aha, to je vlastně pravda. To mě nenapadlo.

Nahlásit jako SPAM
IP: 85.160.65.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Grungy0
Super člen
30. 1. 2010   #6
-
0
-

To KIIV : nie kolíziu mám vyriešenú, problém ostáva ako sa zachovajú po tej kolízii, teda ako sa od seba odrazia. Pri opačných vektoroch je to pohodka, ale pri rôznych už netuším.

Nahlásit jako SPAM
IP: 188.123.100.–
Prvý náznak hlúposti, je pocit geniality.
illioner0
Stálý člen
30. 1. 2010   #7
-
0
-

Tak normálně laickej nástin - udělej součet všech tří vektorů pro každou jednotlivou kouli-kruh.
První vektor je pohybovej té koule. Druhej je převrácený vektor na místě dotyku. Tozn. že když padá kulička rovně dolů a je tam něco šikmo 45 stupňů zhora doleva dolu- bral bých výsledný úhel šikmo nahoru doleva. Vznikne ti vektor po tomhle součtu - změněnej z dolů na čistý doleva.
Pak přičteš třetí vektor což je pohybovej vektor druhého objektu jen jeho velikost a počítaná směrem pro místo střetu mínus střed. Zase když do kruhu něco ťukne vpravo dole, začne se pohybovat určitou rychlostí doleva nahoru. Velikost síly bude odchylka (klasickej vzorec pro úhel dvou úseček) směru pohybového vektoru druhého objektu - ku místu střetu objektů. Ta nabyde od 0 do 1, nemůžou do sebe narazit v jinym než max. 90 stupňovym úhlu svého pohybu prostorem vůči bodu střetu! Pro různý velikostní kruhy pak můžeš ještě násobit velikost vektoru.

ËDIT:
Ty hrátky s druhým vektorem (dotyku) jsem řešil poměrně úspěšně takhle:
uh1-dotyk, uh2-pohybovej vektor * v podstatě odečtenej úhel směru je potřeba vynásobit dvakrát

   uh1:=arctan(zy/zx);

If zx<0 then uh1:=uh1+Pi;
end;
If vx=0 then begin If vy>0 then uh2:=Pi/2 else uh2:=3*Pi/2; end
else begin
uh2:=arctan(vy/vx);
If vx<0 then uh2:=uh2+Pi;
end;
If (uh1>=3*Pi/2)and(uh2<Pi/2) then
uh1:=uh1-2*Pi else
If (uh2>=3*Pi/2)and(uh1<Pi/2) then
uh2:=uh2-2*Pi;
If abs(uh1-uh2)<=Pi/2 then begin
uh:=uh1-uh2;
pomer:=(Pi+2*uh);
uh2:=uh2+pomer;
If (sila<>0)and(rych<10) then begin
sila:=sila*120;
vx:=round(sila*cos(uh2));
vy:=round(sila*sin(uh2));

Nahlásit jako SPAM
IP: 85.71.152.–
Nechápu softwarové firmy, ktere utrácejí za čim dál těžkopádnější DRM ochranu!! Vidět kolem snahu o free2play model je jako příjemné připomenutí časů shareware (jen ten Microsoft stále nic nepochopil)
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
30. 1. 2010   #8
-
0
-

To illioner : zbytocne komplikovane.

Prerob si to do taziskovej sustavy, a tam vyries priamu zrazku 2 kruhov, co ako hovoris uz vyriesit vies. Potom k novym vektorom pricitaj rychlost taziska. Hotovo.
(rychlost taziska ziskas ako (m1*v1+m2*v2)/(m1+m2) v1, v2 su vektory a m1, m2 su nejake ekvivalenty hmotnosti)

Nahlásit jako SPAM
IP: 217.118.98.–
Grungy0
Super člen
31. 1. 2010   #9
-
0
-

Ďakujem, to z tým sčítaním vektorov mi veľmi pomohlo, len mám ešte jednu otázku. Ak mám daný bod, jeho smerový vektor a vzdialenosť ktorú má prekonať, ako sa dopočítajú jeho súradnice po prekonaní tej vzdialenosti? Zdá sa že som z tej analytiky toho už moc zabudol.

Nahlásit jako SPAM
IP: 188.123.100.–
Prvý náznak hlúposti, je pocit geniality.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

Kolízia so stenou — založil Dead Boss

Kolízia (XNA) — založil Andrej

Kruhový seznam — založil Redby

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý