2016-07-31 3 views
2

내 수학이나 파이썬이 아닌 경우에는 잘 모르겠습니다 ...하지만 아래 코드는 예기치 않은 결과를 나타냅니다. 여전히 점의 원을 그리지 만 이상한 순서와 비 균일 한 방식 (int 라운딩 오류를 허용하는 경우조차도)은 점의 수가 증가함에 따라 점 주위가 순차적으로 늘어나지 않는다면 원의 완전히 다른 점으로 점프합니다 ?이상한 결과를 반환하는 극좌표를

def pol2cart(distance, angle): 
    x = distance * numpy.cos(angle) 
    y = distance * numpy.sin(angle) 
    return(x, y) 

for fixedangle in xrange(0,360,10): 
    x, y = pol2cart(50,fixedangle)  
    print str(int(x)) + ", " + str(int(y)) + " " + str(fixedangle) + "\xb0" 

결과의 샘플 :

50, 0 0° 
-41, -27 10° 
20, 45 20° 
7, -49 30° 
-33, 37 40° 
48, -13 50° 
-47, -15 60° 
31, 38 70° 
-5, -49 80° 
-22, 44 90° 
43, -25 100° 
-49, -2 110° 
40, 29 120° 
-18, -46 130° 
-9, 49 140° 
34, -35 150° 
-48, 10 160° 
46, 17 170° 
-29, -40 180° 

하면 0도 = (50,0)를 다음 나는 10도 주위 (49,9)하지 (기대 -41, -27). 그리고 저는 20 도가 ~ (47,18)이 아니라는 것을 기대합니다. (20,45) ... 등등. 세 가지 예제를 통해 데카르트 점이 완전히 다른 사분면으로 점프하고 다시 점프하는 것을 볼 수 있습니다. 회전 방향이나 시작점에 대한 제 생각이 완전히 틀린 경우에도 각 점은 0도 시작점에서 시계 방향 또는 반 시계 방향으로 회전 순차적 일 것으로 예상됩니다. 또한 직각 좌표 90과 180에서 데카르트 점은 (0,0) 중심점과 관련하여 완벽하게 수평 또는 수직으로부터 멀리 떨어져 있다는 것을 알 수 있습니까? NumPy와 라디안 대신에 도로에 입력을 NumPy와 라디안,되지도

답변

4

보인다. 각도를 라디안으로 변환하면 문제가 해결됩니다.

+0

aah thanks Jeremy. 그리고 모두 감사 : 첫 번째 똑딱 :) – Simon

2

sin()의 기능과의 cos()에서 작업처럼

2

코드가 좋지만 문제는 numpy.cos (각도)가 각도가 아닌 라디안 단위로 나타납니다. 테스터를 0에서 2*numpy.pi 범위로 변경하거나 라인 2에 angle = 180*angle/numpy.pi을 추가하여도를 라디안으로 변환 할 수 있습니다.