Autor Wątek: Problem z obrotem punktu  (Przeczytany 604 razy)

Offline Regis

  • Użytkownik

# Kwiecień 14, 2009, 23:12:15
Mam problem z obrotem punktu o kąt a wokół osi Y.
Mam sobie wzorek
x'=cos(a)  * x - sin(a) * z
z'=sin(a)   * x + cos(a) * z

Używając go napisałem:
float x=0.0f, angle=0.0f, z=0.0f;
float key=1;

while(key!=0)
{
cout<<"podaj x ";
cin>>key;
x=key;

cout<<"podaj z ";
cin>>key;
z=key;

cout<<"podaj kat ";
cin>>angle;
angle=(PI*angle)/180;

cout<<angle<<endl;
x=x*cos(angle)-z*sin(angle);
z=x*sin(angle)+z*cos(angle);
cout<<" x="<<x<<" z="<<z<<endl;
}

Tylko że wychodzą jakieś bzdury patrz screen

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Kwiecień 14, 2009, 23:15:23
Cytuj
x'=cos(a)  * x - sin(a) * z
z'=sin(a)   * x + cos(a) * z

Używając go napisałem:

x=x*cos(angle)-z*sin(angle);
z=x*sin(angle)+z*cos(angle);
To nie są te same wzory. W pierwszym masz x' i z', których w drugim nie ma.

Offline Xion

  • Redaktor
    • xion.log

# Kwiecień 14, 2009, 23:36:37
Innymi słowy, x wyliczone z pierwszego wzoru nie powinno być używane do wyliczenia z przy pomocy drugiego wzoru. A tak masz teraz.

Offline Regis

  • Użytkownik

# Kwiecień 14, 2009, 23:47:30
Faktycznie już załapałem, dzięki!