dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Hipotenūzas rēķināšana baigi noslogo proci?

 
dev.gamez.lv Forum Index -> Matemātika un fizika
View previous topic :: View next topic  
Author Message
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Tue Aug 07, 2007 11:20 am    Post subject: Hipotenūzas rēķināšana baigi noslogo proci?

A?

(Runa, protams, par spēli un spēles galveno ciklu, kurā hiopotenūza tiktu rēķināta ļoti bieži, pie jebkuras kolīzijas. Šobrīd man ir "kastes" veida kolīziju detekcija, bet man vajag mazliet citu.)

Es protams veiktu testus, bet tagad esmu darbā un vnk radās dažas domas. Kā tur īsti ir? Es zinu, ka dalīšana un reizināšana ir "smagas"darbības, tādēļ kvadratēšana un kvadrātsaknes vilkšana varētu būt "ļoti smaga" figņa...no otras puses, kolīzijas ar lodi 3D spēlēs, imo, ir diezgan populāras. So, kā tad īsti ir, cik bīstama ir hipotenūza?
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: Tue Aug 07, 2007 12:26 pm    Post subject:

Testus neesmu veicis, bet zinu ka saknes vilkšana noslogo.
Ateceries, ka salīdzināšanai gandrīz nekad nevajag vilkt to kvadrātsakni. ja ir iespējams, labāk otru salīdzinamo paņemt kvadrātā.

Protams, ja vajag precīzu garumu, tad neko... :]


EDIT: Paskatījos un izrādās ka googlee var atrast čupu ar dažādām kvadrātsaknes aproksimācijām.
_________________
Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor.
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Aug 07, 2007 2:06 pm    Post subject:

A par profileri esam dzirdējuši?
Tas, ka kautkāda kvadrātsakne "noslogo" procesoru tas neko nenozīmē. Ja spēlē būs kautkāda citai nesaistītasmaga darība, ko piemēram AI, tad lai kā tu optimizētu savu vadrātskanes vilkšanu, programmu ātrāku nepadarīsi (jo lēnais AI joprojām paliks lēns). Tāpēc vispirms pārliecinies, ka kvadrātsakne ir viens no lielākajiem bremzes cēloņiem un tikai tad optimizē.

90/10 likums - 90% laika izpildes laika, tiks izpildīts tikai 10% koda - optimizējot atlikušos 90% koda tu neko vairāk par 10% ātrdarbību neiegūsi.
Back to top
View user's profile Send e-mail
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Tue Aug 07, 2007 9:42 pm    Post subject:

Kāpēc tev vajag rēķināt kvadrātsakni?
Slikta kolīzijas testēšanas metode:
DX=distance x
DY=distance y
Hipotenūzu rēķinātu tā - distance=sqrt(DX*DX+DY*DY)
Pēc tam tu šo hipotenūzu salīdzinātu ar minimālo attālumu un noteiktu, vai objekti ir sadūrušies:
if(distance<min_distance)
notika_sadursme;

bet lai taupītu resursus, kāpēc jāvelk kvadrātsakni, ja var kāpināt minimālo distanci kvadrātā?

distance_kvadrātā=DX*DX+DY*DY;
if (distance_kvadrātā<min_distance*min_distance)
notika_sadursme;

un no hipotenūzas rēķināšanas esam tikuši vaļā.
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Aug 07, 2007 11:15 pm    Post subject:

A ja nu viņam attālumu vajag dabūt, lai rēķinātu tur kautkādus krustošanās koordinātes vai vēl sazin ko?
Back to top
View user's profile Send e-mail
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Tue Aug 07, 2007 11:24 pm    Post subject:

Kamazs wrote:
no otras puses, kolīzijas ar lodi 3D spēlēs, imo, ir diezgan populāras

Es runāju par lodēm. Ja vajag krustošanās utt. tad vajag meklēt, kā tās optimizēt.
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Aug 07, 2007 11:36 pm    Post subject:

Ok, nu jā, ja vajag tika notika/nenotika sadursme veida atbildi, tad kā jau pat DeRatizators augstāk teica - nevajag vilkt kvadrātsakni, pietiek tikai otru salīdzināmo lielumu pakāpināt kvadrātā.
Back to top
View user's profile Send e-mail
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Wed Aug 08, 2007 9:28 am    Post subject:

Thnx! Par kvadrātu salīdzināšanu nebiju iedomājies, heh. Sanāk, ka kvadrātsakne ir ļaunāka par reizināšanu..a dalīšana ir tikpat ātra kā reizināšana? (8/2=4 un 8*0.5=4)?

Bet nu, man vajag arī attālumu vairākās vietās, tā ka būs vien jāhipotenuzē laikam.
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Wed Aug 08, 2007 10:09 am    Post subject:

Nē, floatu dalīšana ir ļaunāka par floatu reizināšanu. Tb lēnāka. Ja vien tik tu nedali ar konstanti un kompilators izdomā, ka konstantes apgrieztā vērtība ir precīzi izsakāma un šis to dalīšanu aizvieto ar reizināšanu.

Integeriem gan laikam nav īsti atšķirības (uz mūsdienu procesoriem).
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Matemātika un fizika All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group