Estoy trabajando en un pequeño proyecto de pasatiempo de Unity en el que intento programar propulsores para una nave espacial en el espacio 3D. Los propulsores funcionan, pero tengo un problema al hacer coincidir el centro de empuje con el centro de masa. Quiero que los propulsores ajusten automáticamente su fuerza en función de su posición relativa a la dirección del movimiento.
Al mirar el problema de manera un poco más simple, me quedo con esta situación:
Tengo una cantidad aleatoria de pesos colocados en un plano 2D en ubicaciones aleatorias. Se desconoce la masa de cada peso, y el centro de masa de todos los pesos debe estar en 0,0.
¿Cómo calculo la masa de cada peso?
Hasta ahora, estoy visualizando el problema como un espacio 2D donde el centro de masa debe ser 'tirado' a 0,0 aumentando la masa de los pesos. Pero no puedo encontrar un algoritmo para hacer esto con precisión y con la menor cantidad de delta de masa entre pesos.
El problema como lo ha descrito está sublimitado. Con m1, m2, etc. como las masas y (x1, y1), (x2, y2), etc. como las coordenadas:
m1 * x1 + m2 * x2 + m3 * x3 + m4 * x4 = 0 m1 * y1 + m2 * y2 + m3 * y3 + m4 * y4 = 0Establezca m3 y m4 en cero y es bastante fácil.
Tienes cuatro variables libres (4 masas) para hacer coincidir dos ecuaciones. La única complicación es que la masa probablemente tiene que ser positiva para todos los valores.
Una forma bastante óptima de resolver esto en su caso es elegir una masa predeterminada, luego intente con cada par de masas (m1, m2), (m1, m3), (m1, m4), (m2, m3), etc. resuelva la ecuación con las otras masas establecidas en la masa predeterminada.
Entonces, si la masa predeterminada es 5 kg, establezca m3 = 5 kg y m4 = 5 kg, resuelva para m1 y m2, obteniendo, por ejemplo, m1 = 3 kg y m2 = 6 kg. Repita esto para todos los pares de masas. Elija el par que se desvíe menos de la masa predeterminada y que no sea negativo.