Puede simplemente crear un esquema diferencial, es decir, la velocidad del modelo y la coordinación del punto fuente en momentos discretos en el tiempo. Digamos que arregla algunos dt = 0.1 sec
por ejemplo, la velocidad de inicio está dada por el vector azul como v0
. Comenzamos en x0
. Diga y[j]
son los puntos de la ruta negra.
Deje x1 = x0 + v1 * dt
, donde v1 = v0 + (y[k(x0)+1] - x0) * f(abs(y[k(x0)+1] - x_0))
. Donde
k(x0)
es el índice de la más cercana a x0
puntos entre y[j]
,
f(x)
es una función que caracteriza la 'fuerza' tirando de su trayectoria a la de la trayectoria definida. Se definió para los no negativos x
es solamente.
Este modelo tira de su trayectoria al siguiente punto de la trayectoria definida hasta la posición más cercana a la posición modelada actual en la trayectoria.
Un buen ejemplo de f(x)
podría ser una modelización de la fuerza de la gravedad: f(x) = K/(x * x)
, donde K
se deben ajustar de forma experimental estar dando los resultados deseados naturales.
Entonces x2 = x1 + v2 * dt
, donde v2 = v1 + (y[k(x1) + 1] - x1) * f(abs(y[k(x1) + 1] - x_1))
y así sucesivamente:
x[n+1] = x[n] + v[n+1] * dt
, donde v[n+1] = v[n] + (y[k(x[n]) + 1] - x[n]) * f(abs(y[k(x[n])+1] - x[n]))
...
Vas a tener que ajustar dt
y K
aquí. dt
debe ser lo suficientemente pequeño para que la trayectoria sea suave. Más grande K
hace la trayectoria más cercana a la definida con precisión, más pequeña K
lo hace más relajado.
Editar ahora en realidad cuando pensé un poco, entiendo que la selección de la función de la fuerza f
no fue buena, ya que la fuerza gravitacional permite velocidades espaciales, es decir, la capacidad de su trayectoria a volar lejos de la deseada infinitamente si la velocidad inicial es muy grande. Entonces debería construir otra función, posiblemente algo similar a f(x) = K x
o f(x) = K x^alpha
, donde alpha > 0
. Usted ve, este esquema es bastante general, por lo que debe experimentar.
¡Bienvenido a Stack Overflow!Al hacer su pregunta, es demasiado vaga para obtener una respuesta particularmente buena. ¿Con qué restricciones específicas estás operando? ¿Qué podemos asumir sobre la estructura del mundo? Cuantos más detalles proporciones, mejor podremos ayudar. – templatetypedef
¿La ruta negra está completamente disponible antes del primer movimiento? O bien, ¿los puntos negros están disponibles gradualmente a medida que avanza el tiempo, y la línea roja debe seguir lo más posible el punto negro recién descubierto? La primera opción es preferible. – Dialecticus
@Dialecticus Creo que al menos parte de la línea negra debe estar disponible antes de que pueda comenzar a dibujar una línea roja, sin embargo, debería poder dibujar una línea roja antes de que termine el dibujo del negro. @ templatetypedef No puedo pensar en ninguna restricción, estoy tratando de simular un vuelo que seguiría una trayectoria dibujada a mano, pero tratando de simular la inercia (un radio mínimo que el objeto puede cambiar) – orko