trensim.comSimulación Ferroviaria
   

duda Call( "GetCurvature")

Foro destinado a la discusión de aspectos relacionados con la creación de scripts en RailWorks.

Moderador: Moderadores

duda Call( "GetCurvature")

Notapor blas_dani » Mar Ene 22, 2013 9:33 pm

Hola:

Según lo que he leido por ahí la función Call( "GetCurvature") nos retorna un valor que indica la curvatura del vehiculo en un momento dado. Si la curva es a la izquierda, el valor será negativo y si es a la derecha, positivo.

Tengo un trazado en forma de cuadrado en el que siempre se gira a la izquierda, en el sentido de la marcha, pues bien, me salen valores positivos y negativos, cosa que no entiendo. Deberian ser siempre valores negativos ya que el giro es a la izquierda.
El codigo es muy simple y sólo grabo en un archivo el valor que devuelve Call( "GetCurvature")

Una explicación a los valores positivos girando a la izquierda podria ser que tengo la locomotora 'girada' respecto a su pivot, que vamos en sentido inverso. De hecho al colocarla en via y poner el maquinista, éste me aparece en sentido contrario (mirando hacia el fondo del hangar) y he de girar el vehiculo en el editor de escenarios. Pero lo que no me explico es que aparezcan valores de diferente signo.

Podria ser por algún error en la definición de la via? o porque voy en sentido incorrecto en algun tramo de la via?

Código: Seleccionar todo
function Update (time)

  gTiempo = Call ("*:GetSimulationTime",0 )

  if gTiempo > gTiempoNuevo then
 
    gCurvature = Call( "GetCurvature") * 10
   SalidaDatos()
 
    gTiempoNuevo = gTiempo + 0.1 
 
  end   

end


Saludos.
Avatar de Usuario
blas_dani
 
Mensajes: 2863
Registrado: Jue Sep 11, 2003 1:00 pm
Ubicación: Barri de Gràcia. Barcelona

Re: duda Call( "GetCurvature")

Notapor Repo » Mar Ene 22, 2013 11:54 pm

Efectivamente, el signo del valor de GetCurvature no sirve para establecer la dirección de la curva porque como tú bien sospechas, eso va a depender de la dirección interna que tengan los tramos de vía que pueden ir variado dependiendo de como el creador de la ruta ha tirado esos tramos.

Para establecer hacia que lado se va girando se deben colocar 2 child objects, uno en cada extremo del vehículo, y mediante la función GetNearPosition ir obteniendo las coordenadas de de esos child objects con las cuales luego, y mediante un complejo cálculo trigonométrico, obtener la dirección por donde se va saliendo de la recta, de la tangente en este caso.

Yo lo conseguí de ese modo en el Acela Express para poder configurar el lado de balanceo correcto.

Se que suena un poquito difícil, pero si te animas te paso las rutinas con las ecuaciones ya escritas, solo tendrías que configurar tus objetos con los nombres que yo he utilizado y debiera funcionar.

Ya me contarás.

Saludos.
Imagen
Avatar de Usuario
Repo
 
Mensajes: 1198
Registrado: Mar Oct 11, 2005 4:27 pm
Ubicación: Santiago de Chile

Re: duda Call( "GetCurvature")

Notapor blas_dani » Mié Ene 23, 2013 8:01 am

Hola Repo:

Pues si, necesito resolver esa cuestión. Ya te comentaré que pretendo hacer.
Ya veo que hay que usar la imaginación para resolver ciertas cosas ejeje..

Saludos.
Avatar de Usuario
blas_dani
 
Mensajes: 2863
Registrado: Jue Sep 11, 2003 1:00 pm
Ubicación: Barri de Gràcia. Barcelona


Volver a LUA Scripting RW

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados