2012-06-09 2 views
-1

좋아요, 아플 수 있습니다. 가능한 한 최선을 설명하려고합니다.
저는 HTML5에서 캔버스에 일부 좌표 함수를 사용하고 있습니다. 그리고도 단위로 객체를 움직일 수있는 함수를 만들고 싶습니다.
개체 x 및 y 좌표를 각도 단위로 변경하는 방법은 무엇입니까?

box.x=10; 
box.y=10; 
// now the box has the coordinates (10,10) 
moveTheBoxWithThisAmountOfDistance=10; 
degreesToMoveTheBox=90; 
box.moveByDegrees(moveTheBoxWithThisAmountOfDistance,degreesToMoveTheBox); 
// now the box.x would be 20 and box.y wouldn't be changed because 
// we only move it to the right (directional 90 degrees) 

내가이 어떤 의미가 희망 :
내 꿈은 다음과 같이 작동하는 기능을하는 것입니다!
내 질문은 :
학위를 좌표로 변환해야 할 때 수학적 표현은 어떻게 생겼습니까 ?? 그것 뿐이다

+0

당신은 내가 당신의 문제를 알고 추측 –

+0

을 라디안 각도를 변환해야합니다. 어쩌면 당신은 각도 거리를 찾고 있습니다 : [link] (http://en.wikipedia.org/wiki/Angular_distance) 및 각 직경 : [link] (http://en.wikipedia.org/wiki/Angular_diameter) –

+0

' moveTheBoxWithThisAmountOfDistance' 명시 적 이름 지정이 너무 멀리 있습니다. –

답변

3

당신은 좌표로 각도 및 거리를 변환 sincos를 사용

function moveByDegrees(distance, angle) { 
    var rad = angle * Math.pi/180; 
    this.x += Math.cos(rad) * distance; 
    this.y += Math.sin(rad) * distance; 
} 
+0

고마워요! 약간의 맞춤법 오류가 있지만, 신경 쓰지 마라. :) –

1

은 : http://en.wikipedia.org/wiki/Rotation_matrix은, 모든 수학은 설명 :

또한 조심 당신은 여러 개의 연속 회전을 필요로하는 경우 (즉, 당신은 연속 애니메이션을)은 초기 것과 X '와 y'를 다시 계산하는 것이 좋습니다 뿐만 아니라 이전. 이렇게하지 않으면 반올림 오류가 누적되고 결과가 너무 거칠어집니다.

관련 문제