2014-03-12 6 views
0

다시 나야. 내가 너희들을 얼마나 사랑하는지 언급 했니? 내 교수님은 파이썬을 사용해 보라고 이야기했지만, 지금까지는 그것을 싫어하지만 한 번 해보기로했습니다. 파이 게임 (pygame)을 사용하는 간단한 프로그램을 만들었습니다. 화면을 중심으로 거의 원을 움직이지 않습니다. 나는 수학 문제가있는 문제가있다. 각 원 (x, y) 좌표 (원의 중심)를주고 화면에서 움직이기 원하는 속도 (이동 당 거리)를 기준으로 이동 (Dx, Dy)을 계산했습니다. 이것은 내가 이동 방법에 대해 수행 한 것입니다 :Python 수학, 피타고라,도 및 좌표

def Move(self, speed): 
    Dx = self.qx * (speed * math.sin(math.degrees(90 - Alp))) 
    Dy = self.qy * (speed * math.sin(math.degrees(Alp))) 
    self.x += Dx 
    self.y += Dy 
    print "D = ", math.sqrt(Dx * Dx + Dy * Dy) 

문제 : 나는이를 이용한 인쇄 문에 D (actaully 속도)를 계산 한 다음 DX를하고 Dy가이 Pythagorahs 정리를 사용 속도에 따라 계산하고 정리, 나는 입력 된 속도와 동일한 결과를 가져야한다. 하지만 결과는 다음과 같습니다.

D = 9.15180313227 (speed = 10) 

결과가 다양하고 항상 동일하지는 않습니다. (임의의 값을 가진 테스트 방법이 있지만) 항상 비슷하지만 잘못되었습니다. 내가 뭘 놓치고 있니?

참고 : self.qy 및 self.qx을 무시, 그들은이 제대로 방향을 결정하는 데 사용되는 1 또는 -1

+2

도노가 문제를 해결할 수 있다면 도와주세요. 그러나도에서 라디안으로 변환하려면'math.radians'을 사용해야합니다. 'math.sin'은 각도가 라디안 단위가 될 것으로 예상합니다. – M4rtini

+0

이것은 당신의 질문에 대답하지 않지만'math.hypot()'함수가 있음을 주목하십시오. – martineau

+0

@ M4rtini, 그게 문제였습니다,뿐만 아니라 대답에 대한 yoiu 감사 :) martineau, 나는 이것과 함께 가고 싶지 않아? –

답변

3

이 코드에 상대 가치이고, 당신이 math.degrees(90-Alp)를 호출 할 경우 정확하게 것 같습니다 잘못된 방법으로 math.degrees 이해 나에게 :

>>> math.degrees(2) 
114.59 (...) 

이 기능은 라디안도의 아니라 반대로 변환합니다. 대신 math.radians을 사용하면 어떻게됩니까?

+0

errr, perfect ... Yeap, 틀린 길을 ... Thx 사람 :) –