몇 가지 홀수 축을 사용하는 일부 3D 좌표에 따라 일부 각도를 계산하려고합니다 (때로는 아래로 + ve, 때로는 오른쪽으로 -ve 등) 다음 스위치가 있습니다 케이스 구조스위치 케이스 또는 다른 문 사용
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;
}
그러나 스위치 표현은 내가했다 두 번 생각하는의 nullable 형식을 사용할 필요가 없다는 switch (robY)
에 오류가 표시 될 수 있습니다.
switch (robZ)
에는 오류가 없습니다. 여기에 누락 된 내용이 있습니까? 아니면 If else 문을 모두 변경해야합니까?
많은 감사
경우에 따라 조건식을 사용할 수 없으므로 상수는 –
이므로 두 번 nullable로 설정할 수 있습니다. "double? robY" – EaziLuizi
도 및 라디안을 혼합하는 것처럼 보입니다 ... 의도적입니까? 즉, '180 + Math.Atan2 (...)' –