DoubleBuffer

Programerska zajednica
It is currently Tue Jan 23, 2018 1:07 pm

Board index » Tehnička strana » Matematika & fizika

All times are UTC + 1 hour




Post new topic Reply to topic  [ 7 posts ] 
Author Message
PostPosted: Sat Oct 23, 2010 7:04 pm 
Offline
Sajentist on djuti!
User avatar

Joined: Tue Aug 26, 2008 9:35 pm
Posts: 2618
Imam sljedeći problem. Imam četiri točke koje čine konveksni četverokut, te točku unutar tog konveksnog četverokuta. Trebam tu točku mapirati na drugi konveksni četverokut kojem znam koordinate vrhova. Znači nešto ovako:
Image
Zanima me konkretno matematičko objašnjenje, treba mi za implementaciju u jednoj puzzle igri :)


Top
 Profile  
 
PostPosted: Sat Oct 23, 2010 7:51 pm 
Offline
User avatar

Joined: Fri Oct 15, 2010 2:59 pm
Posts: 41
Imaš to dobro objašnjeno u skripti od Marka Čupića:
Code:
http://www.megaupload.com/?d=7E4NQRSP


Top
 Profile  
 
PostPosted: Sat Oct 23, 2010 8:03 pm 
Offline
Sajentist on djuti!
User avatar

Joined: Tue Aug 26, 2008 9:35 pm
Posts: 2618
Baraba wrote:
Imaš to dobro objašnjeno u skripti od Marka Čupića:
Code:
http://www.megaupload.com/?d=7E4NQRSP

Zahvaljujem, budem proučio :)
Hvala :)


Top
 Profile  
 
PostPosted: Sun Oct 24, 2010 11:28 am 
Offline
Veliki brat malih trokuta
User avatar

Joined: Tue Sep 01, 2009 10:14 pm
Posts: 498
Location: Zagreb
Baraba wrote:
Imaš to dobro objašnjeno u skripti od Marka Čupića:
Code:
http://www.megaupload.com/?d=7E4NQRSP

:D :tup:


Uglavnom, shema ti je da nađeš matricu transormacije jednog četverokuta u drugi (onda ti je obratna transformacija inverzna matrica) i onda tom matricom množiš vektor točke. E sad kako matricu napravit. Prvo si za oba četverokuta moraš odrediti ishodište (di ti se na njima nalazi (0, 0)), smjer vektora x i smjer vektora y.

Označimo parametre četverokuta na slijedeći način:
Ishodište: (Ox, Oy, Oz)
Vektor x: (Xx, Xy, Xz)
Vektor y: (Yx, Yy, Yz)
Vektor z dobiva se kao vektorski produkt vektora x i y i neka njegova oznaka bude (Zx, Zy, Zz)

Iz tih parametara napravi se slijedeća matrica (DirectX):
Code:
  [Xx Xy Xz 0]
M=[Yx Yy Yz 0]
  [Zx Zy Zz 0]
  [Ox Oy Oz 1]


Označimo matricu za prvi četverokut A a za drugi B. Ono što nam takve matrice rade jest trasformaciju iz jediničnog četverokuta (ishodište u (0, 0), vektori x i y se poklapaju s osima x i y) u četverokut za koji je izgrađena. Ideja je da se koordinate iz prvog četverokuta vrate u jedinični i onda prebace u drugi. Vraćanje iz prvog u jedinični vrši se inverzom od A a prebacivanje iz jediničnog u drugi normalnom B matricom. Dakle ukupna transformacijska matrica je M=(A^-1)*B.

_________________
Nexus 64213 blog - IKON: moja verzija JSONa
Stareater blog - lijepe slike kak napreduje kod


Top
 Profile  
 
PostPosted: Tue Oct 26, 2010 3:53 pm 
Offline
Sajentist on djuti!
User avatar

Joined: Tue Aug 26, 2008 9:35 pm
Posts: 2618
EmP wrote:
Baraba wrote:
Imaš to dobro objašnjeno u skripti od Marka Čupića:
Code:
http://www.megaupload.com/?d=7E4NQRSP

:D :tup:


Uglavnom, shema ti je da nađeš matricu transormacije jednog četverokuta u drugi (onda ti je obratna transformacija inverzna matrica) i onda tom matricom množiš vektor točke. E sad kako matricu napravit. Prvo si za oba četverokuta moraš odrediti ishodište (di ti se na njima nalazi (0, 0)), smjer vektora x i smjer vektora y.

Označimo parametre četverokuta na slijedeći način:
Ishodište: (Ox, Oy, Oz)
Vektor x: (Xx, Xy, Xz)
Vektor y: (Yx, Yy, Yz)
Vektor z dobiva se kao vektorski produkt vektora x i y i neka njegova oznaka bude (Zx, Zy, Zz)

Iz tih parametara napravi se slijedeća matrica (DirectX):
Code:
  [Xx Xy Xz 0]
M=[Yx Yy Yz 0]
  [Zx Zy Zz 0]
  [Ox Oy Oz 1]


Označimo matricu za prvi četverokut A a za drugi B. Ono što nam takve matrice rade jest trasformaciju iz jediničnog četverokuta (ishodište u (0, 0), vektori x i y se poklapaju s osima x i y) u četverokut za koji je izgrađena. Ideja je da se koordinate iz prvog četverokuta vrate u jedinični i onda prebace u drugi. Vraćanje iz prvog u jedinični vrši se inverzom od A a prebacivanje iz jediničnog u drugi normalnom B matricom. Dakle ukupna transformacijska matrica je M=(A^-1)*B.

Sorry nisam imao vremena baš proučit i prije odgovoriti.
Ugl, pitanje, zašto DirectX matrica? Ja ne želim ništa pokazivati, imam jednostavno 4 točke jednog četverokuta (vrhovi), točku u tom četverokutu, 4 točke drugog četverokuta, i treba mi točka u tom drugom četverokutu. Sve točke imaju X i Y vrijednost. U biti, da nacrtam što želim:
Image
Znači znam A, B, C, D, E, F, G, H, T (sve su to 2D točke), zanima me T'(X, Y).


Top
 Profile  
 
PostPosted: Tue Oct 26, 2010 11:38 pm 
Offline
Veliki brat malih trokuta
User avatar

Joined: Tue Sep 01, 2009 10:14 pm
Posts: 498
Location: Zagreb
Pa možeš koristit matrice bez renderiranja jer sve što one rade jest transformacija točaka, a upravo to je tvoj problem. Ono sam pokazao za DX matricu tak, čisto ko mogućnost, možeš koristit matrice iz koje god biblioteke, matematika je ista.

U ovom zadnjem primjeru, četverokut nije paralelogram, to komplicira stvari, ali nije nemoguće. Sam reci, da li su četverokuti u 2D il u 3D?

_________________
Nexus 64213 blog - IKON: moja verzija JSONa
Stareater blog - lijepe slike kak napreduje kod


Top
 Profile  
 
PostPosted: Wed Oct 27, 2010 12:47 pm 
Offline
Sajentist on djuti!
User avatar

Joined: Tue Aug 26, 2008 9:35 pm
Posts: 2618
2D


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 7 posts ] 

Board index » Tehnička strana » Matematika & fizika

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 1 guest


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 post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group