En aquest tema, explorarem els conceptes de fricció i rebot, que són fonamentals per a la simulació realista de col·lisions en els videojocs. Aquests conceptes permeten que els objectes interactuïn de manera més natural i previsible dins de l'entorn del joc.
- Fricció
La fricció és la força que s'oposa al moviment relatiu entre dues superfícies en contacte. En els videojocs, la fricció és crucial per simular moviments realistes, com ara la frenada d'un cotxe o el lliscament d'un personatge sobre una superfície.
Tipus de Fricció
- Fricció Estàtica: És la força que impedeix que un objecte comenci a moure's. És més gran que la fricció cinètica.
- Fricció Cinètica: És la força que s'oposa al moviment d'un objecte que ja està en moviment.
Fórmules de Fricció
La força de fricció es pot calcular utilitzant les següents fórmules:
- Fricció Estàtica: \( F_s \leq \mu_s N \)
- Fricció Cinètica: \( F_k = \mu_k N \)
On:
- \( F_s \) és la força de fricció estàtica.
- \( F_k \) és la força de fricció cinètica.
- \( \mu_s \) és el coeficient de fricció estàtica.
- \( \mu_k \) és el coeficient de fricció cinètica.
- \( N \) és la força normal (la força perpendicular a la superfície de contacte).
Implementació en Codi
A continuació, es mostra un exemple de com implementar la fricció en un motor de física senzill:
class Objecte: def __init__(self, massa, coef_friccio_estatica, coef_friccio_cinetica): self.massa = massa self.coef_friccio_estatica = coef_friccio_estatica self.coef_friccio_cinetica = coef_friccio_cinetica self.velocitat = 0 self.forca_normal = massa * 9.81 # Suposant gravetat terrestre def aplicar_friccio(self): if self.velocitat == 0: friccio = self.coef_friccio_estatica * self.forca_normal else: friccio = self.coef_friccio_cinetica * self.forca_normal return friccio # Exemple d'ús objecte = Objecte(massa=10, coef_friccio_estatica=0.5, coef_friccio_cinetica=0.3) print(objecte.aplicar_friccio())
- Rebot
El rebot és el fenomen que es produeix quan un objecte col·lideix amb una superfície i es desvia en una direcció diferent. La quantitat de rebot es determina pel coeficient de restitució.
Coeficient de Restitució
El coeficient de restitució (\( e \)) mesura l'elasticitat d'una col·lisió entre dos objectes. Es defineix com la relació entre la velocitat relativa després de la col·lisió i la velocitat relativa abans de la col·lisió.
- \( e = 1 \): Col·lisió perfectament elàstica (sense pèrdua d'energia).
- \( e = 0 \): Col·lisió perfectament inelàstica (els objectes queden enganxats).
Fórmula del Rebot
La velocitat després de la col·lisió es pot calcular utilitzant:
\[ v' = -e \cdot v \]
On:
- \( v' \) és la velocitat després de la col·lisió.
- \( e \) és el coeficient de restitució.
- \( v \) és la velocitat abans de la col·lisió.
Implementació en Codi
A continuació, es mostra un exemple de com implementar el rebot en un motor de física senzill:
class Objecte: def __init__(self, massa, coef_restitucio): self.massa = massa self.coef_restitucio = coef_restitucio self.velocitat = 0 def aplicar_rebot(self): self.velocitat = -self.coef_restitucio * self.velocitat # Exemple d'ús objecte = Objecte(massa=10, coef_restitucio=0.8) objecte.velocitat = 10 # Velocitat abans de la col·lisió objecte.aplicar_rebot() print(objecte.velocitat) # Velocitat després de la col·lisió
Exercicis Pràctics
Exercici 1: Càlcul de la Fricció
- Crea una classe
Objecte
amb atributs per a la massa, coeficients de fricció estàtica i cinètica, i velocitat. - Implementa un mètode
aplicar_friccio
que calculi la força de fricció segons la velocitat de l'objecte. - Prova el mètode amb diferents valors de massa, coeficients de fricció i velocitat.
Exercici 2: Simulació de Rebot
- Crea una classe
Objecte
amb atributs per a la massa, coeficient de restitució, i velocitat. - Implementa un mètode
aplicar_rebot
que actualitzi la velocitat de l'objecte després d'una col·lisió. - Prova el mètode amb diferents valors de massa, coeficient de restitució i velocitat inicial.
Resum
En aquesta secció, hem après sobre la fricció i el rebot, dos conceptes fonamentals per a la simulació de col·lisions en els videojocs. Hem vist com calcular la força de fricció i la velocitat després d'una col·lisió, i hem implementat aquests conceptes en codi. Aquests coneixements són essencials per crear interaccions realistes entre objectes dins d'un entorn de joc.
Física de Videojocs
Mòdul 1: Introducció a la Física en Videojocs
Mòdul 2: Cinemàtica i Dinàmica
- Moviment Rectilini Uniforme (MRU)
- Moviment Rectilini Uniformement Accelerat (MRUA)
- Lleis de Newton
- Moviment Circular
Mòdul 3: Col·lisions i Respostes
Mòdul 4: Física de Rigid Bodies
- Introducció a Rigid Bodies
- Simulació de Rigid Bodies
- Interaccions entre Rigid Bodies
- Constraints i Joints