Showing posts with label coordiante system. Show all posts
Showing posts with label coordiante system. Show all posts

Monday, 4 April 2016

Coordinate system conversion by classes

#include<iostream>
#include<math.h>
using namespace std;
class rect;
class polar
{
float r, theta;
public:
polar()
{
}
polar(float a,float b)
{
r=a;
theta=b;
}
void input()
{
cout<<"Enter the polar coordinates :\n";
cout<<"r :";
cin>>r;
cout<<"Theta :";
cin>>theta;
}
void output()
{
cout<<"Polar coordinates are :\n"<<"r :"<<r<<" theta :"<<theta<<" (apxx.)";
}
float getr()
{
return r;
}
float gettheta()
{
return theta;
}
};

class rect
{
float x,y;
public:
rect()
{
}
rect(polar a)
{
  float temp=a.gettheta()/57.3;       //To convert degree to radians
  x=a.getr()*cos(temp);
  y=a.getr()*sin(temp);
}
operator polar()
{
float r,t;
r=sqrt(pow(x,2)+pow(y,2));
t=atan(y/x);
t*=57.3;    //To convert radians into degree as we know 1 radian=57.3 degree
if(x<0&&y<0)  //For 3rd quadrant
t+=180;
if(x<0&&y>0)  //For 2nd quadrant
{
t*=-1;
t+=90;
}
if(y<0&&x>0)  //For 4th quqdrant
{
t*=-1;
t+=270;
}
return polar(r,t);
}
void input()
{
cout<<"Enter the rectangular coordintes :\n";
cout<<"x :";
cin>>x;
cout<<"y :";
cin>>y;
}

void output()
{
cout<<"Rectangular coordinates are :\n"<<"x :"<<x<<" y :"<<y<<" (apxx.)";
}
};
int main()
{
polar a;
rect b;
int c;
cout<<"Enter \n1 Polar to rectangular coordinates\n2 Rectangular to polar coordinates :";
cin>>c;
if(c==1)
{
a.input();
b=a;
b.output();
}
else if(c==2)
{
b.input();
a=b;
a.output();
}
return 0;
}