En aquest tema, explorarem les interaccions entre rigid bodies (cossos rígids) en el context de la física de videojocs. Els cossos rígids són objectes que no es deformen sota l'acció de forces, i les seves interaccions són fonamentals per simular un entorn de joc realista. Aprendrem com es comporten aquests cossos quan col·lisionen, com es poden modelar les forces i els moments que actuen sobre ells, i com implementar aquestes interaccions en un motor de física.

Conceptes Clau

  1. Cossos Rígids (Rigid Bodies):

    • Definició: Objectes que no es deformen sota l'acció de forces.
    • Propietats: Massa, inèrcia, velocitat, moment angular.
  2. Forces i Moments:

    • Forces: Accions que poden canviar l'estat de moviment d'un cos rígid.
    • Moments (o torques): Forces que poden causar rotació.
  3. Col·lisions:

    • Tipus de col·lisions: Elàstiques i inelàstiques.
    • Resposta a col·lisions: Canvi de velocitat i rotació després de l'impacte.
  4. Fricció i Rebot:

    • Fricció: Resistència al moviment entre superfícies en contacte.
    • Coeficient de rebot: Mesura de com es conserva l'energia cinètica després d'una col·lisió.

Forces i Moments

Forces

Les forces són vectors que poden causar translació d'un cos rígid. Les forces es poden aplicar en diferents punts del cos, i la seva magnitud i direcció determinaran l'efecte sobre el moviment del cos.

Exemples de Forces

  • Gravetat: Una força constant que actua cap avall sobre tots els cossos.
  • Força Normal: La força perpendicular a la superfície de contacte que impedeix que els cossos es penetrin.
  • Força d'Impuls: Una força aplicada durant un curt període de temps, com un cop o una explosió.

Moments (Torques)

Els moments són vectors que causen rotació d'un cos rígid. Un moment es genera quan una força s'aplica a una certa distància del centre de massa del cos.

Fórmula del Moment

\[ \tau = r \times F \]

On:

  • \( \tau \) és el moment.
  • \( r \) és el vector de posició des del centre de massa fins al punt d'aplicació de la força.
  • \( F \) és la força aplicada.

Col·lisions

Tipus de Col·lisions

  • Elàstiques: Les col·lisions en què es conserva l'energia cinètica.
  • Inelàstiques: Les col·lisions en què part de l'energia cinètica es converteix en altres formes d'energia, com calor o deformació.

Resposta a Col·lisions

Quan dos cossos rígids col·lisionen, es produeixen canvis en les seves velocitats i moments angulars. La resposta a la col·lisió depèn de les propietats dels cossos i de la naturalesa de la col·lisió.

Fórmules de Col·lisió

Per a una col·lisió elàstica entre dos cossos, les velocitats després de la col·lisió es poden calcular utilitzant les següents fórmules:

\[ v_{1f} = \frac{(m_1 - m_2)v_{1i} + 2m_2v_{2i}}{m_1 + m_2} \] \[ v_{2f} = \frac{(m_2 - m_1)v_{2i} + 2m_1v_{1i}}{m_1 + m_2} \]

On:

  • \( v_{1f} \) i \( v_{2f} \) són les velocitats finals dels cossos 1 i 2.
  • \( v_{1i} \) i \( v_{2i} \) són les velocitats inicials dels cossos 1 i 2.
  • \( m_1 \) i \( m_2 \) són les masses dels cossos 1 i 2.

Fricció i Rebot

Fricció

La fricció és la força que s'oposa al moviment relatiu entre dues superfícies en contacte. Es pot dividir en dos tipus:

  • Fricció estàtica: La força que impedeix el moviment inicial.
  • Fricció cinètica: La força que s'oposa al moviment continuat.

Fórmula de la Fricció

\[ F_f = \mu F_n \]

On:

  • \( F_f \) és la força de fricció.
  • \( \mu \) és el coeficient de fricció.
  • \( F_n \) és la força normal.

Coeficient de Rebot

El coeficient de rebot (\( e \)) mesura la quantitat d'energia cinètica conservada després d'una col·lisió. Es defineix com la relació entre les velocitats relatives després i abans de la col·lisió.

Fórmula del Coeficient de Rebot

\[ e = \frac{v_{2f} - v_{1f}}{v_{1i} - v_{2i}} \]

Implementació en Motors de Física

Exemple en Unity

A continuació, es mostra un exemple de com implementar interaccions entre cossos rígids en Unity utilitzant el component Rigidbody.

using UnityEngine;

public class RigidBodyInteraction : MonoBehaviour
{
    public Rigidbody rb1;
    public Rigidbody rb2;

    void Start()
    {
        // Aplicar una força inicial a rb1
        rb1.AddForce(new Vector3(10, 0, 0), ForceMode.Impulse);
    }

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject == rb2.gameObject)
        {
            // Calcular la resposta a la col·lisió
            Vector3 relativeVelocity = rb1.velocity - rb2.velocity;
            float e = 0.8f; // Coeficient de rebot

            Vector3 impulse = (1 + e) * relativeVelocity / (1 / rb1.mass + 1 / rb2.mass);
            rb1.velocity -= impulse / rb1.mass;
            rb2.velocity += impulse / rb2.mass;
        }
    }
}

Explicació del Codi

  1. Inicialització: Es defineixen dos cossos rígids (rb1 i rb2) i s'aplica una força inicial a rb1.
  2. Detecció de Col·lisió: Quan rb1 col·lisiona amb rb2, es calcula la velocitat relativa entre els dos cossos.
  3. Resposta a la Col·lisió: S'utilitza el coeficient de rebot per calcular l'impuls i ajustar les velocitats dels cossos després de la col·lisió.

Exercici Pràctic

Exercici

Implementa un sistema en Unity on tres cossos rígids col·lisionen entre ells i es comporten segons les lleis de la física. Utilitza diferents coeficients de fricció i rebot per observar com afecten les interaccions.

Solució

  1. Crear els cossos rígids: Afegeix tres objectes amb components Rigidbody a l'escena.
  2. Aplicar forces inicials: Utilitza el mètode AddForce per aplicar forces inicials als cossos.
  3. Detectar col·lisions: Implementa el mètode OnCollisionEnter per gestionar les col·lisions entre els cossos.
  4. Ajustar les propietats de fricció i rebot: Modifica els coeficients de fricció i rebot per veure com canvien les interaccions.

Resum

En aquesta secció, hem explorat les interaccions entre cossos rígids, incloent-hi les forces, moments, col·lisions, fricció i rebot. Hem vist com implementar aquestes interaccions en un motor de física com Unity i hem proporcionat un exercici pràctic per reforçar els conceptes apresos. Aquest coneixement és fonamental per crear simulacions físiques realistes en videojocs.

© Copyright 2024. Tots els drets reservats