2017-12-30 3 views
1

나는 내 '차량의 각도'에 대한 마우스 포인터의 각도 차이를 각도로 계산합니다. 나는 그 거리의 절반을 가져 간다. 나는 그것을 내 오프셋으로 저장하고, 내 차량을 그곳으로 옮긴다. 몇 가지 계산을 거쳐 마침내 원하는 각도로 움직인다. 그러나 마우스가 -185 일 때, 마우스를 185 도로 약간만 움직여 10도 밖에 떨어지지 않으면 차량은 -185에서 0으로 이동 한 후 다시 최대 185 도로 돌아옵니다. 저는 -180에서 180까지의 경계를 통과시킬 수있는 많은 방법을 시도했지만 운이 없었습니다.-180에서 180 교차하는 각도 사이의 거리 계산

을 Heres 코드 :

def get_angle(self, p1, p2): 
    return m.atan2(p2[1]-p1[1],p2[0]-p1[0]) 

def update(self): 
    mouse_pos = pygame.mouse.get_pos() 
    self.update_vehicle(self.pos, self.get_angle(self.pos, mouse_pos), r.black) 

def update_vehicle(self, pos, dir, color): 
    self.dir += (dir - self.dir)/50 
self.dir 내 차량이 실현 각도

dir 자체에 마우스에서 전달 된 각도입니다.

def update_vehicle(self, pos, dir, color): 
    a = ((dir - self.dir + m.pi) % (2 * m.pi)) - m.pi 
    self.dir += a/50 

무엇 일어나고있는 것은 우리가 목표 있도록 우리가 (값에 파이를 추가 할 것입니다 :

+3

설명 된 문제를 설명하는 스 니드 코드를 기꺼이 공유 하시겠습니까? – Ivan

+0

@ 이반 거기 있네. 그것은 기능적인 부분입니다, 나는 당신이 모든 것을 필요로한다고 생각하지 않을 것입니다. – BrrrIce

답변

1

당신이 차에 적용하기 전에 간격)을 [-pi, 파이로 출력 각도를 포장 할 수 있습니다 양수 0 ~ 2pi 간격), 우리는 쓸모없는 완전한 턴 (mod 2pi)을 제거하고 마지막으로 우리의 초기 -pi에서 pi 참조로 되돌아 간다. 결과적으로

는 -400º에 -120º 120 °, 240º로 -240º, -40로 변신 등등 ... 여기 예제의 작은 목록입니다

-400° -> -40° 
-320° -> 40° 
-240° -> 120° 
-160° -> -160° 
-80° -> -80° 
    0° ->  0° 
    80° -> 80° 
160° -> 160° 
240° -> -120° 
320° -> -40° 
400° -> 40° 

내가 m를 랬있어이 그런데 네이티브 math 모듈입니다.

+0

나는 그것을 시도했지만 행동에 어떤 변화도 보이지 않는다. 나는 네가하는 말을 이해하고 그것이 어떻게 작동 하는지를 본다. 그러나 왜 그렇게되지는 않을지 모르겠다. – BrrrIce

+0

전체 프로젝트를 요약합니다 : https://github.com/BrrrIce/Vehicle – BrrrIce

+0

@BrrrIce, 랩은 자동차에 적용하려는 최종 각도로 완료되어야합니다. 그에 따라 내 솔루션을 편집했고 코드로 작동했습니다. – grovina