我想计算一些角度取决于使用一些奇数轴的一些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(...)' –