0
問題は、距離を見つけるのではなく、Atan()でラジアンを見つけて度に変換することです。長方形の点を極座標に変換する
using System;
class Program
{
static void Main()
{
double xCoord =0, yCoord=0 ;
//accessing methods
getUserInput(ref xCoord, ref yCoord);
CalulatePolarCoords(ref xCoord, ref yCoord);
outputCords(ref xCoord, ref yCoord);
Console.ReadLine();
}//End Main()
static void getUserInput(ref double xc, ref double yc)
{
//validating input
do
{
Console.WriteLine(" please enter the x cororidnate must not equal 0 ");
xc = double.Parse(Console.ReadLine());
Console.WriteLine("please inter the y coordinate");
yc = double.Parse(Console.ReadLine());
if(xc <= 0)
Console.WriteLine(" invalid input");
}
while (xc <= 0);
Console.WriteLine(" thank you");
}
//calculating coords
static void CalulatePolarCoords(ref double x , ref double y)
{
double r;
double q;
r = x;
q = y;
r = Math.Sqrt((x*x) + (y*y));
q = Math.Atan(x/y);
x = r;
y = q;
}
static void outputCords(ref double x, ref double y)
{
Console.WriteLine(" The polar cordinates are...");
Console.WriteLine("distance from the Origin {0}",x);
Console.WriteLine(" Angle (in degrees) {0}",y);
Console.WriteLine(" press enter to continute");
}
}//End class Program
私は180/Math.PIの代わりに180/2 * Math.PIを使用していましたか? – Jordan
Atan2の結果を-180 ... 180から0 ... 360に変換するには、 360度シフトすると、180 ... 540の範囲が得られます。q =(Math.Atan2(y、x)* 180.0/Math.PI + 180.0)だけシフトする必要があります。 (可能な変換オーバーヘッドを除去するために180.0対180を使用)。 –
@RichardRobertsonいいえ、そうではありません。 180を追加すると適切な範囲の値が得られますが、値は間違った値になります。あなたは私が言うことを正確に行う必要があり、負の値に360を加える必要があります。負の値だけをシフトします。それ以外の場合は、値を変更しているため、360をシフトする必要があります。円の周りの角度は、等価モジュロ360で比較されることに注意してください。 –