การคำนวณแรงหมุนของสไปรต์ 2D


35

ฉันสงสัยว่าใครบางคนมีวิธีการคำนวณสถานการณ์ต่อไปนี้อย่างสวยงาม

ฉันมีวัตถุของจำนวนสี่เหลี่ยม (n) จำนวนรูปร่างแบบสุ่ม แต่เราจะแกล้งพวกมันเป็นรูปสี่เหลี่ยมผืนผ้าทั้งหมด

เรากำลังจัดการกับแรงโน้มถ่วงไม่ดังนั้นพิจารณาวัตถุในอวกาศจากมุมมองจากบนลงล่าง ฉันกำลังใช้แรงกับวัตถุที่ช่องสี่เหลี่ยมเฉพาะ (ดังที่แสดงด้านล่าง)

การใช้กำลัง

ฉันจะคำนวณมุมการหมุนได้อย่างไรโดยขึ้นอยู่กับแรงที่ใช้กับตำแหน่งที่ใช้งาน หากนำไปใช้ในจัตุรัสกลางมันจะตรงไป ฉันควรจะทำตัวต่อไปอย่างไรเมื่อย้ายจากจุดศูนย์กลาง ฉันจะคำนวณความเร็วในการหมุนได้อย่างไร


คุณต้องการที่จะเกิดอะไรขึ้นกับแรงผ่านช่วงเวลาที่วัตถุหมุน? มันใช้กับจตุรัสเดียวกันในทิศทางเดียวกันเสมอหรือไม่? มัน "กวาด" ตามขอบของวัตถุหรือไม่? ด้วยข้อมูลที่คุณให้คุณจะได้รับแรงหมุนที่สอดคล้องกัน (aka แรงบิด) แต่ถ้าคุณต้องการอนุมานความเร็วการหมุนจากนั้นคุณจะต้องให้แรงกระตุ้น (มากกว่าแรง) หรืออธิบายว่า ควรใช้แรงเมื่อเวลาผ่านไป
sam hocevar

ความจริงแล้วนี่อาจเป็นคำถามที่ดีกว่าสำหรับ physics.stackexchange.com เพราะนี่เป็นคำถามของกลศาสตร์พื้นฐานทั้งหมด
BlueRaja - Danny Pflughoeft

คำตอบ:


44

คุณกำลังพยายามคำนวณแรงบิด แรงบิดขึ้นอยู่กับแรงที่กระทำ F, ตำแหน่งของงานและจุดศูนย์กลางมวลของวัตถุ

1) จุดศูนย์กลางมวล กำหนดจุดศูนย์กลางมวลของวัตถุ

2) Point of Application : กำหนดจุดที่แรงกระทำ

3) Moment Arm : ระยะห่างระหว่างจุดสองจุดที่กำหนดไว้ด้านบน

Point centerofMass
Point applicationPoint
Vector momentArm = applicationPoint - centerofMass

4) แรงเชิงมุม : แบ่งแรงของคุณ F เป็นสองเวกเตอร์มุมฉากหนึ่งเส้นขนานกับเส้นใน 3) และหนึ่งฉากตั้งฉาก องค์ประกอบแบบขนานไม่มีผลต่อโมเมนตัมเชิงมุม แนวตั้งฉากหนึ่งทำ คุณสามารถคำนวณส่วนประกอบขนานโดยการฉายภาพเวกเตอร์ คุณสามารถลบสิ่งนั้นออกจากต้นฉบับเพื่อให้ได้องค์ประกอบตั้งฉาก ใน pseudocode ( dotหมายถึง dot-product)

Vector myForce
Vector momentArm

parallelComponent = momentArm * (dot(myForce, momentArm) / dot(momentArm, momentArm))
angularForce = myForce - parallelComponent

5) แรงบิด : องค์ประกอบตั้งฉากของแรงคูณด้วยความยาวของช่วงเวลาที่แขน

Vector angularForce
Vector torque = angularForce * momentArm.Length

วิธีรับจากแรงบิดถึงความเร็วเชิงมุม:

1) Moment of Inertia : คำจำกัดความของความเฉื่อยในการหมุนของวัตถุที่กำหนด ตัวอย่างเช่นมันต้องใช้แรงบิดมากขึ้นในการหมุนแท่งยาวกว่าทรงกลมที่มีมวลเท่ากัน หากคุณไม่กังวลเกี่ยวกับความจริงคุณสามารถแกล้งช่วงเวลาของความเฉื่อยนั้นสัมพันธ์กับมวลหรือคุณอาจเพิกเฉยต่อรูปร่างและมวลของวัตถุทั้งหมด

2) การเร่งความเร็วเชิงมุม :

Vector angularAcceleration = torque / momentOfInertia

3) ความเร็วเชิงมุม : ความเร็วเชิงมุมจะเพิ่มขึ้นตราบใดที่มีการใช้แรงบิด ดังนั้นสูตรคร่าว ๆ จะเป็น "ความเร็วเชิงมุมในเวลาTเป็นผลรวมสะสมของการเร่งความเร็วเชิงมุมจนถึงT ." สิ่งนี้แสดงเป็น pseudocode เป็น

void Update(float elapsedSeconds):
    orientation += 0.5 * angularVelocity * elapsedSeconds;
    angularVelocity += angularAcceleration * elapsedSeconds;
    orientation += 0.5 * angularVelocity * elapsedSeconds;

อย่างไรก็ตามข้อมูลที่ดีส่วนที่ฉันไม่ชัดเจนที่สุดคือวิธีการกำหนดแรงบิดที่ควรจะเป็น ฉันมีส่วนประกอบทั้งหมดตามที่คุณอธิบาย
jgallant

@ จอน: คุณมีส่วนประกอบซึ่งหมายความว่าคุณมีขั้นตอนที่ 1 - 3 และไม่สามารถหาวิธีการคำนวณขั้นตอนที่ 4 ได้หรือไม่ นั่นเป็นขั้นตอนที่ยุ่งยากเป็นหลัก ฉันจะเพิ่มรายละเอียดอีกเล็กน้อยที่นั่น
จิมมี่

3
การวางแนวเป็นผลรวมสะสมของความเร็วเชิงมุมorientation += angularVelocity * elapsedSecondsนั้นผิดเพราะมันประเมินความเร็วเกินขั้นตอนเวลาซึ่งหมายความว่าเฟรมที่แตกต่างกันจะให้ทิศทางที่ต่างกัน สูตรที่เหมาะสมจะเป็น: float oldVelocity = angularVelocity; angularVelocity += angularAcceleration * elapsedSeconds; orientation += 0.5f * (angularVelocity + oldVelocity) * elapsedSeconds;. นอกจากนี้เนื่องจากไม่มีแรงโน้มถ่วงฉันแนะนำให้ใช้ "จุดศูนย์กลางมวล" แทน +1 สำหรับคำอธิบายที่ดีมาก
sam hocevar

1
ส่วนหนึ่งของแรงตั้งฉากจะทำหน้าที่เร่งศูนย์กลางของมวลและเมื่อแรงถูกนำไปใช้ใกล้กับศูนย์กลางของมวลปัจจัยนี้จะเพิ่มขึ้น คำตอบนั้นดีและชัดเจนมาก แต่ดูเหมือนจะไม่สมบูรณ์ในเรื่องนี้
Sam Watkins

เพื่อที่จะตอบความคิดเห็นของตัวเองผมกำลังอ่านบทความคริส Hecker ในฟิสิกส์: chrishecker.com/Rigid_body_dynamics ปรากฎว่าแรงหรือแรงกระตุ้น ณ จุดใด ๆ มีผลกระทบที่รู้จักกันดีในใจกลางของมวลตาม F = ma หรือ a2 = a1 + p ราวกับว่าร่างกายไม่สามารถหมุนได้ จากกฎการอนุรักษ์โมเมนตัมเชิงเส้น องค์ประกอบของแรงที่ตั้งฉากกับรัศมียังทำให้เกิดแรงบิดและการเปลี่ยนแปลงของโมเมนตัมเชิงมุมดังที่อธิบายไว้ในคำตอบของจิมมี่
Sam Watkins

7

ถ้ากองกำลังไม่แรงเกินไปมันง่ายกว่ามากในการจำลองการหมุนโดยใช้หลายจุดและสปริงเชื่อมต่อพวกมัน ในกรณีนี้คุณเพียง แต่สมมติว่ารูปร่างของคุณประกอบด้วยจุดเชื่อมต่อหลายจุดด้วยสปริง จุดแต่ละจุดแสดงถึงมวลและสิ่งอื่น ๆ ที่มีรูปร่างมีมวลเท่ากับศูนย์

สปริงและจุด

ในจุดสีดำของภาพด้านบนแสดงถึงมวลชนและเส้นสีแดงแสดงถึงสปริง จากนั้นใช้แรงที่คุณเพิ่งนำไปใช้กับจุดที่ใกล้ที่สุดและคุณจะเห็นวัตถุของคุณจะหมุนตามที่คุณต้องการ เพื่อให้รูปร่างของคุณดูเหมือนโครงสร้างที่แข็งการกำหนดสปริงให้มีค่าการหน่วงสูงและค่า k สูง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.