[C++] Obrót punktu o kąt alfa

harleyzg
Użytkownik
Użytkownik
Posty: 47
Rejestracja: 1 lis 2014, o 22:38
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 8 razy

[C++] Obrót punktu o kąt alfa

Post autor: harleyzg »

Witam, mam problem z tym porgramem.
Napisz program pozwalający na obrót punktu o kąt \(\displaystyle{ \alpha}\). Wczytaj współrzędne punktu przed obrotem \(\displaystyle{ x= \left( x_1, x_2 \right)}\) oraz kąt obrotu \(\displaystyle{ \alpha}\). Wypisz macierz przekształcenia \(\displaystyle{ A}\) oraz współrzędne punktu po obrocie \(\displaystyle{ y= \left( y_1, y_2 \right)}\), gdzie \(\displaystyle{ y=Ax}\) jest postaci:

\(\displaystyle{ \left[\begin{array}{ccc}y_1\\y_2\end{array}\right] = \left[\begin{array}{ccc}\cos \alpha& -\sin \alpha \\ \sin \alpha & \cos \alpha \end{array}\right] \left[\begin{array}{ccc}x_1\\x_2\end{array}\right]}\)



Napisalem taki program:

Kod: Zaznacz cały

#include<iostream>
#include<cmath>

using namespace std;

double cos( double radiany);
double sin( double radiany);
int punktx[1][2];
int punkty[1][2];
double macierzA[2][2];
double radiany,s,g;
int i,j, stopnie;



int main()
{
	cout << "Wypisz 1 wspolrzedna punktu x: " << endl;
	cin >> punktx[0][0];
	cout << "Wypisz 2 wspolrzedna punktu x: " << endl;
	cin >> punktx[1][0];
	cout << "Podaj kat obrotu punktu x: " << endl;
	cin >> stopnie;
 double radiany = (stopnie * 3.14) / 180;
 macierzA[0][0]= cos(radiany);
 macierzA[0][1]= - sin(radiany);
 macierzA[1][0]=sin(radiany);
 macierzA[1][1]=cos(radiany);
 for(i=0;i<2;i++)
 {
	for
		(j=0;j<2;j++)
	{
		cout <<'\t'<< macierzA[i][j];
	}
	cout << endl;
 }
 s=0;
 for(i=0;i<2;i++)
 {
	   

		 for(j=0;j<2;j++)
		 {
			 g=(macierzA[i][j]*punktx[j][0]);
			 s=s+g;
			 g=0;
		 }
		 
		 punkty[i][0]=s;
		 s=0;
	
		 
 }
  cout << punkty[0][0] << endl;
   cout << punkty[1][0] << endl;

	system("pause");
	return 0;
}
Ogólnie program działa, ale wartości punkty y mi się nie zgadzają. Poza tym dla 90 stopni, cosinus powinien wyjść 0, natomiast tutaj wyskakuje mi wartość bliska 0. Mógłby mi ktoś pomóc? Z góry dziękuje za pomoc :)
Ostatnio zmieniony 14 gru 2014, o 15:52 przez Afish, łącznie zmieniany 1 raz.
Powód: Niepoprawnie napisany kod LaTeX-a. Proszę zapoznaj się z http://matematyka.pl/178502.htm .
Awatar użytkownika
vpprof
Użytkownik
Użytkownik
Posty: 492
Rejestracja: 11 paź 2012, o 11:20
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 26 razy
Pomógł: 64 razy

[C++] Obrót punktu o kąt alfa

Post autor: vpprof »

Stosując przybliżenie \(\displaystyle{ \pi \approx 3,14}\) nie masz się co dziwić. Są funkcje biblioteczne przeliczające stopnie na radiany. Poza tym \(\displaystyle{ \pi}\) też jest zdefiniowana w math.h.

To tak na szybko, nie wiem, czemu nie zgadza ci się wspł. \(\displaystyle{ y}\), może gdzieś zamieniłeś indeksy? No i przydałoby się wytłumaczyć co to jest \(\displaystyle{ s}\) i \(\displaystyle{ g}\).
ODPOWIEDZ