满意答案
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#include
#include
#include
#define pi 3.141592653
#define k 0.017453292519943295769236907684886
struct Axis//直角坐标系
{
float x;
float y;
};
struct Radius//极坐标
{
float R;
float theta;//°
};
Radius AxistoRadius(Axis a)//直角坐标-极坐标
{
Radius temp;
temp.R=sqrt(a.x*a.x+a.y*a.y);
if(temp.R == 0) temp.theta=0;
else
temp.theta=((a.y<0)?(2*pi-asin(a.x/temp.R)):(asin(a.x/temp.R)))/k;
return temp;
}
Axis RadiustoAxis(Radius a)//极坐标-直角坐标
{
Axis temp;
temp.x=a.R*cos(a.theta*k);
temp.y=a.R*sin(a.theta*k);
return temp;
}
#pragma argsused
int main(void)
{
Axis a;//直角坐标建立
Radius b;//极坐标建立
printf("please input (x,y) in axis(seperated by space):\n ");
scanf("%f%f",&a.x,&a.y);//输入直角坐标
b=AxistoRadius(a);//转换
printf("In Radius, (R,theta(°))=(%f,%f)\n",b.R,b.theta);//输出
printf("please input (R,theta) in Radius(seperated by space):\n");
scanf("%f%f",&b.R,&b.theta);//输入极坐标
a=RadiustoAxis(b);//转换
printf("In Axis, (x,y)=(%f,%f)\n",a.x,a.y);//输出
system("pause");
return 0;
}
//---------------------------------------------------------------------------
00分享举报