Traducerea sistemului 3D

Am un singur sistem de coordonate x-y

1

1 răspunsuri

enter image description here

Această diagramă ar trebui să reprezinte ceea ce mi-ai spus. Punctul cheie este de a exprima [x2], [y2] în CS1. (Nu pot folosi latex aici, să presupunem că [A] înseamnă vectorul A, | A | este lungimea vectorului A)

[v2] = v2x * [x2] + v2y * [y2]

Deoarece avem bine definite [v1] și [d2], putem calcula [x ']

[x`] = [d2] - [v1]

Din [x '] putem calcula x2

[x2] = (| x2 |/| x '|) [x`] = (| x1 |/| x' |) [x] = | x2 |

Din x2 putem calcula y2, deși nu-mi amintesc cum. Este o rotație simplă de 90 °. Ar trebui să fie aceasta:

y2x = - x2y y2y = x2x

Odată ce am exprimat x2, y2 în CS1, putem calcula v2

v2x * [x2] + v2y * [y2] * v2x * (x2x * [x1] + x2y * [y1]) + v2y * (y2x * [x1] + y2y * [y1]) = v2x x2x + v2y y2x) [x1] + (v2x x2y + v2y y2y)

Și, în sfârșit

[X] = [v1] + [v2]

Cred ca cea mai buna optiune este sa creezi o clasa vector si sa faci toate matematica folosind algebra vectoriala. Trebuie doar să definiți 3 operații: Adăugare, ScalarMultiplicare, 90Rotare.

1
adăugat
doi vectori și 2 baze (coordonate x-y). Dacă bazele dvs. sunt coplanare (nu este nevoie de o a treia dimensiune), acest calcul este simplificat. Din nou, întrebarea este: cum definești CS1 și CS2? ce informații aveți despre ele?
adăugat autor Samy Arous, sursa
Am actualizat răspunsul meu conform acestei descrieri. Încă mai cred că ți-e lipsă niște date, dar poate că mă gândesc prea mult.
adăugat autor Samy Arous, sursa
Dacă ați putea desena un grafic, cred că ar fi mai bine decât textul. Teoretic, având în vedere vectorii aceștia și dacă înțeleg ce spui, poți determina direcția xaxului și poziția originii. Acest lucru este suficient pentru a vă oferi unghiul de rotație al CS2 față de CS1, dar totuși nu vă dă lungimea absolută a x2 și y2. Amintiți-vă, există 3 transformări posibile: Traducere, Rotire, Scală. Mai trebuie să știm mai târziu. Doar dacă nu știi că e egal cu 1.
adăugat autor Samy Arous, sursa
Am actualizat din nou răspunsul meu :) Trebuie să verificați calculul meu, dar cred că este o abordare corectă. Vă recomandăm să încercați un test de probă și să comparați rezultatele. Am încercat să evit calculul trigonometric prin utilizarea algebrei vectoriale, dar puteți găsi și unghiurile folosind geometria de bază și regulile trigonometrice.
adăugat autor Samy Arous, sursa