Trigonomectric constants Polar and spherical to rectangular coordinates transform

Dependents:   DISCO-F746NG_Lidar ZAILLEL_Interface

Committer:
cromda
Date:
Sun Nov 25 11:13:56 2012 +0000
Revision:
0:2f533ad7c611
Child:
1:eb028056d162
Trigonometric constants; Polar and spherical to rectangular coordinates transforms.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cromda 0:2f533ad7c611 1 #include "mbed.h"
cromda 0:2f533ad7c611 2 #include "Trigo.h"
cromda 0:2f533ad7c611 3
cromda 0:2f533ad7c611 4 void RecPol(float x, float y, float *r, float *a)
cromda 0:2f533ad7c611 5 {*r=sqrt(x*x+y*y);
cromda 0:2f533ad7c611 6 if (x==0.0)
cromda 0:2f533ad7c611 7 {if (y==0.0)
cromda 0:2f533ad7c611 8 {*a=0.0;}
cromda 0:2f533ad7c611 9 else
cromda 0:2f533ad7c611 10 {if (y>=0.0)
cromda 0:2f533ad7c611 11 {*a=Pis2;}
cromda 0:2f533ad7c611 12 else
cromda 0:2f533ad7c611 13 {*a=-Pis2;}}}
cromda 0:2f533ad7c611 14 else
cromda 0:2f533ad7c611 15 {*a=atan(y/x);
cromda 0:2f533ad7c611 16 if(x<0)
cromda 0:2f533ad7c611 17 {*a=Pi+*a;}
cromda 0:2f533ad7c611 18 if (*a>Pi)
cromda 0:2f533ad7c611 19 {*a=*a-DeuxPi;}
cromda 0:2f533ad7c611 20 }
cromda 0:2f533ad7c611 21 }
cromda 0:2f533ad7c611 22
cromda 0:2f533ad7c611 23 void PolRec(float r, float a, float *x, float *y)
cromda 0:2f533ad7c611 24 {*x=r*cos(a);
cromda 0:2f533ad7c611 25 *y=r*sin(a);
cromda 0:2f533ad7c611 26 }
cromda 0:2f533ad7c611 27
cromda 0:2f533ad7c611 28 void RecSph(float x, float y, float z, float *r, float *a, float *b)
cromda 0:2f533ad7c611 29 {RecPol(x,y,b,a);
cromda 0:2f533ad7c611 30 RecPol(*b,z,r,b);
cromda 0:2f533ad7c611 31 }
cromda 0:2f533ad7c611 32
cromda 0:2f533ad7c611 33 void SphRec(float r, float a, float b, float *x, float *y, float *z)
cromda 0:2f533ad7c611 34 {PolRec(r,b,x,z);
cromda 0:2f533ad7c611 35 PolRec(*x,a,x,y);
cromda 0:2f533ad7c611 36 }