Results 1 to 8 of 8

Thread: Vector roteren om X-as

  1. #1
    Game-Programmer nschagen's Avatar
    Join Date
    Jun 2003
    Location
    Alkmaar
    Posts
    685

    Vector roteren om X-as

    Hoi

    Ik heb een wiskundig vraagje.
    Ik wil een vector roteren om de X as. Dus je hebt een vector en die draai je b.v 50 graden om de X as.
    Maarja 50 graden... welke kant op?? Dat zal ik even precies uileggen.

    Stel je voor dat het positive gedeelte van de X as naar je toe wijst. Dan moet de vector 50 graden met de klok mee gedraait worden.

    Wat is de beste/snelste manier om dit te doen???

    ik hoop dat iedereen dit begrijpt
    When things don't go right, Turn left

  2. #2
    Code:
    xn := y*sin(hoek)-x*cos(hoek);
    yn := y*cos(hoek)+x*sin(hoek);
    NB: hoek in radialen.
    Verder draai ik hier om de z-as, maar het idee is hetzelfde.

  3. #3
    adev: je draait een vector in xy-vlak om de z-as. De vraag betreft, naar ik vermoed, een vector in R3. De transformatieformules voor rotatie (kloksgewijs!)van een 3D-vector (x, y, z) om de x-as luidt:

    x' = x
    y' = y * cos (hoek) + z * sin(hoek)
    z' = - y * sin(hoek) + z * cos(hoek)

  4. #4
    Game-Programmer nschagen's Avatar
    Join Date
    Jun 2003
    Location
    Alkmaar
    Posts
    685
    ah bedankt voor de code

    Ik probeer namelijk een routine te schrijven die vectoren over meerdere assen tegelijk kan roteren. Maar het werkte nog niet helemaal. Ik ben nu iets vreemds tegengekomen.

    Code:
    Showmessage('Cos van 90 graden: '+ FloattoStr(cos(degtorad(90))) );
    levert -2,71050543121376E-20 op.
    De cosinus van 90 graden is toch gewoon 0.0

    Kan iemand dit verklaren??
    When things don't go right, Turn left

  5. #5
    Dat is gewoon 0
    Code:
      Showmessage('Cos van 90 graden: '+ Format('%.10f', [cos(degtorad(90))]) );
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  6. #6
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621
    -2,71050543121376E-20 is bijna nul. Ziet er dus uit als een afrondfout.

    Hoe bedoel je over meerdere assen tegelijk roteren? Je wilt om een willekeurige as (x0, y0, z0) roteren bedoel je? Je zit dan met het probleem dat rotaties om verschillende assen niet commuteren (bijvoorbeeld eerst om de x-as en dan om de y-as draaien geeft een ander resultaat dan eerst om de y-as draaien en dan om de x-as), dus je moet de hele rotatie inderdaad in een keer doen (over alle assen tegelijk). Waarschijnlijk is het makkelijkst een rotatiematrix uit te rekenen en alle punten daarmee te vermenigvuldigen... zoiets als hier uitgelegd wordt eigenlijk.
    En anders kan Google je vast verder helpen.
    My software never contains bugs. Perhaps just undocumented features.

  7. #7
    Game-Programmer nschagen's Avatar
    Join Date
    Jun 2003
    Location
    Alkmaar
    Posts
    685
    Bedankt iedereen... Ik heb zojuist ondekt dat Direct3d een heleboel functies heeft voor het werken met Matrices.
    Ik denk dat ik deze gewoon ga gebruiken omdat ik niet het wiel niet opnieuw wil uitvinden. B.V het berekenen van de Inverse matrix is behoorlijk ingewikkeld heb ik begrepen.
    When things don't go right, Turn left

  8. #8
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621
    Mwah, dat moet toch wel meevallen?
    Cramer's rule voor 3x3 matrices lijkt me niet zo moeilijk te implementeren.
    My software never contains bugs. Perhaps just undocumented features.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •