Anda mencoba menghitung Torsi. Torsi tergantung pada gaya yang diberikan F, titik aplikasi, dan pusat massa benda.
1) Pusat Massa . Tentukan pusat massa objek.
2) Titik Penerapan : Tetapkan titik di mana gaya bekerja.
3) Moment Arm : Jarak antara dua titik yang ditentukan di atas.
Point centerofMass
Point applicationPoint
Vector momentArm = applicationPoint - centerofMass
4) Gaya sudut : Bagilah gaya F Anda menjadi dua vektor ortogonal, satu Paralel dengan garis dalam 3) dan satu Perpendicular. Komponen paralel tidak mempengaruhi momentum sudut. Yang tegak lurus tidak. Anda dapat menghitung komponen paralel dengan proyeksi vektor. Anda dapat mengurangi itu dari yang asli untuk mendapatkan komponen tegak lurus. Dalam pseudocode ( dot
berarti dot-produk)
Vector myForce
Vector momentArm
parallelComponent = momentArm * (dot(myForce, momentArm) / dot(momentArm, momentArm))
angularForce = myForce - parallelComponent
5) Torsi : Komponen gaya tegak lurus dikalikan dengan panjang lengan momen.
Vector angularForce
Vector torque = angularForce * momentArm.Length
Untuk beralih dari Torsi ke kecepatan sudut:
1) Momen Inersia : Definisi berapa banyak inersia rotasi yang dimiliki suatu objek. Sebagai contoh, dibutuhkan lebih banyak torsi untuk memutar batang panjang daripada bola dengan massa yang sama. Jika Anda tidak peduli dengan realisme, Anda dapat berpura-pura momen inersia relatif terhadap massa, atau Anda bisa mengabaikan bentuk dan massa objek sepenuhnya.
2) percepatan sudut :
Vector angularAcceleration = torque / momentOfInertia
3) Kecepatan Sudut : Kecepatan sudut akan terus meningkat selama torsi diterapkan. Jadi rumus kira-kira akan menjadi "Kecepatan Sudut pada saat T adalah jumlah kumulatif percepatan Angular hingga T. " Ini dinyatakan dalam pseudocode sebagai
void Update(float elapsedSeconds):
orientation += 0.5 * angularVelocity * elapsedSeconds;
angularVelocity += angularAcceleration * elapsedSeconds;
orientation += 0.5 * angularVelocity * elapsedSeconds;