Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1 2
Otacis tu krychli postupne? Ze ji nejdriv otocis, a pak otocis znova?
Nevim ted presne, jak to myslis, asi bys musel ukazat obrazek nebo kod.
Offline
Otacim ji podle vzorecku, ktery jsi napsal.
V kodu nic nenajdes, proste vemu souřadnice každého bodu v 3D, přepočítám je na 2D a potom ty 2D souřadnice pospojuju přímkama, aby mi utvořili krychli.
Tady je video otáčející se krychle, jak pracuje teď:
http://www.uloz.to/6543934/krychle-2-be … -48-18-mp4
Offline
Asi vim, co myslis, ale to nebude jednoduche. Kdyz si zkusis vzit do ruky treba knizku, a otocis ji nejdriv v jeji souradnici X o 90 stupnu a pak v Y o 90 stupnu, tak ve vysledku bude otocena jinak, nez kdybys otocil nejdriv v Y o 90, a pak v X o 90 (I kdyz u krychle by to vypadalo stejne). Takze kdyz reknes otocit o 90 X a o 90 Y, tak ktere otoceni by se melo provest?
Potrebujes tu krychli otacet dynamicky, nebo by ti stacilo nekolik prednastavenych pohledu?
Kdyztak zkusim pozdeji jeste napsat nejake matice nebo vzorce.
Offline
Potřebuju právě dynamicky. Ten program má být pro výuku stereometrie (řezy krychlí/kvádrem), takže potřebuju, aby si uživatel mohl krychli otáčet do různých pohledů... Sakra, teď jsem si uvědomil, že to právě jde i přes statické osy (osy otáčení budou osy souřadnic) a možná to bude pro uživatele i pohodlnější...
OK, tak to nevadí, tím pádem na osy krychle můžeme asi zapomenout. Ale jestli bys mohl ještě nějak vylepšit ten vzorec, aby byl reálnější, protože když krychli otočím o třeba 60° po ose x a 30° po ose y, tak je jinak otočená, než když ji otočím o 60° po x a o 390° po y (což je ale to samé).
Není samozřejmě problém napsat if(alfa>360){alfa-=360}, ale jde mi spíš o to, že potom krychle poskočí a uživatel může být zmatený a hlavně to otočení potom není pravdivé.
Každopádně díky za všechen čas, co jsi mi věnoval.
Offline
Muzes zkusit treba tyhle vzorce:
(bez toho U, ux a uy)
(A - uhel alfa, B - uhel beta)
x2 = X*cosB + Y*sinA*sinB + Z*cosA*sinB
y2 = Y*cosA - Z*sinA
a nebo
x2 = X*cosB + Z*sinB
y2 = X*sinA*sinB + Y*cosA - Z*cosB*sinA
melo by to byt vlastne otaceni podle polarnich souradnic, 390 v tomhle pripade bude stejne jako 30, ale bude se to otacet jinym zpusobem nez predtim.
To otaceni by slo udelat i jakkoliv volne, na to by ale nestacily jen dve osy otaceni, ale musela by se zadavat/menit cela transformacni matice.
Offline
To taky nefunguje, nezachovává se krychle. Když otáčím jen jednou osou, otáčím se čtvercem a až přidám otáčení po druhé ose, tak se objeví kvádr, potom nachvíli krychle a zase kvádr, který se navíc různě kroutí apod.
Zkoušel jsem i přehodit úhel alfa a beta, ale taky nesedělo.
Offline
Tak tam asi mam chybu, podivam se na to.
Offline
Byly tam chyby, sry, opravil jsem je, asi jsem to spatne opsal nebo ja nevim.
(jo jeste me napada - jestli sis to nerozmyslel, a nechces to udelat v OpenGL nebo DirectX? :-))
Offline
No kdybych věděl jak to tam nastavit, tak jo. Na druhou stranu mě učitel přemlouvá, ať si to právě sepíšu sám. Něco na tom je, ale bere to strašně moc času...
Jinak vzorec už funguje v pořádku (zkoušel jsem jen ten druhý - zatím).
Akorád pravidelný šestiúhelník vznikne při otočení alfa = 35 a beta = 45 (a ne 45,45 jak by správně mělo být).
Offline
Ok, ptal jsem se, protoze nevim, co vsechno ten program ma umet, je to na tobe no (jestli sam, OpenGL nebo DirectX).
Co se tyce toho otoceni, tak nevim, jestli to pujde udelat tak, aby ten sestiuhelnik byl pri 45, 45.
Kdyz otacis, je to vzdycky kolem nejake osy. Kdyz ches otacet jakoby ve smeru X, je to ve skutecnosti otaceni kolem osy Y, a ta krychle se otaci zaroven ve smeru Z. To same ve smeru Y - je to kolem osy X. Jestli chces otacet ve smeru X a Y zaroven, tak stejne nemuzes mit vic nez jednu osu otaceni. Leda ze bys otocil nejdriv podle X, a pak podle Y, coz je tenhle pripad - proto tech 45, 45 takhle nefunguje - protoze se to otaci o 45 uz z krychle jednou o 45 otocene (v jinem smeru).
No ja to nedovedu asi moc dobre vysvetlit. Dival jsi se, jak maji delane otaceni ruzne graficke programy a tak podobne? Jak uz jsem psal predtim - jestli chces uplnou volnost, budes potrebovat menit celou transformacni matici, a ne jenom otaceni ve smeru X a Y. Zkusim pozdeji jeste vymyslet nejakou transformaci, ale ta nejspis nebude vyhovovat v jinych vecech.
Offline
No a ty víš jak to upravit v tom directx? Jak nastavit perspektivitu? Já dělám s DirectX poprvé. A mohl bys mi tedy ještě popsat jak jsi sestrojil tu matici pro otáčení krychle? Nějaké zdroje, vzorečky ze kterých jsi vycházel apod. Díky
Offline
V directx uz jsem nedelal docela dlouho, takze to presne nevim, ted je nejak vic verzi, takze zalezi na tom, kterou pouzivas. Podle me by to nastaveni melo jit najit jednouse hledanim 'perspective' nekde v referencnim manualu, ale myslel jsem, ze perpektivu nechces - ze chces ortonormalni projekci - aby se ty hrany nesbihaly. Nasel jsem tohle a tohle napriklad, ale mozna to neni ono. V OpenGL jestli se nepletu tak ortonormalni projekce je defaultni, a ani bys perpektivu nastavovat nemusel.
Pri sestavovani tech matic jsem se akorat dival sem, pro tu minulou transformaci ten obecny vzorec (Rotation matrix given an axis and an angle - uz=0), a ty dve posledni jsou vynasobene ty 'Basic rotation' podle osy X a Y. Nevim ale, jestli to necemu pomuze, je k tomu podle me dobre znat i spousty tech dalsich veci a teorie okolo. Napada me mozna podivat se na nejaky directx nebo opengl tutorial.
Offline
Stránky: 1 2