Toon posts:

Het nut van matrixen in 3d

Pagina: 1
Acties:
  • 186 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Waarom worden er in 3d applicaties altijd transformaties met matrixen gedaaan??
Ik snap hier niet echt het nut van

Verwijderd

Ik ook niet ;(

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Ik zou zeggen, prog er eens 1 zonder matrices, dan 1 met en je komt er vanzelf achter.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Ik wel: dat geeft beter inzicht in de transformaties. Helaas is het moeilijk om hogere dimensies af te beelden..

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zaterdag 20 oktober 2001 23:47 schreef joska het volgende:
Helaas is het moeilijk om hogere dimensies af te beelden..
Erm... 4D-scenes ofzo? :? (Kan me er niet echt iets bij voorstellen :)) Kun je dan niet gewoon een 5x5 matrix gebruiken ? :)

Verwijderd

Topicstarter
Nu nog een vraagje
Waarom heb je altijd een 4x4 matrix als je maar 3 vectoren nodig hebt om in je matrix op te slaan?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 20 oktober 2001 23:51 schreef Liquidus het volgende:
Nu nog een vraagje
Waarom heb je altijd een 4x4 matrix als je maar 3 vectoren nodig hebt om in je matrix op te slaan?
Als je het wil weten kan jeje beter verdiepen in matrix berekeningen (ietsje meer dan je nu blijkbaar doet)

Want het is niet echt triviaal, komt er oa op neer dat je een setje "lege velden" nodig hebt, anders is het een hel om die berekeningen te doen (als jij ze efficient in 3x3 krijgt kan je rijk worden :+ )

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 20 oktober 2001 23:50 schreef marcusk het volgende:
Erm... 4D-scenes ofzo? :? (Kan me er niet echt iets bij voorstellen :)) Kun je dan niet gewoon een 5x5 matrix gebruiken ? :)
Volgens mij kan dat inderdaad.

Verwijderd

Op zaterdag 20 oktober 2001 23:58 schreef ACM het volgende:

[..]

Volgens mij kan dat inderdaad.
Ja dat klopt, die kun je gebruiken, maar niet afbeelden!

  • marcelk
  • Registratie: December 2000
  • Niet online
Kijk het maar na in het boek "Computer Graphics" van Foley en van Dam e.a. Daar staat het heel erg netjes in uitgelegd.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 21 oktober 2001 00:30 schreef joska het volgende:
Ja dat klopt, die kun je gebruiken, maar niet afbeelden!
Ach met een beetje knoeien met kleur kom je nog aardig ver voor 4 dimensies en evt zelfs 5 :)

Het is wat lastiger interpreteren, maar kan nog ;)

  • Frostie
  • Registratie: September 2000
  • Laatst online: 22-07 16:02
Op zondag 21 oktober 2001 00:42 schreef ACM het volgende:

[..]

Ach met een beetje knoeien met kleur kom je nog aardig ver voor 4 dimensies en evt zelfs 5 :)

Het is wat lastiger interpreteren, maar kan nog ;)
Wow jij weet hoe een figuur er in 4e en 5e dimensie uitziet? Ik dacht dat mensen zich dat niet meer voor konden stellen :)

Frostie

Weaseling out of things is important to learn. It's what separates us from the animals... except the weasel. Homer Simpson


Verwijderd

Op zondag 21 oktober 2001 00:42 schreef ACM het volgende:

[..]

Ach met een beetje knoeien met kleur kom je nog aardig ver voor 4 dimensies en evt zelfs 5 :)

Het is wat lastiger interpreteren, maar kan nog ;)
Klopt, maar wiskundigen gebruiken vaak meer dan 5 dimensies, en dat wordt een beetje lastig afbeelden; daarom gebruiken ze formules.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 21 oktober 2001 01:07 schreef Frostie het volgende:
Wow jij weet hoe een figuur er in 4e en 5e dimensie uitziet? Ik dacht dat mensen zich dat niet meer voor konden stellen :)
Ik had het niet echt over een figuur.

Meer over een data representatie waar je 4 of 5 typen waarden per punt hebt.

Dan krijg je van die mooie gekleurde heuvellandschappen als grafieken :)

4D figuren is wat lastig representeren, alhoewel het ten alle tijden mogelijk is een "afbeelding op 1 niveau lager" te maken (3D is op 2D af te beelden, 2D op 1D) en dat zou ook voor 4D -> 3D moeten gelden.

Maar dat kan natuurlijk niet meer met een PC aangezien je dan al een 3D - 2D mapping hebt.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 21 oktober 2001 01:13 schreef joska het volgende:
Klopt, maar wiskundigen gebruiken vaak meer dan 5 dimensies, en dat wordt een beetje lastig afbeelden; daarom gebruiken ze formules.
Dat weet ik :)

Ik geloof niet dat ze verder dan 6dimensies zijn gekomen wat afbeelden betreft :)

Verwijderd

Op zondag 21 oktober 2001 01:20 schreef ACM het volgende:

[..]

Dat weet ik :)

Ik geloof niet dat ze verder dan 6dimensies zijn gekomen wat afbeelden betreft :)
Niet wat afbeelden betrefd, maar daar zijn wiskundigen ook weinig in geinterresseerd. Wel wat formules betreft, die vaak tientallen tot honderden dimensies beslaan!

  • Nikel
  • Registratie: Juli 2000
  • Niet online
Het meervoud van matrix is toch matrices? Of mag matrixen ook? (ik heb hier helaas geen woordenboek :()

Verwijderd

Op zondag 21 oktober 2001 01:27 schreef Nikel het volgende:
Het meervoud van matrix is toch matrices? Of mag matrixen ook? (ik heb hier helaas geen woordenboek :()
matrices, inderdaad

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
3D transforms kunnen ook met quaternions, maar die zijn nog een stuk ingewikkelder dan matrices. Problemen als 'gimbal lock' kun je met gebruik van quaternions uit de weg gaan. Ik snap er weinig van, maar die quaternions schijnen al uit te gaan van een soort 4D ruimte met imaginaire getallen gedoe enzo. Toch zijn ook die dingen, net als matrices, goed te gebruiken ook al snap je niet precies hoe ze werken. Gewoon een mooie engine of library opzoeken en invullen die krengen, beetje trial & error en alles roteert, schaalt en beweegt als een dolle :)

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 02:58

Jrz

––––––––––––

Een 3x3 matrix wordt gebruikt voor rotatie.
4x4 is een 3x3 matrix maar met transformatie erbij.
Quaternions worden veel gebruikt ja, maar moeten eerst omgezet worden naar matrices om het te voeren aan je 3d api

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 02:58

Jrz

––––––––––––

Want het is niet echt triviaal, komt er oa op neer dat je een setje "lege velden" nodig hebt, anders is het een hel om die berekeningen te doen (als jij ze efficient in 3x3 krijgt kan je rijk worden )


WAT EEN BULLSHIT
Als je niet weet waar je over spreekt, hou dan je mond dicht. Geen informatie is beter dan verkeerde informatie.

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 21 oktober 2001 15:11 schreef Jrz het volgende:
Een 3x3 matrix wordt gebruikt voor rotatie.
4x4 is een 3x3 matrix maar met transformatie erbij.
Quaternions worden veel gebruikt ja, maar moeten eerst omgezet worden naar matrices om het te voeren aan je 3d api
rotatie matrix in een 3D wereld is een 4x4 matrix...
translatie/schaling overigens ook.

In een 2D wereld zijn ze 3x3.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 21 oktober 2001 15:15 schreef Jrz het volgende:
WAT EEN BULLSHIT
Als je niet weet waar je over spreekt, hou dan je mond dicht. Geen informatie is beter dan verkeerde informatie.
Nou, kom maar met bewijzen.

Vergeet vooral niet te vermelden waarom we op de TU Delft leren dat het 4x4 matrices zijn. En neem ook in je overwegingen mee dat het bij mijn weten ook in opengl gebruikt wordt.

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 02:58

Jrz

––––––––––––

Nee.. dat is niet zo... :)
een translatie is een 1x3 matrix (1 vector)
een scalen is een 1x3 matrix (1 vector)
een rotatie is een 3x3 matrix (3 vectors)
4x4 heeft als voordeel dat je ze kan combineren

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 21 oktober 2001 15:20 schreef Jrz het volgende:
Nee.. dat is niet zo... :)
een translatie is een 1x3 matrix (1 vector)
een rotatie is een 3x3 matrix (3 vectors)
4x4 heeft als voordeel dat je die twee kan combineren
Voor de berekeningen is een 4x4 matrix het handigst.
Mede omdat je ze dan kan combineren, met nog allerlei andere richtingen.

Anders zou je bij een translatie steeds moeten optellen, dan daarna voor de rotatie vermenigvuldigen en vervolgens voor de schaling moeten delen of vermenigvuldigen.


In theorie heb jij gelijk, in de praktijk (3d-verwerking in oa opengl) ikke (dacht ik)

[edit]
Oftewel, dat het niet efficient in 3x3 kan in een 3D wereld geldt nog steeds ;)

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 02:58

Jrz

––––––––––––

Ja OpenGL, Direct3D, zit geen (amper) verschil in.

Doordat je het in een 4x4 matrix stop kan je meteen scale, rotate, translate in een simpele operation.

Ik zoek effe waar het allemaal staat op internet. (ook handig voor de mensen die het willen weten)

edit:
Weet je dat het best lastig is om 3x3 vs 4x4 matrix te vinden op google? Oh toch niet :) ik moet eens wat verder kijken dan de title van google..
http://skal.planet-d.net/demo/matrixfaq.htm

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 02:58

Jrz

––––––––––––

Dat 3x3 niet efficient is (voor dit soort toepassingen) dat klopt ja.

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


  • Grum
  • Registratie: Juni 2001
  • Niet online
daarnaast word het ook nog eens afgeraden direct met matrixen te werken omdat de huidige generatie code voor translate/rotate etc dusdanig is geoptimalizeerd dat het gebruik daarvan VEEL sneller is

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Dit is denk ik wel de thread waarin ik het meeste onzin heb gelezen tot dusver :)

Een matrix "is" niet iets, een matrix kan je gebruiken om verschillende dingen te representeren. Bijvoorbeeld een stelsel vergelijkingen, een aantal pixels op je scherm, een setje vectoren, of, een basis van een vector ruimte (onder voorwaarden) enz.

Verder zijn ook uitspraken als "3x3 is om te roteren" zinloos. Ook is het niet zo dat je quaternions of 4x4 matrices (niet matrixen idd) nodig hebt om zonder gimbal lock te roteren. Het is alleen makkelijker. Maar je kan perfect roteren mbv eigenvectoren. In 4 dimensies werken is een handig hulpmiddel, of...een andere opvatting van je ruimte.

En hmmmm ik denk dat we allemaal zo vaak 4 dimensionale objecten hebben gezien...bewegend poppetje in quake, ie animatie? :)

Metaballs of 'blobs' zijn overigens een projectie van een 4d ruimte, als je die ook nog animeert heb je al 5d.

hmmm waar heb ik het eigenlijk over, verveel me dood :)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:25

Janoz

Moderator Devschuur®

!litemod

De belangrijkste reden om bij 3d matrices te gebruiken heb ik hier nog niet gelezen. Naast dat je met een 4x4 matrix elke basis transformatie kunt doen is een andere belangrijke redenen dat de matrix vermenigvuldigingen assiociatief(?) zijn. Stel je hebt een vector V en matrices M en N, dan geldt:

(VxM)xN == Vx(MxN)

Dit betekent dat je eerst alle transformaties met elkaar kunt vermenigvuldigen, en vervolgens een vector met 1 matrix kunt vermenigvuldigen. Stel je hebt een object met 50 vertices. Dan hoef je slechts 1x de gehele transformatie uit te rekenen, en vervolgens hoef je alle 50 punten slechts 1x met een matrix te vermenigvuldigen. Als dat geen snelheidswinst is :).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:25

Janoz

Moderator Devschuur®

!litemod

Op zondag 21 oktober 2001 16:01 schreef Grum_ het volgende:
daarnaast word het ook nog eens afgeraden direct met matrixen te werken omdat de huidige generatie code voor translate/rotate etc dusdanig is geoptimalizeerd dat het gebruik daarvan VEEL sneller is
Waar denk je dat die mee geschreven is?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Zoek ook maar eens op homogene coordinaat systemen.
En naar mijn idee is een van de redenen om matrices te gebruiken het feit dat je (zoals een van de eerdere reacties ook al schreef) meerdere transformaties in 1x kan doen. Dit is dan ook gelijk de reden dat ze vaak 4x4 zijn. Met een 4x4 matrix kan men zowel rotatie als translatie in 1 matrix vermenigvuldiging uitvoeren.

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

www.3dica.org

matricen zijn gewoon om het berekenen van de nieuwe coordinaten na een rotatie, scale, zoom, oid op een bepaalde plaats te zetten. dit gaat gewoon het makkelijkste als je het met matricen doet. je kan meerdere matricen combineren (roteren over de x-as, roteren over de z-as) en dit dan sneller berekenen. echt super makkelijk als je het eenmaal door hebt.

check de url die ik hierboven heb gezet, erg handige site, if i say so myself

Verwijderd

Op maandag 22 oktober 2001 21:46 schreef Janoz het volgende:
De belangrijkste reden om bij 3d matrices te gebruiken heb ik hier nog niet gelezen. Naast dat je met een 4x4 matrix elke basis transformatie kunt doen is een andere belangrijke redenen dat de matrix vermenigvuldigingen assiociatief(?) zijn.
Gelukkig dat er ook nog mensen zijn die het wel begrijpen. Goed verhaal Janoz.

Verwijderd

Op zondag 21 oktober 2001 16:01 schreef Grum_ het volgende:
daarnaast word het ook nog eens afgeraden direct met matrixen te werken omdat de huidige generatie code voor translate/rotate etc dusdanig is geoptimalizeerd dat het gebruik daarvan VEEL sneller is
volgende keer dat je weer een klepel ziet liggen in je trollkamer, bedenk dan even wat je EIGENLIJK wil zeggen ipv wat random soundbites aan elkaar te plakken :D

Zelf transformations en rotations doen, alsmede projections en alles mbv orthogonal projections te renderen, is idd niet echt handig meer, omdat dmv de API calls je gebruik kunt maken van HW Transformations (in OpenGL) of iig de mogelijkheid hebt om dat te doen (DX7+)

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op dinsdag 23 oktober 2001 10:46 schreef Otis het volgende:

volgende keer dat je weer een klepel ziet liggen in je trollkamer, bedenk dan even wat je EIGENLIJK wil zeggen ipv wat random soundbites aan elkaar te plakken :D

Zelf transformations en rotations doen, alsmede projections en alles mbv orthogonal projections te renderen, is idd niet echt handig meer, omdat dmv de API calls je gebruik kunt maken van HW Transformations (in OpenGL) of iig de mogelijkheid hebt om dat te doen (DX7+)
mja daar doelde ik eigelijk meer op ;)

mag ik zeggen dat ik niet wakker was :? :P
Pagina: 1