2013-12-18 6 views
2

내가 각도 A을 위해 노력하고 속도가 각도 AB 사이의 거리에 따라 감소 곳 원활 S의 속도로 각도 B을 향해 그 각도를 회전 오전십시오. 각도 A도 최단 경로를 통해 각도 B으로 바뀝니다.은 부드럽게 방향

나는이 모델로 주어졌다 스크립트 :이 사용하고 그것이 하나의 문제를 제외하고 잘 작동

Function: rotate_to_destination(A , B , S); 
    return (A + (sin((B - A) * (pi/180)) * S)); 

: 그것은 A 걸리는 시간이 B로 전환하기는 길게 AB 사이의 거리가 정확히 180 일 때.

나는 수학 문제가별로 없기 때문에 문제를 해결하거나 영리하게 내 문제를 해결할 수 없습니다. 또한 다른 해결책을 찾지 못했습니다.

답변

1

당신은 -180 < = (AB) < = 180, 당신은 기본적으로 (A + (sin((B - A) * (pi/360)) * S));

에 수식을 변경할 수 있다고 가정하면 A와 B 사이의 최대 및 최소 차이를 알아야합니다, 당신은 할 필요가 (B - A) * (pi/X)가 0, pi, -pi, 2 * pi, -2 * pi 등이 아닌 -pi/2 또는 pi/2가되도록하십시오.

+0

당신은 천재입니다. 나는 실제로 용어가 결코 0에 이르지 못하게하려고 생각했다. 그러나 나는 대신 그랬다 : 'return (A + 기호 (B - A) + (죄송합니다 ((B 조 - A) * (파이/180)) *)); ' – FatalSleep

+0

완료! 도와 주셔서 감사합니다. :) – FatalSleep

+0

답변이 거부되었습니다. 내가 가진 것처럼 좀 더 광범위한 테스트를 했나. 귀하의 제안에 따라 각도 A가 "가장 가까운"방향에서 각도 B로 돌아 가지 않습니다. – FatalSleep