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

vektori...
Goto page Previous  1, 2, 3  Next
 
dev.gamez.lv Forum Index -> Matemātika un fizika
View previous topic :: View next topic  
Author Message
s1
Guest





PostPosted: Fri Feb 11, 2005 3:27 pm    Post subject:

Labi bubu, ņemšu tevi vērā.
Back to top
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Fri Feb 11, 2005 3:34 pm    Post subject:

Quote:

Giga, vai šādi būs pareizi taisīt kolīziju:
d := -ax+-by-cz;
if(ax+by+cz+d = 0)then sadursme := TRUE else sadursme := FALSE; ?

nee, nee, nee un veelreiz nee Smile nekad nepaarbaudi float'us ar = Exclamation
panjem kaadu mazu nobiidi, jo float nav bezgaliigi preciizs, ka vienaadiiba paarbaude vienmeer sakritiis.

Labaak paarbaudi vai kustiibas saakumpunkts ir vienaa pusee plaknei, un beigu otraa, tad objekts buus krustojis to plakni.
_________________
Back to top
View user's profile Send e-mail
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: Fri Feb 11, 2005 6:09 pm    Post subject:

GiGa wrote:
Labaak paarbaudi vai kustiibas saakumpunkts ir vienaa pusee plaknei, un beigu otraa, tad objekts buus krustojis to plakni.


Piemeeram: Ja kustiibas virziens ir vektors v, punkta poziicija dotajaa laika spriidii p, un paarvietoshanaas solis t (vai aatrums).

Tad rezultaata punktu ieguusi saadi, vai ne: p' = p + v * t
Un tagat tu vari paarbaudiit p' pret plakni.

Preteejaa gadiijumaa, ja paarbaudiisi vienkaarshi p pret plakni, tad rezultaataa notiks taa ka koliizijas briidii punkts jau atradiisies plaknes aimuguree un taa ir nedaudz gruutaak paarreekjinaat kustiibas virzienu ja punktam ir jaaatlec no plaknes!
Back to top
View user's profile Send e-mail Visit poster's website
s1
Guest





PostPosted: Sun Feb 13, 2005 11:12 pm    Post subject:

vēl viena problēma sakarā ar kolīziju. Pieņemsim, ka kolīzija ir tikai ar zemi. Punkts sadurās ar poligonu, taču ir jāzin konkrēti ar kuru poligonu Rolling Eyes Viena lieta, kas man iešāvās galvā ir: izmantot Picking metodi, kur peles X un Y vietā ielikt punkta X un Z koord.. Varbūt jūs variet ieteikt kautko labāku un vienkāršāku?
Back to top
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Sun Feb 13, 2005 11:27 pm    Post subject:

Quote:

Punkts sadurās ar poligonu, taču ir jāzin konkrēti ar kuru poligonu

Hmm, tev ir zinaama kaada mistiska metode, kaa noteikt kustiiga punkta sadursmi ar poligonu, nezinot, kas par poligonu? Smile
_________________
Back to top
View user's profile Send e-mail
s1
Guest





PostPosted: Mon Feb 14, 2005 1:20 pm    Post subject:

Nē, tu mani pārprati, laikam es neskaidri uzrakstīju. Tad kad notiek aprēķini, protams, ka punkts ir nekustīgs. Lūk, es gribu prasīt padomu, kā lai nosaka poligonu, virs kura atrodas šis punkts?
Back to top
Lāčblēdis



Joined: 16 Jan 2005
Posts: 113

PostPosted: Mon Feb 14, 2005 1:23 pm    Post subject:

Pārbaudi visus daudzstūrus, kuri atrodas tavā tuvumā.
Back to top
View user's profile
s1
Guest





PostPosted: Mon Feb 14, 2005 5:05 pm    Post subject:

Lāčblēdi, to ,ka jāmeklē, to es saprotu, bet KĀ?
Back to top
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Feb 14, 2005 7:07 pm    Post subject:

Vistriviālāk - pilnā pārlase:
Code:
for (i=0; i<Poligoni.Skaits; i++) {
   if (IrPunktsVirsPoligona(Punkts, Poligoni[i])) {
     // atradām poligonu = Poligoni[i]
   }
}

Ja grib ko ātdarbībāku, tad var izmantot spatial partitioning, tb, ņemt palīgā octrees, vai ko citu līdzīgu. Kautgan visdrīzāk tev jau derēs speciālāks algritms, kas izmantos tava dzinēja īpašības, tb, kuros gadījumos, kurš punkts būtu jāsalīdzina ar kuriem poligoniem :)
Back to top
View user's profile Send e-mail
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: Mon Feb 14, 2005 8:07 pm    Post subject:

s1, pasaki konkreeti kaadu uzdevumu tu taisies paveikt, tad mums buus tev vieglaak paliidzeet un kaut ko ieteikt!
Back to top
View user's profile Send e-mail Visit poster's website
s1
Guest





PostPosted: Tue Feb 15, 2005 11:30 am    Post subject:

ok, ar poligona noteikšanu zem punkta, es tiku galā, izmantojot 'picking' metodi. Taču kolīzija īsti nestrādā, droši vien dēļ tā ka neprotu aprēķināt komponenti d.

d := -ax+-by-cz;
if(ax+by+cz+d < 0.01)and(ax+by+cz+d > -0.01)then sadursme := TRUE else sadursme := FALSE;

...Šāds d aprēķins laikam neder, jo d šādi drīkst rēķināt, ja vienādojums ir vienāds ar 0. Man ļoti noderētu pareiza d aprēķināšana.
Back to top
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Feb 15, 2005 11:40 am    Post subject:

Pasaki, lūdzu, kas tavā gadījumā ir x, y, z, a, b un c?
Pie tam, otro rindiņu var uzrakstīt smukāk :)
sadursme := abs(ax+by+cz+d) < 0.01;
Back to top
View user's profile Send e-mail
s1
Guest





PostPosted: Tue Feb 15, 2005 11:52 am    Post subject:

ax+by+cz+d = 0 -plaknes v-ums

a,b,c - poligona normāles
x,y,z - punkta koord.

punkts atrodas virs poligona (tas krīt uz plaknes no augšas), bet d - ?????
kautkāds attālums no (0,0,0) lidz ???? lūk, to d es neprotu aprēķināt
Back to top
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Feb 15, 2005 12:07 pm    Post subject:

Tev plakne (poligons) tiek uzdots tikai ar a, b un c? Tikai ar trīs lielumiem?
Tā jau nevar viennozīmīgi nodefinēt to plakni. Var tika viņas vērsumu nodefinēt, bet pozīciju telpā ir bezgalīgi daudz iespējamu.
Normālā gadījumā planki, kurā atrodas tavs poligonsm, definē ar 4 lielumiem: a,b,c un d.
Tad punkta (x,y,z) tuvums šai plaknei aprēķinās visai vienkārši: vai_punkts_ir_tuvu := abs(ax+by+cz+d) < EPS;
Kur EPS vari ņemt mazu vērtību atkarībā no aprēķinu vajadzīgās precizitātes.
Back to top
View user's profile Send e-mail
s1
Guest





PostPosted: Tue Feb 15, 2005 12:11 pm    Post subject:

Es tev pilnīgi piekrītu, bet tas ceturtais lielums d ??? Kas tas īsti ir...
Back to top
Display posts from previous:   
dev.gamez.lv Forum Index -> Matemātika un fizika All times are GMT + 2 Hours
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
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