Torku hesaplamaya çalışıyorsun. Tork, uygulanan kuvvet F'ye, uygulama noktasına ve nesnenin kütle merkezine bağlıdır.
1) Kütle Merkezi . Nesnenin kütle merkezini tanımlayın.
2) Uygulama Noktası : Kuvvetin etki ettiği noktayı tanımlayın.
3) Moment Arm : Yukarıda tanımlanan iki nokta arasındaki mesafe.
Point centerofMass
Point applicationPoint
Vector momentArm = applicationPoint - centerofMass
4) Açısal kuvvet : Kuvvetinizi F iki ortogonal vektöre ayırın, biri 3'te çizgiye Paralel) ve bir Dik. Paralel bileşen açısal momentumu etkilemez. Dik olan bunu yapar. Paralel bileşeni vektör projeksiyonu ile hesaplayabilirsiniz. Dikey bileşeni almak için bunu orijinalden çıkarabilirsiniz. Sahte kodda ( dot
nokta ürün anlamına gelir)
Vector myForce
Vector momentArm
parallelComponent = momentArm * (dot(myForce, momentArm) / dot(momentArm, momentArm))
angularForce = myForce - parallelComponent
5) Tork : Kuvvetin dik bileşeni moment kolunun uzunluğu ile çarpılır.
Vector angularForce
Vector torque = angularForce * momentArm.Length
Tork'tan açısal hıza ulaşmak için:
1) Atalet Momenti : Belirli bir nesnenin ne kadar dönme ataletine sahip olduğunun tanımı. Örneğin, aynı kütleli bir küreden daha uzun bir çubuğu döndürmek daha fazla tork gerektirir. Gerçekçilikten endişe duymuyorsanız, atalet momentinin kütle ile ilgili olduğunu iddia edebilir veya nesnenin şeklini ve kütlesini tamamen görmezden gelebilirsiniz.
2) Açısal ivme :
Vector angularAcceleration = torque / momentOfInertia
3) Açısal Hız : Açısal hız, tork uygulandığı sürece artmaya devam edecektir. Bir formül aşağı yukarı olacak şekilde "süresi en Açısal Hız T kadar açısal hızlanma kadar kümülatif toplamıdır T ". Bu yalancı kodla ifade edilir.
void Update(float elapsedSeconds):
orientation += 0.5 * angularVelocity * elapsedSeconds;
angularVelocity += angularAcceleration * elapsedSeconds;
orientation += 0.5 * angularVelocity * elapsedSeconds;