|
| rotation af vektor omkring anden vektor Fra : Desilva |
Dato : 18-06-02 14:20 |
|
Det her er ret basalt, og jeg har da bestemt gjort det før... og nu glemt
det.. men jeg kan ikke finde løsningen i formelsamlingerne eller på nettet,
så lad mig spørgre her.
Hvordan er det nu lige man roterer en vektor omkring en anden vilkårlig
vektor?
Ex roter (1,1,0) 90 grader omkring (1,0,0) og få (1,0,1).
Her roteres omkring x-aksen, men hvad nu hvis vektoren var (1,4,8)?
| |
Filip Larsen (18-06-2002)
| Kommentar Fra : Filip Larsen |
Dato : 18-06-02 16:41 |
|
Desilva skrev
> Hvordan er det nu lige man roterer en vektor omkring en anden vilkårlig
> vektor?
Hvis du skal rotere vektor V vinklen t omkring vektor U = [u0,u1,u2]^T, så
kan det gøres vektorielt som
W = V + sin(t)(U x V) + (1-cos(t))(U x (U x V)).
Hvis du hellere vil have en rotation-matrice, så skulle den kunne skrives
som
R = I + sin(t) S + (1-cos(t)) S^2,
hvor I er identitetsmatricen og matrix S er "U x" givet ved
| 0 -u2 u1 |
S = | u2 0 -u0 |.
|-u1 u0 0 |
Med R fås rotationen af V som
W = RV
Med venlig hilsen,
--
Filip Larsen <filip.larsen@mail.dk>
| |
Desilva (18-06-2002)
| Kommentar Fra : Desilva |
Dato : 18-06-02 18:22 |
|
> Hvis du skal rotere vektor V vinklen t omkring vektor U = [u0,u1,u2]^T, så
> kan det gøres vektorielt som
>
> W = V + sin(t)(U x V) + (1-cos(t))(U x (U x V)).
I mit eksempel fra før med [1,1,0] roteret 90 grader omkring [1,0,0] får jeg
UxV=[0,0,1], så
W=[1,1,0] + 1*[0,0,1]+(1-0*( [1,0,0]x[0,0,1]))
W=[1,1,1] +(1-0)
W=[2,2,2];
Lige bortset fra y komponenten så kunne det godt være resultatet, men det
skulle jo være [a,a,0]
Er det mig der overser et eller andet her?
>
> Hvis du hellere vil have en rotation-matrice, så skulle den kunne skrives
> som
>
> R = I + sin(t) S + (1-cos(t)) S^2,
>
> hvor I er identitetsmatricen og matrix S er "U x" givet ved
>
> | 0 -u2 u1 |
> S = | u2 0 -u0 |.
> |-u1 u0 0 |
>
> Med R fås rotationen af V som
>
> W = RV
>
>
>
> Med venlig hilsen,
> --
> Filip Larsen <filip.larsen@mail.dk>
>
>
| |
Filip Larsen (19-06-2002)
| Kommentar Fra : Filip Larsen |
Dato : 19-06-02 07:43 |
|
Jeg skrev
> > Hvis du skal rotere vektor V vinklen t omkring vektor U = [u0,u1,u2]^T,
så
> > kan det gøres vektorielt som
> >
> > W = V + sin(t)(U x V) + (1-cos(t))(U x (U x V)).
Og Desilva svarede
> I mit eksempel fra før med [1,1,0] roteret 90 grader omkring [1,0,0] får
jeg
> UxV=[0,0,1], så
> W=[1,1,0] + 1*[0,0,1]+(1-0*( [1,0,0]x[0,0,1]))
> W=[1,1,1] +(1-0)
> W=[2,2,2];
Jeg ved ikke lige hvad du laver i næstsidste linie, men jeg får, at Ux(UxV)
er (0,-1,0) og dermed W = (1,0,1) hvilket passer med en geometrisk
betragtning.
> Lige bortset fra y komponenten så kunne det godt være resultatet, men det
> skulle jo være [a,a,0]
Jeg kan ikke se hvordan du er nået frem til dette result, men umiddelbart
ser det forkert ud.
Bemærk: jeg glemte at skrive, at U selvfølgelig skal være en enhedvektor.
Det er den også i dit eksempel, men generelt skal man huske at normere U
hvis denne kan være en vilkårlig vektor.
Mvh,
--
Filip Larsen <filip.larsen@mail.dk>
| |
Desilva (19-06-2002)
| Kommentar Fra : Desilva |
Dato : 19-06-02 18:05 |
|
> > UxV=[0,0,1], så
> > W=[1,1,0] + 1*[0,0,1]+(1-0*( [1,0,0]x[0,0,1]))
> > W=[1,1,1] +(1-0)
> > W=[2,2,2];
>
> Jeg ved ikke lige hvad du laver i næstsidste linie, men jeg får, at
Ux(UxV)
> er (0,-1,0) og dermed W = (1,0,1) hvilket passer med en geometrisk
> betragtning.
Jeg laver [1,1,0] + 1*[0,0,1] til [1,1,1] og 1-0*( [1,0,0]x[0,0,1]) til 1-0
Og du har naturligvis ret i at resultatet ikke er [a,a,0] men [a,0,a]. Jeg
sad og rodede frygtelig rundt i det. Beklager :-/
| |
Filip Larsen (19-06-2002)
| Kommentar Fra : Filip Larsen |
Dato : 19-06-02 19:53 |
|
Desilva skrev
> Jeg laver [1,1,0] + 1*[0,0,1] til [1,1,1] og 1-0*( [1,0,0]x[0,0,1]) til
1-0
Den sidste del skal være (1-0)*[1,0,0]x[0,0,1] som er lig [0,-1,0]. Bemærk
parentesen omkring "1-0".
Mvh,
--
Filip Larsen <filip.larsen@mail.dk>
| |
|
|