Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C] Matrice Rotazione 3D

    Ho una matrice di rotazione/traslazione/scala ma non riesco a leggerla molto bene

    -------------------
    5.760201e-01 0.00000e+00 0.000000+e00
    0.00000e+00 4.970786+e-01 4.392802e-02
    0.00000e+00 -5.522380e-02 6.375868e-01

    1.481938+e00 -6.774796e-01 2.861332e-01
    -------------------

    la diagonale delle prime tre righe dovrebbe essere di quanto scala in x y z, mentre la quarta riga di quanto trasla in x y z.

    "-5.522380e-02" e "4.392802e-02" dovrebbero darmi la rotazione su x, ma non riesco a calcolarla.
    So che la rotazione dovrebbe essere all'incirca di 5° ma come faccio a calcolarla con precisione dai dati della matrice?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305

    Re: [C] Matrice Rotazione 3D

    Originariamente inviato da shmk
    Ho una matrice di rotazione/traslazione/scala ma non riesco a leggerla molto bene

    -------------------
    5.760201e-01 0.00000e+00 0.000000+e00
    0.00000e+00 4.970786+e-01 4.392802e-02
    0.00000e+00 -5.522380e-02 6.375868e-01

    1.481938+e00 -6.774796e-01 2.861332e-01
    -------------------

    la diagonale delle prime tre righe dovrebbe essere di quanto scala in x y z, mentre la quarta riga di quanto trasla in x y z.

    "-5.522380e-02" e "4.392802e-02" dovrebbero darmi la rotazione su x, ma non riesco a calcolarla.
    So che la rotazione dovrebbe essere all'incirca di 5° ma come faccio a calcolarla con precisione dai dati della matrice?

    prima scale poi trasli poi ruoti.

    cmq:
    "...la diagonale delle prime tre righe dovrebbe essere..."
    che significa dovrebbe essere... devi sapere cosa è.
    Oppure spiega meglio in quanto argomento complesso.
    Oki.lib Libreria per creare il proprio Engine del sound nei propri progetti
    http://www.twork.it/public/oki/guestbook.asp

    Sistemi di Gestione Studio e Sviluppo per giochi a pronostici
    http://www.twork.it/programmi/programmi.html

  3. #3

    Re: Re: [C] Matrice Rotazione 3D

    Originariamente inviato da scancode
    prima scale poi trasli poi ruoti.

    cmq:
    "...la diagonale delle prime tre righe dovrebbe essere..."
    che significa dovrebbe essere... devi sapere cosa è.
    Oppure spiega meglio in quanto argomento complesso.
    Beh se lo sapssi con certezza cosa rappresenta tutta non lo chiederei :P

    Cmq è sicuramente una matrice 4 x 3 che deve rappresentare traslazione/scala/rotazione

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305

    Re: Re: Re: [C] Matrice Rotazione 3D

    Originariamente inviato da shmk
    Beh se lo sapssi con certezza cosa rappresenta tutta non lo chiederei :P

    Cmq è sicuramente una matrice 4 x 3 che deve rappresentare traslazione/scala/rotazione
    se stai lavorando su codice tuo devi sapere cosa hai fatto mentre se stai studiandi su codice non tuo ma vuoi capire cosa succede e tutta un'altraq cosa.

    Mostra la matrice 3x4... hai implementato anche una matrice di vista della telecamera? quindi ruoti un oggetto "l'oggetto" è una mesh o punti linea insomma che geometria hai usato per rappresentare l'oggetto che "scali, trasli e ruoti"?

    di quanti vertici è composto l'oggetto che ruoti?

    cmq per scalare traslare e ruotare devi moltiplicare le matrici di trasformazione
    a*b*c
    e passarle alla matrice indentità del mondo per renderizzarle a video
    Oki.lib Libreria per creare il proprio Engine del sound nei propri progetti
    http://www.twork.it/public/oki/guestbook.asp

    Sistemi di Gestione Studio e Sviluppo per giochi a pronostici
    http://www.twork.it/programmi/programmi.html

  5. #5

    Re: Re: Re: Re: [C] Matrice Rotazione 3D

    Originariamente inviato da scancode
    se stai lavorando su codice tuo devi sapere cosa hai fatto mentre se stai studiandi su codice non tuo ma vuoi capire cosa succede e tutta un'altraq cosa.
    Infatti il codice non è mio

    Cmq l'oggetto da muovere è una mesh poligonale di un programma per la realizzazione di grafica 3d.

    L'unica cosa che so è che l'oggetto, data la matrice di trasformazione nel primo post, si ruota di 5° sulla X.
    E vorrei capire se c'è una formula per ricavare il numero "5°" da quella matrice.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305

    Re: Re: Re: Re: Re: [C] Matrice Rotazione 3D

    Originariamente inviato da shmk
    Infatti il codice non è mio

    Cmq l'oggetto da muovere è una mesh poligonale di un programma per la realizzazione di grafica 3d.

    L'unica cosa che so è che l'oggetto, data la matrice di trasformazione nel primo post, si ruota di 5° sulla X.
    E vorrei capire se c'è una formula per ricavare il numero "5°" da quella matrice.
    No non funziona così.

    ti posto alcuni link su cui studiare e poi "capire" come funziona il codice che stai vedendo:

    matrici:
    http://www.clickitaliansoftware.net/...rici/index.htm

    vettori:
    http://www.clickitaliansoftware.net/...tori/index.htm

    dici che si ruota sull'asse x di 5° ma non è così che funziona.
    Ti faccio un esempio:

    Una rotazione su uno dei 3 assi, (non hai specificato cosa è usato nel code, "manuale" ,Opengl o directx), per esempio in directx

    D3DXMatrixRotationX(&mat, angle);
    angle è un float < o > angle l'oggetto ruota a sn o dx ma non di tot gradi in quanto è una rotazione "non arbitraria".

    Per usare uno spostamento in gradi devi per esempio fare un dotproduct è il risultato lo devi convertire in gradi in quanto il risultato è sempre in radianti.

    Ti ripeto non è una cosa semplice è un'argomento vastissimo.

    posta un pò di code per rendere conto di cosa "si usa" per effettuare gli spostamenti per poterti aiutare... così non è semplice da capire per chi legge.

    La traslazione è lo spostamento dell'oggetto della sua posizione nello spazio 3d.
    la rotazione è appunto la rotazione nel punto di posizione senza spostamento.
    La scalatura è il ridimensionamento di una mesh di default è:
    D3DMatrixScaling(&mat, 1.0f, 1.0f, 1.0f);// dimensione reale dell'esportazione della mesh.x con il tool con cui è stata creata.
    D3DMatrixScaling(&mat, 2.0f, 2.0f, 2.0f) in questo modo la mesh è circa il doppio nel render.

    per aiutarti dovresti postare un pò di code per capire che tecnica si usa.

    Poi leggo "C" nel titolo... forse non è nè OGL nè directx!
    Oki.lib Libreria per creare il proprio Engine del sound nei propri progetti
    http://www.twork.it/public/oki/guestbook.asp

    Sistemi di Gestione Studio e Sviluppo per giochi a pronostici
    http://www.twork.it/programmi/programmi.html

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305
    "-5.522380e-02"
    mi pare la y
    mentre
    "4.392802e-02"
    dovrebbe essere la z

    ovvero x y z
    se è vero che:
    5.760201e-01 0.00000e+00 0.000000+e00 //x y z
    0.00000e+00 4.970786+e-01 4.392802e-02 //x y z
    0.00000e+00 -5.522380e-02 6.375868e-01 //x y z

    poi un'altra cosa: da questi valori float sembra che sia un sistema di local space e non in world space per questi 2 termini cerca con google.
    Poi queste terne di float presumibilmente vettori x y z sono in notazione IEEE cosa che in world space non può essere. In un sistema di spazio 3d "definito" non puoi avere questi numeri.

    Aggiungo: l'angolo l'ho puoi ottenere in un sistema di riferimento spazio 3d definito.
    per ottenere, con la trigonometria puoi calcolare l'angolo giro di 360° da applicare al sistema spazio 3d definito. Se no puoi solo calcolare delle rotazioni "non arbitrare" in cui l'oggetto ruota ma senza un sistema di "riferimento" tipo:
    premi il tasto freccia -> ruota+=0.1f; e <- ruota-=0.1f;
    L'oggetto ruota a destra e a sinistra ma se non si è costruito il sistema di riferimento in world space come fai a dire che un giro corrisponde a 360°?

    Credo che sia una mesh in local space in cui muovendo i tasti la fa ruotare. Una demo

    posta un pò di code che dovrebbe essere anche breve.
    Oki.lib Libreria per creare il proprio Engine del sound nei propri progetti
    http://www.twork.it/public/oki/guestbook.asp

    Sistemi di Gestione Studio e Sviluppo per giochi a pronostici
    http://www.twork.it/programmi/programmi.html

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.