我想計算一些角度取決於使用一些奇數軸的一些3d座標(有時下來是+ ve,有時右是-ve等),並拿出了以下開關殼體結構使用開關的情況下或如果else語句
private double RobOrientX(double robY, double robZ)
{
double AngleX;
switch (robY)
{
case robY>0:
switch (robZ)
{
case robZ>0:
AngleX = Math.Atan2(robZ,robY);
break;
case robZ<0:
AngleX = 360 + Math.Atan2(robZ, robY);
break;
case robZ=0:
AngleX = 0;
break;
}
break;
case robY<0:
switch (robZ)
{
case robZ>0:
AngleX = 180 + Math.Atan2(robZ, robY);
break;
case robZ<0:
AngleX = 180 + Math.Atan2(robZ, robY);
break;
case robZ=0:
AngleX = 180;
break;
}
break;
case robY=0:
switch (robZ)
{
case robZ>0:
AngleX = 90;
break;
case robZ<0:
AngleX = 270;
break;
case robZ=0:
AngleX = 0;
break;
}
break;
}
return AngleX;
}
但是存在對switch (robY)
一個錯誤,說明一個開關表達需要使用一個空類型,其中我相信雙了。
在switch (robZ)
上沒有錯誤。有沒有我在這裏失蹤的東西,還是應該將它全部更改爲一系列If else語句?
非常感謝
你不能有條件表達式的情況下,你可以只有常數 –
你可以使雙精度空如下所示:「double?robY」 – EaziLuizi
你似乎是混合度和弧度......是故意的嗎?即'180 + Math.Atan2(...)' –