2014-02-07 3 views
0
Circle c1 = new Circle(20); 
c1.relocate(200,200); //Set X and Y 

내가하고 싶은 것은 눈에 보이지 않는 회전 중심에서 원을 움직이게하는 것입니다. 어떻게 달성 될 수 있습니까?서클에서 원을 움직이는 방법은 무엇입니까?

감사합니다.

편집 : 나는 매우 열악한 삼각법 기술을 가지고 있습니다.

+2

삼각법 기술은 어떻습니까? – Kayaman

+0

정말로, 실제로 정말로 나쁘다. 내가 단서에 가깝다고 말하는 것이 안전합니다. – Gregg1989

답변

2

당신은 극 좌표를 사용하여 원에 점에 대한 방정식을 사용할 수 있습니다

circle_x = rot_center_x + radius * cos(angle) 
circle_y = rot_center_y + radius * sin(angle) 

이 당신의 새로운 원의 중심점을 얻을 것이다 사용. 그런 다음 각도, 빈 화면을 증가 (시계 반대 방향으로) 또는 감소 (시계 방향)하고 원을 다시 그려야합니다.

삼각 함수의 각도는 라디안으로, 전체 원에서 2 * pi 라디안을 갖습니다. 따라서 각도가 0 도인 경우 0을 입력하십시오. 90 도의 경우 pi/2.0을 입력하십시오. 당신은 당신이 회전 오메가의 각속도를 선택해야 당신의 회전을 시간이하고자하는 경우

angle_rad = pi/180.0 * angle_degrees 

: 는 다른 각도이 변환 공식을 사용합니다.

omega = 2*pi*f 

여기서 f는 회전 빈도입니다 (예 : f = 1Hz는 1 초 후에 개체가 전체 원으로 회전 함을 의미). 오메가는 초당 라디안으로 표시되므로 오메가 10 라디안이있는 경우 객체는 1 초 동안 10 라디안 또는 10 초 동안 100 라디안으로 회전합니다.

지금 당신은 당신이 애니메이션의 각 프레임을 추가 할 필요가 얼마나 많은 각도를 결정해야한다 : fps_avg이 초당 프레임의 평균을 측정

ang_inc = omega/fps_avg; 
ang += ang_inc; 

.

+0

각도를 정확히 계산하려면 어떻게해야합니까? – Gregg1989

관련 문제