Vlákno názorů k článku Grafická knihovna OpenGL (5): transformační matice a lineární transformace od xrubicmaster - V danem n-rozmernem prostoru NENI posun linearni transformace,...

  • Článek je starý, nové názory již nelze přidávat.
  • 30. 7. 2003 21:31

    xrubicmaster (neregistrovaný)

    V danem n-rozmernem prostoru NENI posun linearni transformace, tedy neexistuje matice nxn, ktera posune bod [x,y,z] o [dx, dy, dz].

  • 31. 7. 2003 17:01

    Pavel Tisnovsky (neregistrovaný)

    Pokud uvažujete 3D prostor, kde má bod souřadnice [x, y, z], tak aplikací matice 3x3 posun samozřejmě nevytvoříte. Právě proto (a kvůli perspektivě) se v počítačové grafice používají homogenní souřadnice, kde má každý bod souřadnice [x, y, z, 1] a matice jsou velikosti 4x4.

    Posun stačí do této matice vhodně zadat prvky tak, aby se posun provedl (submatice 3x3, kterými se násobí souřadnice x, y, z je jednotková, v posledním sloupci matice je vektor [0, 0, 0, 1] a zbylé tři prvky představují vektor [dx, dy, dz]).

  • 6. 8. 2003 20:36

    xrubicmaster (neregistrovaný)

    A prave proto posun NENI linearni transformace, jenze tato veta: "Mezi lineární transformace patří posun, otáčení, změna měřítka a zkosení." z Vaseho clanku tvrdi opak.

    Homogenni souradnice toto resi pridanim dalsiho koordinatu, coz je vlastne rozsireni na ctyrrozmerny prostor, tam se provede nejaka transformace (avsak zase to neni posun) a vhodnou reprezentaci ctyrrozmernych koordinatu v trojrozmernem prostoru se novy vektor jevi posunuty.

    Avsak toto funguje spravne pouze v pripade, kdy (jak jste rekl) je ctvrty koordinat roven 1. Pokud by nebyl (napr. zadanim jine hodnoty pouzitim funkci gl*4*), vektor uz nebude posunuty spravne.

  • 12. 8. 2003 18:30

    Pavel Tišnovský (neregistrovaný)

    Tady možná záleží na úhlu pohledu. V každém případě se na lineární transformaci můžeme dívat jako na funkci/zobrazení "f" definovanou nad dvěma vektorovými prostory f:V->W, kde platí f(x+y)=f(x)+f(y) a f(ax)=af(x) [a je skalár].

    Pokud jsou V a W konečné (v našem případě ano), pak lze lineární transformaci V->W zapsat pomocí matice A, která se používá ve významu f(x)=Ax (platí tuším pouze pro Euklidovské prostory).

    Takže jde pouze o to říct, nad jakými prostory budeme transformace definovat: nad [x,y,z] nebo pro specifické vektory [x,y,z,1], x,y,z jsou z R.