답변:
글쎄, 당신은 약간의 물리학을 사용해야하지만, 물리학을 시뮬레이션 할 필요는 없습니다 . 진자 의 회전을 설정하기 위해 쉽게 사용할 수있는 진자 운동 공식 이 있습니다. 작은 스윙의 경우 간단한 고조파 모션으로 모션을 근사화 할 수 있습니다 .
특정 시간에서의 각도 변위는 다음과 같이 근사 할 수 있습니다.
이것은 작은 최대 θ에 대해 가장 정확하지만 목적에 충분할 것입니다. 현재 시간이 걸리고 진자가 회전해야하는 각도를 출력하는 함수를 만들고 그 정도만큼 스프라이트를 회전시킵니다.
다음은 간단한 등급 11 Trig and Physics에서 도출 된 No-Trig 계산입니다. 원점은 진자 밥 서스펜션의 가장 낮은 지점이고 L은 진자의 길이이며 y는 아래로 증가하고 x는 오른쪽으로 증가한다는 일반적인 그래픽 규칙이 채택된다고 가정합니다.
업데이트 : 처음에는 yAcceleration을 엉망으로 만들었습니다. 이것은 더 쉽다.
업데이트 # 2 : 명시 적 시간 제어 및 측정 단위가 추가되었습니다.
const float gravity = 9.8; // units of metres/sec/sec
const float deltaT = 0.001; // equals 0.001 sec or 1 millisecond
var xVelocity = 0.010; // units metres/sec equals 10 cm/sec
var x = 0.0; // units metres
var y = 0.0; // units metres
while (true) {
var xAcceleration = -gravity * (x/L) * (L-y)/L;
x += (xVelocity + (xAcceleration/2 * deltaT)) * deltaT;
y = Math.SQRT(L*L - x*x) - L;
xVelocity += xAcceleration * deltaT;
}