Simulación de Imanes en Unity
https://github.com/jscoobysnack/UnityMagnets
Motivación
Siempre pensé que los imanes eran interesantes. El año pasado traté de encontrar código para simulación de imanes pero no encontré nada. Decidí hacer mi propia simulación en Unity.
Empecé a aprender los fundamentos del electromagnetismo. Experimenté con varias ecuaciones de Wikipedia y decidí usar la fórmula de Gilbert para calcular la fuerza entre dos polos magnéticos.
Esta es la ecuación para la simulación.
https://en.wikipedia.org/wiki/Force_between_magnets#Force_between_two_magnetic_poles
Entonces el código de esa fórmula es:
Vector3 CalculateGilbertForce(Magnet magnet1, Magnet magnet2)
{
var m1 = magnet1.transform.position;
var m2 = magnet2.transform.position;
var r = m2 - m1;
var dist = r.magnitude;
var part0 = Permeability * magnet1.MagnetForce * magnet2.MagnetForce;
var part1 = 4 * Mathf.PI * dist;
var f = (part0 / part1);
if (magnet1.MagneticPole == magnet2.MagneticPole)
f = -f;
return f * r.normalized;
}
Para ejecutar una simulación de imanes basta con agregar el script MagnetWorld a un GameObject. Éste realiza todas las simulaciones magnéticas.
MagnetWorld Ajustes
Generalmente no se necesita cambiar esto.
Permeability: Permeabilidad del espacio libre. https://en.wikipedia.org/wiki/Permeability_(electromagnetism)
Max Force: Límite de la fuerza aplicada por cuadro.
Simulación
FixedUpdate
Primero todos los objetos de tipo Magnet
son encontrados. Entonces la fuerza magnética es calculada y aplicada a los polos magnéticos.
Magnet
Magnet Force: La fuerza del imán.
Magnetic Pole: Uno de dos polos del imán. Polos similares se repelen. Los opuestos se atraen.
RigidBody: El objeto al que se aplicarán las fuerzas.
Configuración Sencilla
GameObjects y su componentes
Magnet Object - RigidBody
Pole - Imán con polo norte.
Pole - Imán con polo sur.
Escena básica:
1. GameObject con el componente MagnetWorld.
2. Dos objetos Magnet como se describió anteriormente.
Finito.
Los Casos de Uso
Mega Magnet
Magnetic Levitation
No es necesario tener ambos polos. Por ejemplo en la escena de Levitación Magnética:
Las esferas azules son polos magnéticos nortes. Ambos, el tren magnético y el objeto piso, tienen polos magnéticos norte. Los imanes del piso se mueven en sincronía con el tren magnético. Al pulsar las teclas de dirección, algunos de los imanes se debilitan causando un desequilibrio en las fuerzas que afectan al tren magnético resultando en movimiento.
Limaduras de Hierro
Esta es una prueba comparando el campo magnético utilizando esta simulación frente a un campo magnético del mundo real. Las limaduras de hierro son imanes con RigidBodys que sólo pueden girar. El desplazamiento está inhabilitado.
Si creas algo con esto Tweet a @jscoobysnack o comenta con un video.
Los comentarios son muy apreciados, pero por favor agregue un insulto para que sea interesante. Aquí hay una plantilla para ayudar:
[comment body] and go fuck yourself.
Ejemplo:
I love magnets and go fuck yourself.
Congratulations @kubiak! You have received a personal award!
1 Year on Steemit
Click on the badge to view your Board of Honor.
Congratulations @kubiak! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!