각도와 관련된 몇 가지 문제가 발생했습니다. 저는 각도 A와 다른 각도 B를 가지고 있습니다. A를 가장 짧은 길이로 움직여서 B에 도달하게하고 싶습니다. 제 첫 번째 혼란은 각도가 0에서 180, 그리고 0에서 -180까지입니다. 그것의 찬성이 무엇인지 확실하지 않습니다. 이 B에 도달 할 때까지, 내가 하나를 추가하거나에서 1 개 정도를 뺄하거나 할 각 업데이트에 대한각도에 더하거나 빼서 가장 짧은 각도에 도달
float a = -35;
float b = 90;
, 그리고 그것이 가장 짧은 길을 간다 있는지 확인하려면 : 어쨌든, 나는 인스턴스에 대한 줄 것이다.
다음은 작동하는 것 같은 제 코드입니다. 그러나 매우 효율적으로 보이지는 않습니다.
b += 360;
if (b > a) {
if (b - a < 180) {
a += 1;
} else {
a -= 1;
}
} else {
if (a - b < 180) {
a -= 1;
} else {
a += 1;
}
}
더 나은/더 쉬운 방법이 있습니까?
왜이 루프가 있어야하는지 루프가 포함되어 있지 않으므로 함께 연주 할 수있는 완전한 예제가 있습니다. –
모듈로 산술을 사용하십시오. 루프를 시작하기 전에 모든 반복에서가 아니라 한 번 방향을 계산하십시오. –
@OliCharlesworth OP는 수레를 사용하기 때문에 모듈로 산술은 명백한 옵션이 아닙니다. –