Passaggio di coordinate, passaggio di parametri ByReference
#include <iostream>
#include <cmath>
using namespace std;
const double PI = 3.14159;
void gimmeRadialCoords(double, double, double&, double&); //significa: gli
ultimi due argomenti sono // passati PER RIFERIMENTO
int main() {
double coordX, coordY;
double rho, theta;
<< " Passaggio da coordinate cartesiane a polari !!!\n"
<< "==>Inserire la coordinata X:\n-->";
cin >> coordX;
cout << "==>Inserire la coordinata Y:\n-->";
cin >> coordY;
gimmeRadialCoords(coordX, coordY, rho, theta);
cout << " -----------------------------------------------\n"
<< "==>Il valore di rho e': " << rho << ";"
<< endl << "==>Il valore di theta e': " << (int)((180*theta/PI)
+0.5) << " gradi."
}
void gimmeRadialCoords (double cX, double cY, double& r, double& t){
r = sqrt(cX*cX + cY*cY);
if (cX==0&&cY==0) {
cout << "\n ** Origine: theta indeterminato. **\n\n";
t = 0;
return;
}
if (cX == 0){
if (cY > 0) t = PI * 0.5;
else t = PI * 1.5;
}
else {
t = atan(cY/cX);
if (cX < 0) t = t + PI;
if (t < 0) t = t + 2 * PI; //solo per bellezza, si passa
all'intervallo 0-2pi !
}
}
Titolo dell'appunto
Il programma chiede all'utente il valore delle componenti X e Y di un vettore nel piano cartesiano, e dà indietro la rappresentazione polare in coordinate rho e theta.
Esso utilizza una funzione void che accetta 4 argomenti: x e y, e rho e theta.
Alcuni esempi per spiegare il programma, esempio:
passaAPolare(x, y, Rho, Theta);
- Se il vettore è il vettore nullo, la funzione renderà (0,0) e il programma mostrerà un messaggio di avvertimento.
- La formula per il passaggio di coordinate è: rho = (x^2+y^2)^(1/2) theta = arctan(y/x), a cui si aggiunge pigreco se x<0. theta = +/- pigreco/2 se x=0 (a seconda del segno di y)
- La libreria <cmath> contiene la funzione atan(double).