토크를 계산하려고합니다. 토크는 적용된 힘 F, 적용 지점 및 물체의 질량 중심에 따라 다릅니다.
1) 질량 중심 . 객체의 질량 중심을 정의하십시오.
2) 적용 지점 : 힘이 작용하는 지점을 정의합니다.
3) Moment Arm : 위에서 정의한 두 점 사이의 거리.
Point centerofMass
Point applicationPoint
Vector momentArm = applicationPoint - centerofMass
4) 각력 : 힘 F를 두 개의 직교 벡터로 나눕니다. 하나는 3)의 선과 평행하고 하나는 수직입니다. 평행 성분은 각 운동량에 영향을 미치지 않습니다. 직각입니다. 벡터 투영으로 평행 성분을 계산할 수 있습니다. 원본에서 빼고 수직 성분을 얻을 수 있습니다. 의사 코드 ( dot
점 제품을 의미)
Vector myForce
Vector momentArm
parallelComponent = momentArm * (dot(myForce, momentArm) / dot(momentArm, momentArm))
angularForce = myForce - parallelComponent
5) 토크 : 힘의 수직 성분에 모멘트 암의 길이를 곱한 값.
Vector angularForce
Vector torque = angularForce * momentArm.Length
토크에서 각속도로 가려면 :
1) 관성 모멘트 : 주어진 물체가 얼마나 많은 회전 관성에 대한 정의. 예를 들어, 같은 질량의 구보다 긴 막대를 회전하는 데 더 많은 토크가 필요합니다. 리얼리즘에 대해 걱정하지 않는다면, 관성 모멘트가 질량에 상대적인 척하거나 객체의 모양과 질량을 완전히 무시할 수 있습니다.
2) 각가속도 :
Vector angularAcceleration = torque / momentOfInertia
3) 각속도 : 토크가 적용되는 한 각속도는 계속 증가합니다. 따라서 공식은 대략 "시간 T 에서 의 각속도는 T 까지의 각가속도의 누적 합입니다 ." 이것은 의사 코드로 다음과 같이 표현됩니다
void Update(float elapsedSeconds):
orientation += 0.5 * angularVelocity * elapsedSeconds;
angularVelocity += angularAcceleration * elapsedSeconds;
orientation += 0.5 * angularVelocity * elapsedSeconds;