Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
am!go
Založen: 19. 08. 2007 Příspěvky: 61 Bydliště: Praha
|
Zaslal: 15. březen 2008, 19:07:51 Předmět: ctverec v prostoru |
|
|
Cau, narazil jsem na problem, se kterym si nevim rady. Potrebuju v prostoru vypocitat body ABCD ctverce, kdyz znam jeho normalovy vektor, stred a delku strany. Tusim, ze to musim vzit nejak pres rovnici ax+by+cz+d=0, ale jeste sem se s tim ve skole ani nikde jinde nesetkal. |
|
Návrat nahoru |
|
|
ladik-BigBoss
Založen: 28. 07. 2007 Příspěvky: 162
|
Zaslal: 15. březen 2008, 19:19:49 Předmět: |
|
|
normalovy vektor n(a,b,c) ti udava koeficienty rovnice roviny na ktere lezi ten ctverec:
ax+by+cz+d=0
stred ctverce lezi taky na te rovine takze S[x,y,z] dosadis do rovnice.
z toho vypocitas:
d = -ax-by-cz
ted mas kompletne rovnici roviny na ktere lezi ctverec.
o ctverci dale vis ze ma delku strany s.
to ti ale moc nepomuze, jen vis ze polomer kruznice opsane je sqrt(2)*s/2
potom ti vychazi nekonecne mnoho ctvercu ktere tomu vyhovuji. potrebujes
alespon jeden dalsi bod |
|
Návrat nahoru |
|
|
am!go
Založen: 19. 08. 2007 Příspěvky: 61 Bydliště: Praha
|
Zaslal: 15. březen 2008, 19:46:08 Předmět: |
|
|
hmm diky za odpoved, se pokusim byt trochu konkretnejsi. Snazim se vytvorit decaly, presneji diry do zdi. Pres raytracing od kamery si zjistim bod, kde paprsek protina danej model a body trojuhelniku, kterej paprsek protina. Z tech 3 bodu jsem si spocital normalovy vektor. Pak si udam nejakou velikost, jakou ma danej decal mit a to je asi vsechno, s cim muzu operovat. |
|
Návrat nahoru |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 15. březen 2008, 20:03:51 Předmět: |
|
|
ladik chtěl těmi nekonečně mnoha body říct to, že z těch informací, které máš k dispozici nelze určit, jak ten čtverec bude otočený kolem normálového vektoru. To si budeš muset nějak vymyslet. _________________ Mám strach |
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 15. březen 2008, 20:07:08 Předmět: |
|
|
No jelikož má nejspíš informace o pozici a orientaci kamery, je tam jen jedna možnost, jak to udělat tak, aby byl ten čtverec otočen ke kameře vždy stejně. Prostě ať zkusí vytvořit úplně libovolný čtverec na zdi a potom ať ho třeba orotuje na základě té kamery. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
|
am!go
Založen: 19. 08. 2007 Příspěvky: 61 Bydliště: Praha
|
Zaslal: 15. březen 2008, 20:16:05 Předmět: |
|
|
Jeste me napadlo, ze hodnoty v ose y by mely byt u 2 spodnich a 2 hornich bodu stejny. Nebo vychazet z rovnobeznosti s nekterou z os. Uz z toho zacinam bejt bezrandej. |
|
Návrat nahoru |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 15. březen 2008, 20:32:25 Předmět: |
|
|
no ak mas normalovy vektor tak potom treba zistiti dva na seba kolme vektory ktore lezia v rovine znacky.
n-normalovy vektor
y- y vektor teda (0,1,0)
u=n*y
v=n*u
(* znaci vektorovy sucin)
tym dostaneme u a v ktore su na seba kolme a lezia v rovine znacky. potom je to uz jednoduche.
a,b,c,d - body
s - stred
a=s+u
b=s+v
c=s-u
d=s-v
predtym samozrejme treba zmensit vektory u a v na dlzku uhlopriecky. staci troska vektorovej matiky _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
|
am!go
Založen: 19. 08. 2007 Příspěvky: 61 Bydliště: Praha
|
Zaslal: 16. březen 2008, 21:22:18 Předmět: |
|
|
Diky, hlavne posledni prispevek mi dost pomoh. Na flipcode sem objevil jeden clanek o decalech http://flipcode.com/archives/Decals_Explained.shtml . Je tam popsany zhruba to, ze z pomoci normaloveho vektoru si vypocitame Right a Up vector. Right vektor se vypocita vektorovym soucinem vektoru majoritni osy a normalovyho vektoru.
Ten vektor majoritni osy se spocita tim, ze se najde, v ktery ose ma normalovej vektor nejvetsi hodnotu, takze treba (1,0,0). Jenomze se tam dal pise, ze kdyz je normalovej vektor a ten vektor majoritni osy stejnej, musi se vypocitat Right vektor spocitat "by hand". Netusim, co to znamena. |
|
Návrat nahoru |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 16. březen 2008, 21:32:05 Předmět: |
|
|
"by hand" anjskor ze vypocitat rucne. ono ide o to ze ak su dva vektory kolinearne teda ukazuju tym istym alebo opacnym smerom tak sa neda vyratat vektorovy sucin. vtedy treba zvolit iny up vektor. a to akykolvek moze byt aj [0,0,1] alebo [1,0,0] jediny rozdiel bude v tom ako bude natoceny vysledny decals. preto treba do pocitatnia deccals dat podmienku ze ak je UP vektor 0,1,0 tak pri normalovom vektore [0,x,0] sa pouzije iny UP vektor napr [1,0,0] vektor. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 16. březen 2008, 21:56:54 Předmět: |
|
|
Pokud se jedná o decals výbuchu/stopy po střele/krev, pak je obvykle jedno, jak je ta textura otočená, takže by sis mohl prostě vymyslet jeden vektor a zbytek by byl jednodušší. _________________ Mám strach |
|
Návrat nahoru |
|
|
am!go
Založen: 19. 08. 2007 Příspěvky: 61 Bydliště: Praha
|
Zaslal: 17. březen 2008, 18:40:40 Předmět: |
|
|
Uz se to tvari, ze vsechno fnguje. Diky vsem. |
|
Návrat nahoru |
|
|
|