안녕하세요 선후 입니다.^^

제가 손으로 원을 그려서 이것저것 해보고 있었는데요,
x1 = 0
y1 = 0 이고
x2a = 2.1
y2a = 2.4
이면
(2.1 - 0) / 10 (시간속도) = 0.21 (x축 가산되는 양)
(2.4 - 0) / 10 (시간속도) = 0.24 (y축 가산되는 양)
이것과 아래것은 거리는 똑같습니다.
x2b = 3.2
y2b = 0
(3.2 - 0) / 10 = 0.32 (x 축 가산되는 양)
(0 - 0 ) / 10 = 0 (y 축 가산되는 양)
위 두 포인트로 도달하는 시간은 똑같은 지 궁금합니다.
정확하게 이동하려면 sin,cos을 써서 점과 점사이의 각도를 계산해서 이동해줘야 합니다.
저런 식으로 이동하게 되면 가령 위로 10도트씩 이동한다고 했을때 45도 방향으로 x도 10,, y도 10을 이동해야 하는데
그렇게 이동하면 위로 이동할때 거리보다 좀 더 가게 되죠.
수학식으로만 풀면...
1. 목적지 좌표(x2, y2)와 원래 좌표(x1, y1) 모두를 알고 있다면, 속도는 그냥 뺄셈해서 시간으로 나누면 됩니다. (x축 y축 따로...)
Animaion의 Frame을 구현하는 것이라면 (x1+(x속도)*(프레임의 경과시간), y1+(y속도)*(프레임의 경과시간)) 이렇게 구하시면 됩니다.
2. 원래 좌표는 아는데 목적지 좌표는 거리와 각도만 안다면, sin과 cos을 이용하여 (x2, y2)를 구하여 위와 같이 계산하시면 됩니다.
x2 = (거리)*cos(각도)
y2 = (거리)*sin(각도)
이것은 일반적인 수학식인데요... 우리는 일반 식과 다르게 y축이 아래로 증가하게 되어있으므로....
sin 그래프 성질에 의해서 y2에 -1을 곱해야 하는 경우도 생길수 있습니다.
@ 300초 이내 글쓰기 금지... 계속 하면 IP 차단이라고 나오던데 정말인가요? 헉 ;;;
아까이님 안녕하세요^^
지금 댓글달아주신분들께 배운거랑 안펍IRC에서 이야기해서 배운거랑 해서
내린 공식이
x1 += (x2 - x1) * 가속도 * 프레임 경과시간
y1 +=(y2 - y1) * 가속도 * 프레임 경과시간
으로 해서 사용하고 있어요^^
(원래 다른 방법으로 억지로 하고 있었는데 제가 어거지로 만든거라 ㅠㅠ 너무 길었었거든요 ㅠㅠ..)
네 맞습니다. 제가 말을 잘못적은것 같네요^^
대각선으로 가나 오른쪽 직선으로 가나 한프레임당 이동속도가 똑같아야 하는거죠^^
(같은 시간으로 도착한다는 것은 ㅇ 자신의 위치에서 360도 어느방향으로 똑같은 거리를
갈 때 같은 시간에 도착하고 싶다는 거였어요^^)
제가 말씀 드린 경우라면
각도 = atan2(y2 - y1, x2 - x1)
x축 방향 속도 = S * cos(각도)
y축 방향 속도 = S * sin(각도)
로 한다면
원점(x1, y2)에서
원점에서 같은 거리를 가진 360도의 모든 지점에
같은속도 S로 간다면
같은 시간에 도착을 하게 되는건가요?




예를 들어 x1, y1 = 0, 0 이고 x2, y2 = 30, 50 이다 치고 이걸 10번에 걸쳐서(1초 간격으로 10초동안 이라던지?) 이동해야 한다면
단순히 x2 - x1 = 30 / 10 = 3, y2 - y1 = 50 / 10 = 5
그럼 한번 이동시에 x 는 3칸, y는 5칸 이동
이런식으로 이용하시면 되겠네요 ~_~
물론 여기서 횟수 만큼 나누기 했을때 나머지, 부동소수점 한계 등 문제로 인한 오차는 해결하셔야..