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

vektori...
Goto page Previous  1, 2, 3
 
dev.gamez.lv Forum Index -> Matemātika un fizika
View previous topic :: View next topic  
Author Message
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

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

Izlasi manu jautājumu vēlreiz :)
Kā tu īsti definē poligonu ar kuru pārbaudīt sadursmi?
Tikai a,b,c?
Back to top
View user's profile Send e-mail
s1
Guest





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

Nu jā, tikai a,b,c.
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:34 pm    Post subject:

Tad tev viss ir nepareizi! Padomā tak loģiski. Skaties:
Piemēram tu gribi nodefinēt poligonu plaknē, kura ir paralēla zemei, tb atrodās zOx plaknē, un pie tam, tā atrodas augstumā 0. Tavā gadījumā tu droši vien ņemtu normāli, kas vērsta vertikāli augšup, tb (0,1,0). Tagad padomā kā definētos līdzīgs poligons, tikai plaknē, kuraa ir augstumā 10. Tb y koordinātei atļauts būt tikai 10, bet x un z ir vienalga kādas. Vai tagad redzi, ka šai planei normāles vektors ir pilnīgi tāds pats, kā iepriekšējais (0,1,0). Tātad nepietiek tikai ar normāles vektoru (A,B,C). Vajag ieviest vēl vienu definējamo vērtību = D. Pirmajā gadījuma D=0, otrajā D=-10 (tb plaknes attālums līdz (0,0,0) punktam). Tagad var redzēt kā izskatās šo plakņu vienādojumi formā Ax+By+Cz+D=0. Pirmai plaknei 0x+1y+0z+0=0, bet otrajai - 0x+1y+0z-10=0. Lūk kur rodās D koeficients. Šī spriešana ir līdzīga arī ne-paralēlām pret koordināšu asīm plaknēm. Vienk šādi ir vieglāk izskaidrot un uztver to. Jo ne-paralēlām plaknēm ir sarežģītākas formulas.

Ja interesē, kā no dota trīsstūra, kas uzdots ar 3 punktiem - V1(x1,y1,z1), V2(x2,y2,z2) un V3(x3,y3,z3) pārbaudīt vai punkts P(x,y,z) ir tuvu šim trīsstūrim, tad tas darās kautkā šādi:

Aprēķini matricas:
Code:
    |x-x1 y-y1 z-z1|
M = |x-x2 y-y2 z-z2|
    |x-x3 y-y3 z-z3|
determinantu det(M) un tad:
vai_ir_vienaa_plaknee := abs(det(M))<EPS;

Determinanta vērtība nosaka to, ka trīs vektori (matricas rindas) ir koplanāri (atrodas vienā plaknē) tad un tikai tad, ja det(M)=0. Tā lūk.

Bet protams, tev vēl jāpārbauda, vai punkts ir tuvu šim trīsstūrim, tb vai P ir iekš V1, V2, V3 veidotā poligona, citādi iedomājies: P=(0,0,0), un V1, V2, V3 veido trīsstūri xOz plaknē, tikai kautkur pie vērtībām Y=0, X~=100 Z~=100, tb tālu prom no (0,0,0) punkta. Matricas determinants det(M) būs = 0, bet, protams, acīmredzami, ka punkts nepieder trīsstūrim (bet tie vektori ir koplanāri, jo visiem Y=0). Tā ka.. domā :)
Back to top
View user's profile Send e-mail
s1
Guest





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

Bubu, man radās pāris jautājumi : tanī matricā, kas ir domāts x un x1 un
kapēc jāzina, vai vektori ir vienā plaknē Question
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:58 pm    Post subject:

Izlasi vēlreiz, kas ir dots - V1(x1,y1,z1), V2(x2,y2,z2), V3(x3,y3,z3) un P(x,y,z).

Lai punkts P sadurtos ar trīsstūri V1,V2,V3 - viens no nosacījumiem ir, lai šie izveidotie vektori būtu vienā plaknē. Īstenība šie vektori, ja neesi vēl pamanījis nozīmē nogriežņu orientāciju no P uz attiecīgi V1, V2, V3 (pa matricas rindām). Otrs - lai tas punkts atrastos trīsstūra iekšienē. To var pārbaudīt, piemēram, skatoties uz šo uzkonstruēto trīs vektoru leņķiem (uzzīmē bildi, tad kļūs skaidrāks)
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Feb 15, 2005 1:20 pm    Post subject:

Reku otrajam gadījumam bilde:

Tātad, ja abs(det(M))<EPS, tad der pārbaudīt:
if ((a<A) && (b<B) && (c<C)) { tagad P noteikti ir sadūries ar trīsstūri; } :)
Tas protams no tīri tādām ģeometriskām konstrukcijām. Tas nav arī optimāli rēķināt leņķus, jo tur būs ietvertas trigonometriskas operācijas. To var visu panākt ar diezgan vienkāršām darbībām, izmantojot nedaudz analītiskās ģeometrijas operācijas (tb vektoru skalāro reizināšanu). To arī vajag parādīt priekšā? :)
Back to top
View user's profile Send e-mail
Lāčblēdis



Joined: 16 Jan 2005
Posts: 113

PostPosted: Tue Feb 15, 2005 2:10 pm    Post subject:

Jā, redzams, ka steidzami vajag jaunas sadaļas, kura būs veltīta matemātikai.
Back to top
View user's profile
s1
Guest





PostPosted: Tue Feb 15, 2005 5:10 pm    Post subject:

Pārlasīju otreiz visu Bubu rakstīto un mēģināju tajā iebraukt, taču pēc tam man sāka reibt galva Shocked un radās nepārvaramas slāpes kautko uzdzert. Laughing. ............

Esmu atguvies.
Back to top
s1
Guest





PostPosted: Tue Feb 15, 2005 5:18 pm    Post subject:

Izskatās, ka man sanāca Laughing .
Patiesībā man vajadzēja aprēķināt attālumu no punkta līdz plaknei.
Attālumu es aprēķināju šādi: aprēķināju vektoru d no trīstūra virsotnes līdz punktam. Un tad pēc formulas attālums = n.x*d.x + n.y*d.y + n.z*d.z. n - trīstūra normāles vvektors.
Back to top
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: Tue Feb 15, 2005 9:36 pm    Post subject:

Meegjinaashu izskaidrot to ko bubu tur tik dzilji izklastiija:

1) Kaa noteikt d veertiibu preksh plaknes?

Ja ir zinaams trijstuuris un plaknes virziens (a,b,c) kuram tas pieder
tad d var ieguut izmantojot jebkuru no punktiem kuri veido sho trijsturi (p)un ievietojot to luuk sheit:
d = -(a*px+b*py+c*pz)

2) Kaa noteikt punkta attaalumu liidz plaknei?

Ja Tev ir punkts p, un plakne a,b,c,d, tad distanci var ieguut sekojoshi:

dist = a*px+b*py+c*pz+d

3) Sheit ir kods kaa noteikt vai punkts atrodas trijstuura iekspusee (tai bildei augstaak):
http://astronomy.swin.edu.au/~pbourke/geometry/insidepoly/
Back to top
View user's profile Send e-mail Visit poster's website
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
Page 3 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