[TypeScript] 제스처로 대화하기. #11 - 플릭(with. 변위) 편

고라니드로고라니드로
1 min read

Table of contents

이번 편은 이전 편으로부터 이어집니다.

지난 편에서는 간단히 플릭에 대한 초기 속도를 계산해 봤습니다. 그렇다면 이것을 어떻게 활용할 수 있을까요? 여러분의 관심사는 결국 얼마나 이동해야 하는지일 것입니다. 이를 위해서는 시간에 따른 속도를 알 필요가 있습니다.

등가속도 운동에서의 속도는 \(v = v_0 + at\) 입니다. 각각 \(v_0\) = 초기 속도, \(a\) = 가속도, \(t\) = 시간입니다. 속도는 점차 감속해야 하므로 가속도는 속도와 반대 방향을 가져야 합니다. 또 적절한 수치가 필요한데 여기서는 0.0025로 하겠습니다. 이는 판단에 따라 조절할 수 있습니다.

const acceleration = -Math.sign(velocity) * 0.0025;

변위는 속도를 시간에 대해 적분한 것과 같습니다. 따라서 \(s = v_0t + \frac{1}{2}at^2\) 가 됩니다.

function findDisplacementOverTime(
    initialVelocity: number,
    acceleration: number,
    time: number
): number {
    return initialVelocity * time + (acceleration / 2) * time ** 2;
}

플릭을 통한 운동 방향은 반전될 수 없으므로 속도가 0이 되면 멈춰야 합니다. 이 시점은 다음과 같이 계산할 수 있습니다.

$$\begin{aligned} & v = 0 = v_0 + at \\ & at = -v_0 \\ & t = -\frac{v_0}{a} \end{aligned}$$

function findDuration(
    initialVelocity: number,
    acceleration: number
): number {
    return acceleration !== 0 ? -initialVelocity / acceleration : Infinity;
}

내용은 다음 편에서 이어집니다. 읽어주셔서 감사합니다!

묻고 답하기

개인적인 판단에 의해 적절하다고 여겨지는 경우, 모두가 볼 수 있도록 이곳에 문답이 추가됩니다. 그렇지 않더라도 질문에 대한 답변은 별도로 이루어집니다.

0
Subscribe to my newsletter

Read articles from 고라니드로 directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

고라니드로
고라니드로