Messaggioda dissonance » 03/11/2008, 23:51

Per "traslare" cosa intendi, forse vuoi dire "ruotare"? E poi, scusa, se sai già che l'asse delle Y deve essere normale al piano, allora conosci anche la direzione del piano... e vale la pena di fare tutto questo casino?

Allora, vediamo: in input hai un insieme di punti, quindi materialmente (in Matlab) un array Nx3. Da qua vuoi l'equazione di un piano che approssimi questi punti ai minimi quadrati. Supponiamo di aver trovato l'equazione di questo piano, diciamo che sia \( \displaystyle {p}:{a}{X}+{b}{Y}+{c}{Z}+{d}={0} \). Adesso vuoi applicare un cambio di coordinate in maniera tale da ritrovarti con un' equazione del tipo \( \displaystyle {p}:{Y}'+{d}'={0} \) (piano normale all'asse delle Y'). Che tipo di cambio di coordinate? Un movimento rigido? E infine, materialmente in output cosa ti serve?
Avatar utente
dissonance
Moderatore
Moderatore
 
Messaggi: 9110
Iscritto il: 24/05/2008, 19:39
Località: Bari

Messaggioda Marcolini » 04/11/2008, 10:39

Si esatto intendevo dire ruotare. La tua soluzione é esatta ma incompleta perché a me interessa anche un sistema per poter calcolare le nuove coordinate che rispetto a quelle vecchie dovranno avere una coordinata Y simile. Il movimento é di tipo rigido.

P.S.: Come fate a scrivere le formule sul sito?

GRAZIE DISSONANCE! Il problema comincia a chiarirsi.
Marcolini
Starting Member
Starting Member
 
Messaggi: 21
Iscritto il: 10/09/2008, 19:37

Messaggioda dissonance » 04/11/2008, 17:14

Per le formule guarda qui:
http://www.matematicamente.it/forum/com ... 26179.html

Invece per il problema, adesso la cosa inizia a chiarirsi, si. Adesso si tratta di una faccenda di algebra lineare. L'equazione del nostro piano \( \displaystyle {p}:{a}{X}+{b}{Y}+{c}{Z}+{d}={0} \) la scriviamo così \( \displaystyle {p}:{\left({a},{b},{c}\right)}{\left(\matrix{{X}-{x}_{{0}}\\{Y}-{y}_{{0}}\\{Z}-{z}_{{0}}}\right)}={0} \) dove \( \displaystyle {\left({x}_{{0}},{y}_{{0}},{z}_{{0}}\right)} \) è un qualsiasi punto del piano. Vogliamo introdurre un cambiamento di coordinate \( \displaystyle {\left\lbrace{\left(\matrix{{X}\\{Y}\\{Z}}\right)}={M}{\left(\matrix{{X}'\\{Y}'\\{Z}'}\right)}+{\left(\matrix{{v}_{{x}}\\{v}_{{y}}\\{v}_{{z}}}\right)}\right.} \), con \( \displaystyle {M} \) matrice ortogonale 3x3, tale che l'equazione di \( \displaystyle {p} \) nelle nuove coordinate \( \displaystyle {\left({X}',{Y}',{Z}'\right)} \) sia la \( \displaystyle {Y}'+{d}'={0} \) di cui sopra.

Ora mi vengono in mente due strade.
[edit] quella scritta in piccolo la lascerei perdere, è un diluvio di conti inutili. [/edit]
La prima è quella "forza bruta", che però potrebbe andare bene lavorando al calcolatore.
Il cambiamento di coordinate trasforma l'equazione di \( \displaystyle {p} \) così:
\( \displaystyle {p}:{\left({a},{b},{c}\right)}{\left({M}{\left(\matrix{{X}'\\{Y}'\\{Z}'}\right)}+{\left(\matrix{{v}_{{x}}\\{v}_{{y}}\\{v}_{{z}}}\right)}-{\left(\matrix{{x}_{{0}}\\{y}_{{0}}\\{z}_{{0}}}\right)}\right)}={0} \).
ma noi vogliamo che sia fatta così:
\( \displaystyle {p}:{Y}'+{d}'={0} \)
perciò imponiamo l'uguaglianza tra le due espressioni
\( \displaystyle {\left({a},{b},{c}\right)}{\left({M}{\left(\matrix{{X}'\\{Y}'\\{Z}'}\right)}+{\left(\matrix{{v}_{{x}}\\{v}_{{y}}\\{v}_{{z}}}\right)}-{\left(\matrix{{x}_{{0}}\\{y}_{{0}}\\{z}_{{0}}}\right)}\right)}={\left({0},{1},{0}\right)}{\left(\matrix{{X}'\\{Y}'+{d}'\\{Z}'}\right)} \)
e risolviamo \( \displaystyle {M} \) e \( \displaystyle {\vec{{v}}} \), imponendo anche che \( \displaystyle {M} \) sia ortogonale.


Altrimenti si può fare così: risolviamo l'equazione di \( \displaystyle {p} \) per ottenere due suoi vettori di direzione, diciamo \( \displaystyle {\vec{{l}}},{\vec{{m}}} \), ortogonali tra loro e anche di modulo unitario. Completiamo in una base ortonormale di \( \displaystyle {\mathbb{R}}^{{3}} \), diciamo \( \displaystyle {\vec{{l}}},{\vec{{m}}},{\vec{{n}}} \), adesso imponiamo che nel nuovo sistema di riferimento questi tre vettori corrispondano a \( \displaystyle {\left({1},{0},{0}\right)},{\left({0},{0},{1}\right)},{\left({0},{1},{0}\right)} \). In questa maniera la direzione dell'asse delle \( \displaystyle {Y}' \), \( \displaystyle {\left({0},{1},{0}\right)} \), corrisponderà al vettore \( \displaystyle {\vec{{n}}} \) che è ortogonale alla direzione di \( \displaystyle {p} \). In concreto anche i conti sono facili: vogliamo che \( \displaystyle {\vec{{l}}}={M}{{\left({1},{0},{0}\right)}}^{{T}},{\vec{{m}}}={M}{{\left({0},{0},{1}\right)}}^{{T}},{\vec{{n}}}={M}{{\left({0},{1},{0}\right)}}^{{T}} \), ovvero che \( \displaystyle {M}={\left[{\vec{{l}}},{\vec{{n}}},{\vec{{m}}}\right]} \).
Ultima modifica di dissonance il 16/11/2008, 13:22, modificato 1 volta in totale.
Avatar utente
dissonance
Moderatore
Moderatore
 
Messaggi: 9110
Iscritto il: 24/05/2008, 19:39
Località: Bari

Messaggioda Marcolini » 15/11/2008, 21:34

Non ho capito la seconda parte (Altrimenti si può fare così: risolviamo l'equazione di...); potresti riscrivermi le equazioni finali semplificate? Tieni conto che per me d può assumere qualsiasi valore e la rotazione dei piani x e z intorno a y può essere assunta a caso....

Grazie
Marcolini
Starting Member
Starting Member
 
Messaggi: 21
Iscritto il: 10/09/2008, 19:37

Messaggioda Marcolini » 15/11/2008, 23:29

io mio obbiettivo é capire bene il problema e po implementarlo in mathematica o matlab...
Marcolini
Starting Member
Starting Member
 
Messaggi: 21
Iscritto il: 10/09/2008, 19:37

Precedente

Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti