¿Cuáles son algunos métodos para representar las vías del tren?

21

Investigué esto hace un tiempo para un pequeño proyecto, pero no llegué demasiado lejos. Me gustaría crear un pequeño programa que permita al usuario dibujar una vía de tren y luego permita que un "tren" siga dicha vía en un plano 2D. Me gustaría que la pista tenga una forma bastante libre y resulte en una línea suave y agradable. Jugué con splines cúbicos y obtuve resultados decentes, pero tuve muchos problemas para que el tren siguiera el spline. También tuve muchos problemas para crear varias vías y cambiar un tren de una a otra.

¿Alguien tiene consejos, artículos o código fuente que pueda ayudarme a resolver algo? ¡Gracias!

Hokiecsgrad
fuente
3
Sería útil si describiera cuáles son sus problemas que encuentra.
Rachel Blum
1
Me encantaría ver una demostración de tu juego.
cenizas999

Respuestas:

10

Al dibujar pistas o carreteras, siempre quiero comenzar con splines. Sin embargo, la última vez que tuve problemas con las splines (como menciona Rachel Blum , el movimiento suave en una spline es desagradable tanto por la parametrización como por las distancias), alguien me sugirió que muchas carreteras reales usan arcos circulares en lugar de splines. La curvatura constante hace que sea fácil calcular distancias y moverse a una velocidad constante a lo largo de ellas. Además, se ven bien.

Empecé a jugar con caminos que alternaban entre arcos circulares y líneas rectas. Es similar al enfoque de Will , pero los arcos circulares tienen un radio variable. Estaba bastante contento con este enfoque, pero no terminé haciendo nada con él. Pruebe esta demostración (Flash): los controles de la izquierda son para splines y los controles de la derecha son para un arco circular (use el control deslizante para controlar la longitud y el control de arrastre para controlar el ángulo). Haga una curva muy apretada arrastrando el final del camino para ver cuánto más bonito se ve el arco circular.

Alternativamente, si quieres jugar con cuadrículas (sugerido por Iain ), intenta dibujar de borde a borde en lugar de cuadrado a cuadrado. Aquí hay una demostración (applet de Java).

amitp
fuente
7

El uso de estrías hermitas adecuadas puede conducir a curvas cerradas y verse como un poco sin entrenar:

usando splines hermitas

He tenido resultados mucho más agradables al tratar el camino como líneas rectas que unen círculos en las articulaciones:

ingrese la descripción de la imagen aquí

El truco consiste en calcular las tangentes internas y externas de los círculos de juntas adyacentes y calcular el devanado de cada junta para que pases por el lado derecho.

Y, en la lógica de colocación de pistas, evite las auto intersecciones de ruta o conviértalas en uniones :)

Aquí hay un video que utiliza este enfoque: http://www.youtube.com/watch?v=PAVksn4btKU

Será
fuente
6

Puede intentar dejar que el usuario cree las pistas con espirales de Cornu . Encontrará literatura casi nula al respecto en línea, porque las splines son la forma de facto de representar curvas en software. No obstante, son la forma en que las vías de ferrocarril reales están marcadas. Raph Levien ha hecho mucho trabajo para popularizarlos .

munificente
fuente
2

Podría intentar un enfoque basado en la cuadrícula donde cada cuadrado se puede vincular a uno o más cuadrados. Entonces podría tener algunas piezas que cubran múltiples cuadrados, para crear algunas curvas más suaves. Básicamente modular, como un juego de trenes.

Iain
fuente
1
Intenté algo similar a un enfoque basado en la cuadrícula. Básicamente, creé piezas de seguimiento para que pudieras hacer clic en ellas juntas de manera de dar un poco más de libertad que las cuadrículas simples. Concepto muy similar, creo. Funcionó bien, pero dibujar las pistas seleccionando la pieza apropiada cada vez que apestaba.
hokiecsgrad
2

Probé varias técnicas para implementar vías de ferrocarril, y descubrí que las secciones de círculos y líneas rectas daban el mejor resultado y las matemáticas más fáciles para ejecutar el tren.

Desafortunadamente, también hizo que el trazado sea bastante complicado y no muy intuitivo, ya que pequeños movimientos de los puntos de control enviarán el track en una dirección completamente diferente.

La matemática para decidir cómo colocar la pista se vuelve bastante complicada, ya que agrega más puntos de control.

Tengo una breve demostración en http://www.dailymotion.com/video/xgl2kp_openrailz-tech-demo-3_videogames .

pequeño_duck
fuente
-1

Tal vez esto sea útil:
Comportamientos de dirección para personajes autónomos: http://www.red3d.com/cwr/steer/

Gregory
fuente
¿No están los trenes cautivos a sus vías?
Will
@Will: hay una subsección (que no he leído) sobre la ruta siguiendo red3d.com/cwr/steer/PathFollow.html
o0 '.
Sí, pero un tren en una vía solo puede cambiar la velocidad. Su camino está dictado por la pista?
Will