2012-11-28 15 views
9

Ho pensato che probabilmente qualcuno abbia fatto questa domanda prima ma non sono riuscito a trovare una risposta.Calcolo dell'inerzia per un corpo rigido a più forme

Sto scrivendo una libreria fisica per il mio motore di gioco (2d, attualmente in actionscript3, ma facilmente traducibile in lingue basate su C).

Ho problemi a trovare una buona formula per calcolare l'inerzia dei miei oggetti di gioco.

Il fatto è che ci sono un sacco di formule provate per calcolare l'inerzia attorno a un centroide di un poligono convesso, ma la mia struttura è leggermente diversa: ho oggetti di gioco con il loro spazio locale. È possibile aggiungere forme convesse come cerchi e poligoni convessi a questo spazio locale per formare oggetti complessi. Le forme stesse hanno di nuovo il loro spazio locale. Quindi ci sono tre livelli: Mondo, oggetto & spazio forma.

Non avrei problemi a calcolare l'inerzia di ogni singolo poligono nella forma con le formule fornite su moments of inertia Wikipedia article.

o quelli forniti in un fantastico collision detection & response article.

Ma mi chiedo come relazionarlo alla struttura dell'oggetto, semplicemente aggiungo tutte le inerzie delle forme dell'oggetto? Questo è ciò che un altro scrittore usa per calculate the inertia of triangulated polygons, aggiunge tutti i momenti di inerzia dei triangoli. O c'è dell'altro?

Trovo che tutto questo concetto di inerzia sia abbastanza difficile da capire perché non ho un forte background di fisica. Quindi se qualcuno potesse fornirmi una risposta, preferibilmente con la logica dietro l'inerzia attorno a un dato centroide, sarei molto grato. Studio effettivamente I.T. - Sviluppo del gioco nella mia università, ma con mia grande frustrazione nessuno degli insegnanti nelle loro fila ha esperienza nel campo della fisica.

+0

@cha - Penso che potresti voler leggere la [guida W3C sul testo del collegamento] (http://www.w3.org/TR/WCAG10-HTML-TECHS/#link-text). – Flexo

+0

@Flexo Non ti ho capito .... per favore chiarisci – Chaitanya

risposta

-1

Per il movimento lineare è sufficiente aggiungerli. L'inerzia è proporzionale alla massa. Aggiungere le masse degli oggetti e calcolare l'inerzia della somma equivale ad aggiungere le loro singole inerzie.

Per la rotazione diventa più complicato, è necessario trovare il centro di massa.

Leggi le leggi sul moto di Newton. Dovrai capirli se stai scrivendo un motore fisico. Le leggi stesse sono molto brevi ma comprenderle richiede più contesto, quindi google in giro.

Si dovrebbe provare in particolare a comprendere i concetti: massa, inerzia, forza, accelerazione, quantità di moto, velocità, energia cinetica. Sono tutti collegati.

+0

-1: No, non puoi semplicemente aggiungerli. Anche in terra 2D devi preoccuparti del teorema degli assi paralleli. –

+0

Ah, vero. Ho considerato solo il movimento lineare. Cura di elaborare? – Minthos

+2

È necessario considerare il centro dell'offset di massa. Pensa a cosa succede quando connetti masse puntiforme con aste senza massa. Una barra senza massa ha massa zero e quindi zero momento di inerzia. Le masse puntiformi hanno un momento di inerzia pari al centro di massa, quindi solo sommando i momenti di inerzia degli oggetti si otterrebbe zero. L'aggiunta degli offset del teorema dell'asse parallelo crea un oggetto composito con un momento di inerzia positivo. –

2

Laurens, la fisica è molto più semplice se si rimane nello spazio bidimensionale. Nello spazio 2D, le rotazioni sono descritte da uno scalare, la resistenza alla rotazione (momento di inerzia) è descritta da uno scalare e le rotazioni sono additive e commutative. Le cose diventano pelose (molto, molto più pelose) nello spazio tridimensionale.

Quando si collegano due oggetti, l'oggetto combinato ha il proprio centro di massa. Per calcolare il momento di inerzia di questo oggetto combinato, è necessario sommare i momenti di inerzia dei singoli oggetti e aggiungere anche il termine offset dato dallo Steiner parallel axis theorem per ogni singolo oggetto. Questo termine offset è la massa dell'oggetto moltiplicato per il quadrato della distanza dal centro di massa composito.

Il motivo principale per cui è necessario conoscere il momento di inerzia è che è possibile simulare la risposta a coppie che agiscono sul proprio oggetto.Questo è abbastanza semplice nella fisica 2D. Il comportamento rotazionale è un analogo alla seconda legge di Newton. Invece di F = ma usi T = Iα. (Le cose ancora una volta sono molto più pelose nello spazio 3D.) È necessario trovare le forze e le coppie esterne, risolvere l'accelerazione lineare e l'accelerazione rotazionale e quindi integrarle numericamente.

Un buon libro per principianti sulla fisica del gioco è probabilmente in ordine. È possibile trovare un elenco di testi consigliati in this question at the gamedev sister site.

+0

Ahh ok, quindi lo scrittore dell'articolo nel link finale del mio post era corretto. Non conoscevo il termine "teorema degli assi paralleli", grazie per averlo indicato. – Laurens

+0

Capisco perché ho bisogno del momento di inerzia, ma non ero sicuro su come calcolarlo. È normale che il valore dell'inerzia sia davvero grande? Ho usato il modo di calcolarlo come hai descritto tu, ma questo mi sta dando dei numeri enormi. se lo provo per un oggetto formato da un poligono a forma quadrata con una larghezza e un'altezza di 80, collocato con il centro al centro dell'oggetto, l'inerzia che spunta è: 3413333.3333333335. Calcolo la massa dell'oggetto dall'area dell'oggetto moltiplicato per uno scalare di densità attualmente impostato su uno. È un risultato normale? Sembra un numero enorme. – Laurens

+0

O e grazie per quella lista di libri di fisica, hai ragione che potrei davvero usarne uno. Il mio codice di risposta alla collisione mi sta dando risultati terribilmente difettosi al momento – Laurens

Problemi correlati