|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Aug 22, 2007 11:18 pm Post subject: dinamiskais vektors projekcijaa |
|
man te radaas taada doma kaa salabot vienu probleemu speeles jaunajaa projekcijas kodaa... dinamiskais UP vektors projekcijaa...
man jaadara taa:
jaanormalizee vektors, kursh noraada projekcijas virzienu
(XYZ_FROM->XYZ_TO)
tad kautkaa jaadabuu augshas virziena vektors no shii normalizeetaa projekcijas virziena vektora, bet probleema ir taada, ka es nezinu kaa vinju ar kautkaadu darbiibu dabuut!
kaads paliidzees? _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Aug 22, 2007 11:42 pm Post subject: |
|
No viena vektora tu nevari dabūt vektoru uz augšu viennozīmīgi. Definē precīzi, kas ir UP vektors! (0, 1, 0) vai? Jo pasaki man lūdzams - kāds ir tavs UP vektors, ja virziena vektors ir (0,-1,0) ?
No diviem vektoriem gan tu vari dabūt trešo vektoru, kas vienmēr būs vienlaicīgi perpendikulārs abiem diviem vektoriem, izmantojot vektoru vektoriālo reizinājumu (piemēram - no Right un Forward vektoriem dabūt Up vektoru).
Vēl iespējams, ka tev vajag ņemt savu virziena vektoru, un vektoru (0,1,0) un veikt Grama-Šmita ortogonalizēšanu. Bet nu tas ir atkarīgs no precīzi ko tev tur vajag dabūt... |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Aug 23, 2007 9:32 am Post subject: |
|
es straadaaju ar 0,0,1 kaa parasto augshas vektoru... nu vienkaarshi nevaru pierast y kaa augstuma raadiitaaju lietot.. un arii eerti nav..
ja virziena vektors buutu 0,-1,0, tad aughsas vektors buutu 0,0,1!
nuu es domaaju, ka jaataisa taa, ka z-virziens (zdirection) jaapielabo par +90*, bet taakaa zdirection ir limitos no 0-180 (0-skats pavisam uz leju, 180 - skats pavisam uz augshu) tad sanaak taa, ka liidz 90* tikai jaapieskaita zdirection'am +90 un UP vektors gatavs, bet virs 90*iznaak taa, ka
add = 180-zdirection;
add2 = 90-add;
direction = dir_temp + 180;
zdirection = 180-add2;
un jaaizveido vektors ar... dazhaam labaam funkcijaam... nu pameeginaashu, bet ja kaadam rodas praataa kaads labaaks variants, tad lai saka droshi! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Aug 23, 2007 9:42 am Post subject: |
|
snake5 wrote: | ja virziena vektors buutu 0,-1,0, tad aughsas vektors buutu 0,0,1! |
Ok, tādā gadījumā, ja z tev ir uz augšu - tad kāds būtu augšas vektors, ja virziena vektors ir 0,0,-1 ?
Nu nevar no viena paša vektora dabūt vienu vienīgu perpendikulāru vektoru. Vienam konkrētam virziena vektoram atbilst bezgalīgi daudz augšas vektori.
Vajag orientāciju telpā aprakstīt ar trīs vektoriem - up, forward, right (vai left, atkarībā no koordināšu sistēmas orientācijas). Un šie trīs vektori orientāciju telpā aprakstīs viennozīmīgi. Šie vektori veido 3x3 rotācijas matricu. Un jebkuru vienu no šiem vektoriem var viennozīmīgi izteikt no abiem pārējiem vektoriem izmantojot vektoriālo reizinājumu.
snake5 wrote: | tikai jaapieskaita zdirection'am +90 un UP vektors gatavs, |
Kādā rakā tu grasies vektoram pieskaitīt leņķi? Matemātiski tā ir nedefinēta operācija. Tas ir gandrīz vai tas pats, kas gribēt tilpumam (piem, litri) pieskaitīt masu (kilogramus).
P.S. Šo topiku vajadzēja likt Matemātikas sadaļā, jo ar Grafikas programmēšanu te nav itin nekāda sakara. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Aug 23, 2007 12:02 pm Post subject: |
|
nuu tik un taa, es straadaaju ar virzieniem, un tos ir viegli paarveerst normalizeetaa vektoraa...
ja virziena vektors buutu 0,0,-1, tad augshas vektoram buutu jaabuut atkariigam no virziena (direction) ,jo z virziens (zdirection) pie shaada virziena vektora ir 0! uzreiz nereekinot varu pateikt, ka z_up buus 0, bet x un y...
x = cos(D3DXToRadian(direction))
y = sin(D3DXToRadian(direction))
nu taa laikam buus... _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Aug 23, 2007 12:16 pm Post subject: |
|
Manuprāt tev nav ne jausmas, kas ir vektors un kas ir leņķis.
sin un cos var pielietot tikai leņķiem! Un direction ir vektors. Kā tu vari sin vai cos izvilkt no vektora?
Quote: | ja virziena vektors buutu 0,0,-1, tad augshas vektoram buutu jaabuut atkariigam no virziena (direction) |
Nepareizi. Tas nav tikai 0,0,-1 gadījumā. Augšas vektors ir vienmēr atkarīgs no virziena vektora. Nav svarīgi kādas ir virziena vērtības.
Vēl protams variants - tu un es ar jēdzienu "virziena vektors" saprotam divas dažādas lietas. Es ar to saprotu 3-komponenšu vektoru (x,y,z), kurš norāda virzienu uz priekšu pasaules (world) koordinātēs. Piemēram - (0,0,1)=objekts kustās vertikāli uz augšu (pasaules koordinātēs), (sqrt(1/2),sqrt(1/2),0)=objekts kustās virzienā, kas ir paralēls pasaules xOy plaknes bisektrisei.
Quote: | uzreiz nereekinot varu pateikt, ka z_up buus 0, bet x un y... |
Tieši tā!! Jebkuram virziena vektoram ir bezgalīgi daudz up vektori. Tavā gadījumā tie būs visi vektori formā (sin(a), cos(a), 0), kur a ir jebkurš skaitlis no 0 līdz 2*pi.
Tieši tāpēc ir vajadzīgs right (vai left) vektors, kurš piespiedīs up vektoram būt vienam vienīgam. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Aug 23, 2007 12:32 pm Post subject: |
|
labi, to vektoru (right) buus viegli dabuut..
redzi, kaapeec pielietoju direction un zdirection?
Code: |
//normaalvektoriem "length" vienmeer jaabuut 1
vec.x = length * cos(D3DXToRadian(direction)) * sin(D3DXToRadian(zdirection));
vec.y = length * sin(D3DXToRadian(direction)) * sin(D3DXToRadian(zdirection));
vec.z = length * cos(D3DXToRadian(zdirection));
|
un taaluuk no virziena un Zvirziena es dabuuju VeKtoru! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Aug 23, 2007 2:26 pm Post subject: |
|
Joprojām nesaprotu kas tev ir direction un zdirection.. Tu tos saukā par vektoriem, bet tai pat laikā no tiem velc sinusu un kosinusu.
Last edited by bubu on Thu Aug 23, 2007 3:41 pm; edited 1 time in total |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Thu Aug 23, 2007 3:08 pm Post subject: |
|
snake5, vecīt tu visu konkrēti putro. Pirmkārt, tev tas nebūs direction, bet angle (parasti, ja nezina nozīmes, tad apskatās vārdnīcā). No sākuma nomaini nosakumus uz pareiziem un tad paskatīsimies, kas tur sanāk. _________________ long time; /* know C */ |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Aug 23, 2007 5:15 pm Post subject: |
|
nu jaa to var arii saukt par lenkji, bet par cik tas ir speeleetaaja /kameras virziens un ir ierobezhots starp 0-360, tad saucu to par direction, kas tur tik traks? ne vienmeer virziens ir vektors...
Quote: | Joprojām nesaprotu kas tev ir direction un zdirection.. Tu tos saukā par vektoriem, bet tai pat laikā no tiem velc sinusu un kosinusu. | par vektoriem es vinjus nesaucu nekad...
Quote: | ...ka z-virziens (zdirection)... | te pieraadiijums... _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Aug 23, 2007 7:13 pm Post subject: |
|
Virziens vienmēr ir vektors, vismaz 3d-telpā. 2d-telpā virzienu vēl var aprakstīt ar leņķi.
Taču vektors ne vienmēr ir virziens.
Redzi - tāpēc, ka tu to savu leņķi nosauci par vektoru - tāpēc arī tāda nesaprašanās visa topika garumā. Vajag vai nu lietot terminus, kādus lieto visa pārējā pasaule, vai nu sākumā skaidri definēt, kas tev ir kas.
Quote: | par vektoriem es vinjus nesaucu nekad... |
Nu es to directionu tavu par vektoru sāku uzskatīt no šī teksta pirmajā postā:
Quote: | tad kautkaa jaadabuu augshas virziena vektors no shii normalizeetaa projekcijas virziena vektora, |
|
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Fri Aug 24, 2007 8:26 am Post subject: |
|
direction darbojas 2 dimensijaas (taapeec lenkjis), bet zdirection - vienaa(arii lenkjis), shos abus izlaizhot caur kodu, kursh paraadiits nedaudz augstaak un length vietaa liekot 1 - uzreiz var dabuut normalizeetu projekcijas vektoru!
bet, pienjemsim, ka man right vektors ir gandriiz taads pats kaa projekcijas, tikai direction+270(vai -90)nu taad piemeers:
direction: 0
zdirection: 0
vector: 1,0,0
rightvec: 0,1,0
upvec: 0,0,1
kaa tad no projekcijas vektora un "right" vektora varu dabuut "up" vektoru? kaads plzz var ieposteet pilnas darbiibas, jo man tas tik un taa buus jaapaarveido uz gamemaker'a kodu!
kaa to darbiibu sauca? cross product? _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Aug 24, 2007 8:45 am Post subject: |
|
Kas pie joda ir leņķis vienā dimensijā!!! Viena dimensija = līnija. Kā uz līnijas ir iespējams leņķis??
Nezinu kāpēc tu tagad sāki virziena vektoru saukāt par projekcijas vektoru.. bet ja nu tas ir parasts virziena vektors (tb norāda virzienu, kurā objekts skatās uz priekšu pasaules koordinātēs), tad vajag izmantot vektoriālo reizinājumu: Up = Forward x Right, ja izmanto labās rokas koordināšu sistēmu, vai arī Up = Right x Forward, ja izmanto kreisās rokas koordināšu sistēmu. x šajās formulās ir vektoriālais reizinājums. Ir iespējams izmantot arī Left vektoru, ja tikai tad, protams, jāliek - zīme priekšā abām formulām. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Fri Aug 24, 2007 9:19 am Post subject: |
|
kur var dabuut vektoriaalo reizinaajumu.. nu kautko vairaak par "x"
aa nee atradu
C.x=A.y*B.z-B.y*A.z;
C.y=A.z*B.x-B.z*A.x;
C.z=A.x*B.y-B.x*A.y;
http://www.indago.lv/Izstradataji/Raksti/Giga/Tutorial02/tutorial02.htm
That's all i need! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Aug 24, 2007 11:23 am Post subject: |
|
eh.. tu pat 5 min pagūglēt nevari, pirms nāc prasīt tipa jautājumus - "kur dabūt ABCD"? Tak atver google.com, ieraksti ABCD, un spied enter. Atbildi dabūsi pat ātrāk nekā 5 minūtēs. |
|
Back to top |
|
|
|
|
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
|