Nepřesnot – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nepřesnot – C / C++ – Fórum – Programujte.comNepřesnot – C / C++ – Fórum – Programujte.com

 

yaqwsx+9
Posthunter
4. 9. 2008   #1
-
0
-

Zkouším takovou malou herní blbůstku. Mám problém s kolizemi - jsou nepřesné.
Každý objekt mám ohraničený a vyšrafovaný úsečkami. Úsečku mám definovanou úhlem a délkou, jelikož objekty ve hře hodně rotuju. Začátek úsečky mám definovaný další úsečkou, která začíná ve středu, nebo určeném bodu na objektu.
Převod ze 2 bodů na úsečku mám následovně(je to pouze útržek kódu ve kterém by mohla být chyba, ošetření vykročení z intervalu 90 ° tady nedávám):

delka = sqrt(x*x + y*y);

uhel = (atan(x/y)*pi/180;

Vím, že je zbytečné převádět úhel na stupně, ale mám to pro potřeby debugování apod.
Převod z úsečky na bod [0;0] a druhý bod:
x = delka * sin(u*180/pi);

y = delka * cos(u*180/pi);

A kolizi počítám následovně:
double t1 = (u.x*(A.y-C.y)-u.y*(A.x-C.x))/(u.y*v.x-u.x*v.y);

double t2 = (v.x*(A.y-C.y)-v.y*(A.x-C.x))/(u.x*v.y-uv.y*v.y);
if(t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1)

u je směrový vektor první úsečky definované body A a B, v je směrový vektor druhé úsečky definované C a D

Už nevím, kde by mohla být chyba, a nedávno se tu řešila nepřesnost, tak bych se chtěl zeptat, zda-li to může být nepřesností funkcí a nebo je chyba někde, jinde, kterou jsem přehlédl.

Předem děkuju za odpověď

Nahlásit jako SPAM
IP: 85.160.92.–
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
4. 9. 2008   #2
-
0
-

vynechal si veledulezitou vec a to typy promennych....
napriklad jestli x/y je deleni dvou celejch cisel tj int x,y; ... tak to udela taky celociselny deleni....
jedina pomoc je double(x)/y

to jen tak tipuju bez tech tvejch typu

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
4. 9. 2008   #3
-
0
-

stejne tak u tech dalsich jestli jsou u.x u.y v.x v.y typu int tak se ti nakonec provede celociselny deleni

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

Vše mám samozřejmě double.

Nahlásit jako SPAM
IP: 85.160.92.–
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
4. 9. 2008   #5
-
0
-

co si neco dosadit? proste to vypocitat na papire a porovnat s tim co vyjde... neco kde mas ty nepresnosti

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

Dneska už mi nestačily nervy při hledání chyby, tak jsem dneska celou struktury úsečky smazal a napsal znovu - a problém je vyřešen.

Nahlásit jako SPAM
IP: 85.160.74.–
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
6. 9. 2008   #7
-
0
-

To yaqwsx : no to je nekdy asi nejlepsi... prepsat to :)

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 6 hostů

Moderátoři diskuze

 

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