[C++]Przesunięcie punktu na płaszczyźnie o dany kąt
Ostatnio zmodyfikowano 2014-01-15 18:07
waldorm Temat założony przez niniejszego użytkownika |
[C++]Przesunięcie punktu na płaszczyźnie o dany kąt » 2014-01-14 15:34:31 Mam napisać program w którym użytkownik wpisuje punkt A(x, y), punkt B(a, b) i stopnie o ile ma być przesunięty punkt A względem punktu B. Napisałem tak: #include <iostream> #include <math.h>
using namespace std;
int main() { int x, y, a, b; float x2, y2; double r1 = 0; double r2 = 0; int p = 0; cin >> x >> y; cin >> a >> b; cin >> p; r1 = sin(( p * M_PI ) / 180 ); r2 = cos(( p * M_PI ) / 180 ); x2 =( a +( x - a ) ) *( r2 -( y - b ) * r1 ); y2 =( b +( x - a ) ) *( r1 +( y - b ) * r1 ); cout.precision( 2 ); cout << x2 << endl; cout << y2; return 0; } i jest taki problem, że w ogóle cosinus jest nie prawidłowy bo np wpisuje cos90, to mi zamiast 0 to wyskakuje jakaś dziwna liczba :o O co chodzi? y2 jest prawidłowy raczej. @edit zamiast stałej M_PI wziołem poporstu 3.14 i jest lepiej lecz teraz x2 zły wychodzi :o Pomimo ze mam set precision(3) to mi więcej wyskakuje... wtf... #include <iostream> #include <math.h>
using namespace std;
int main() { int x, y, a, b; float x2, y2; double r1 = 0; double r2 = 0; int p = 0; cin >> x >> y; cin >> a >> b; cin >> p; r1 = sin(( p * 3.14 ) / 180 ); r2 = cos(( p * 3.14 ) / 180 ); x2 =( a +( x - a ) ) *(( r2 -( y - b ) ) * r1 ); y2 =( b +( x - a ) ) *(( r1 +( y - b ) ) * r1 ); cout.precision( 3 ); cout.setf( ios::showpoint ); cout << x2 << endl; cout << y2; return 0; }[ code ] |
|
domin568 |
» 2014-01-15 09:35:04 Zamiast int zero = 0 napisz double zero = 0 Bo mnozysz double przez int tracac precyzje |
|
waldorm Temat założony przez niniejszego użytkownika |
» 2014-01-15 18:07:39 Niestety ale nic to nie pomogło :/ Dopiero to zadziałało: #include <iostream> #include <math.h> #include <cstdio>
using namespace std;
int main() { double x, y, a, b; double kat; cin >> x >> y; cin >> a >> b; cin >> kat; kat = kat * 3.14 / 180; double x2, y2; double sin( double kat ); double cos( double kat ); x2 =( a +(( x - a ) * cos( kat ) ) -(( y - b ) * sin( kat ) ) ); y2 =( b +(( x - a ) * sin( kat ) ) +(( y - b ) * cos( kat ) ) ); printf( "%.2lf\n", x2 ); printf( "%.2lf\n", y2 ); return 0; } Tylko nie rozumiem dlaczego mam używać do wyświetlenia printfa kiedy moge cout? Przypominam, że na cout wyskakiwał zły wynik. |
|
« 1 » |