Esta página está en construcción: perdonen los errores, repeticiones y temas inacabados.
 
This page is being developed: I am sorry for errors, duplications  and unfinished subjects.
 
 
Proyecto Danzante. Simulación completa de JCISER (incluido en Danzante)

 

A continuación presentamos la secuencia completa de simulación de toda la aplicación descrita en el paper JCISER. Como hemos visto antes, partimos de una moción doble, grabación en archivo de extensión .mc2, en la cual, calibramos con 50 cuadros a partir de 140 (elegido por proporcionar unas longitudes de huesos relativamente estables. A continuación optimizamos esos mismos 50 cuadros con ol una de las mociones giradas según el resultado de la calibración citada. a continuación optimizamos los siguientes 50 cuadros, con esa misma giro de calibración. Finalmente vemos la película de  los esqueletos optimizados para cada cuadro. Para comprobar y medir, su comportamiento suave.

       Public Sub simulacion_algoritmo_paper_JCISER()
 
             Dim text0 = crlf
             text0 = text0 + "SIMULACION GENERAL DEL ALGORITMO JCISER"
             '            Call informar0(text0 + crlf)
             Call informar0(text0 + crlf)
 
             '            Dim todo_auto = 1
             '            If todo_auto = 1 Then
             'If nofi$ = "" Then
             'nofi$ = "D:\Danzante\Mociones\0.ARCADE.Viernes 1.mc2"
             'openfile_Mcn_feten(nofi$)
             'archivos = 1
             'TextBox1.Text = nofi$ + "   " + noticia
             'TextBox4.Text = 140
             'TextBox5.Text = 189
             'End If
 
             'E'nd If
 
             Dim prin, fin, num As Short
             Call vmociones.calcula_limites(prin, fin, num)
             Dim prin0 = prin
             Dim fin0 = fin
 
             'Tras cambiar? referencia
             'copio_mociones_short_a_double()
             'vmociones.Button63.BackColor = System.Drawing.Color.Tomato
 
             Dim mocion_tranf As Byte = 0
 
             Dim prini, fini     ' = prin + num
 
             prini = prin
             ' To fin Step num
             fini = prini + num
             'letre = letre + "Momentos 0, 1: " + Str(momentos_mociones(0, Val(vmociones.TextBox1.Text))) + _
             ' Str(momentos_mociones(0, Val(vmociones.TextBox1.Text))) + crlf '+ crlf  '
 
             Dim paso_a_refe_0 = 0
 
             '¡==============================================================================
             'FUERA DEL ALGORITMO, SOLO EN LA SIMULACION:
             '      Public Function copio_bloque_mocion_refe(mocion_origen As Byte, mocion_destino As Byte,
            referencia_origen As     Byte, referencia_destino As Byte, ByVal prin As Short, ByVal fin As Short) As Double
            'devuelve distancia_2  Point4D()
             If paso_a_refe_0 = 1 Then
                    If numero_arti_referencia <> 0 Then
                           For kkk = 0 To numero_camaras - 1
                                  Call copio_bloque_mocion_refe(kkk, kkk, numero_arti_referencia, 0, prini, fini) 
             'devuelve distancia_2  Point4D()
                           Next
                    End If
             End If
             '¡==============================================================================
 
             'Tras cambiar? referencia
             copio_mociones_short_a_double()
             vmociones.Button63.BackColor = System.Drawing.Color.Tomato
 
             '¡==============================================================================
             'ESTO SIMULA LA CALIBRACION CON EL PRIMER BLOQUE
             '¡==============================================================================
             Call reune_bloque_mociones_giro_escala_traslacion(mocion_tranf, prini, fini, letre, matriz_estimacion_total)
             'longitud basada en mociones separadas y media de huesos
             Call longitudes_dos_mociones(prini, fini, 0) 'no representa
             'en dos se han mppromediado            
             'longitud basada en mociones ya reunidas (ver01) y, promedio de location of articulaciones homólogas
                y medida entondes de esqueleto.
             'lo pasa a 2
            
            Call promedia_mociones(prini, fini, numero_arti_referencia, 3, 1, 2)
             '            'ha de ser la ultima porque es la que se usa en OPTIMIZACION
             Call longitudes_media_mociones_reunidas(prini, fini, 2)     'no representa
'¡==============================================================================
'IMPORTANTE SOBRE FIAB ILIDAD Y Coeficientes WW al optimizar.
'Al REUNIR o ROTAR NO modificamos la os coeficientes de fiabiliada de captacion.
' PERO
'SÍ modificamos las cercanias de proyecciones en pantalla.
'Por lo TANTO, los cordicientes ww
'HAN DE CALCULARSE en qskel
'ANTES de realizar la ROTACION de Bloque (a la reunion no le afecta)
'Pero sí al RETOCA
'por lo tanto, NADA de BLOQUES
'O bien CALCULAMOS ww en BLOQUE antes de ROTAR y de RETOCAR
'¡==============================================================================
             '¡==============================================================================
             'ESTO SIMULA LA OPTIMIZACION DEL PRIMER BLOQUE (el mismo que survio para calibrar
             retoca_paper_los_cuadros_bloque(prini, fini)
             '¡==============================================================================
 
             'Hasta ahora hemos optimizado el bloque que sirvio para calibrar.
             ' No es extraño que el ajuste sea pequeño (puede ser erróneo!!)
 
             'Ahora conviwne simular la optimizacion en tiempo real. Para ello:
             '1. Rotamos siguiente bloque con la matriz R obtenida en la reunion previa
             '2. `promediamaos ambas  (pskel y qskel) AUNQUE DEBE SUSTITUIRSE POR el skel  :_opt del cuadro anterior
             '3. Optimizamos ese nuevo bloque
 
             'Como reunimos la mocion 0 hacia la 1, hacemos eso mismo con el nuevo bloque
             'Public Function rota_bloque_mocion_feten(prin, fin, m1, m2) 'As Point4D()
 
             'podemos recorrer todas la mocion en bloques de num
             'for
             prini = prin + num
             fini = prini + num
             '¡==============================================================================
             'FUERA DEL ALGORITMO, SOLO EN LA SIMULACION:
             '      Public Function copio_bloque_mocion_refe(mocion_origen As Byte, mocion_destino As Byte,
            referencia_origen As Byte, referencia_destino As Byte, ByVal prin As Short, ByVal fin As Short) As Double                
                'devuelve         distancia_2  Point4D()
             If paso_a_refe_0 = 1 Then
                    If numero_arti_referencia <> 0 Then
                           For kkk = 0 To numero_camaras - 1
                                 Call copio_bloque_mocion_refe(kkk, kkk, numero_arti_referencia, 0, prini, fini) 
             'devuelve distancia_2  Point4D()
                           Next
                    End If
             End If
             '¡==============================================================================
 
             '¡==============================================================================
             'ESTO SIMULA LA OPTIMIZACION USANDO las DISTANCIA de HUESOS y la MSTRIZ R que lleva Q a p obtenidas en laCALIBRACION
             '¡==============================================================================
 
             '¡==============================================================================
             'ESTAS OPERACIONES, PARA SIMULAR NEJOR, no DEBEn ser en Bloque, sino CUADRO A CUADRO
             'QUE ES COMO LLEGAN DESDE LAS CAMARAS EN TIEMPO REAL
             '¡==============================================================================
 
             '==============================================================================
             '1.
             'implementamos el paso de q=Rp*+t del articulo
             'la matriz estimacion toyal no es perfecta, solo parecida a la que se ontiene poco c poco acumylando
             'creo que ya lo es  NO
             matriz_libre = matriz_estimacion_total  'se emplea para rotar
             'matriz_libre = matriz_estimacion_total_global
             'mocion_tranf ha sido 0, que ha sido llevada a 3 y reunida allí con 1
             '      matriz_libre.Invert()
             'el promedio se almacena en 2
             'ESTO NO FUNCIONA BIEN (Sep 2016). Sale pequeño el esqueleto
 
             'Esto supone que se obtubo matriz_estimacion acercando mocion 0 a 3
             Dim mocion_rotada
             If roto_mocion_1 = 0 Then
                    'o una
                    mocion_rotada = mocion_tranf  'p sea m0
                    '      rota_bloque_mocion_feten(prini, fini, mocion_tranf, 3)         'As Point4D()
             Else
                    'u otra
                    'la nternativa
                    mocion_rotada = 1 - mocion_tranf
                    matriz_libre.Invert() ' = matriz_estimacion_total     'se emplea para rotar
             End If
             Dim mocion_no_rotada = 1 - mocion_rotada
 
             'rota m1 y lo almaceba en m2
             '      Public Function mocion_a_pseudoesqueleto_mocion(mocion As Byte, motor As Integer, referencia As Byte,
                     presenta As Byte) As Point4D()
             '      Public Function rota_bloque_mocion_feten(prin, fin, m1, m2) 'As Point4D()
             '            rota_bloque_mocion_feten(prini, fini, mocion_rotada, 3)            'As Point4D()
 
¡==============================================================================
'IMPORTANTE SOBRE FIAB ILIDAD Y Coeficientes WW al optimizar.
'Al REUNIR o ROTAR NO modificamos la os coeficientes de fiabiliada de captacion.
' PERO
'SÍ modificamos las cercanias de proyecciones en pantalla.
'Por lo TANTO, los cordicientes ww
'HAN DE CALCULARSE en qskel
'ANTES de realizar la ROTACION de Bloque (a la reunion no le afecta)
'Pero sí al RETOCA
'por lo tanto, NADA de BLOQUES
'O bien CALCULAMOS ww en BLOQUE antes de ROTAR y de RETOCAR
'¡==============================================================================

             'NUEVO. roto in situ

             rota_bloque_mocion_feten(prini, fini, mocion_rotada, mocion_rotada)              'As Point4D()
 
             'REVISAR
      
             text0 = text0 + "Para obtener q*=Rq+t ROTO Mocion" + Str(mocion_rotada) + " a mocion" + Str(3)
             '            Call informar0(text0 + crlf)
             Call informar(text0 + crlf)
             'Call informar0(text0 + crlf)
             '=============================================================
 
             'cpmo esta pero tocando 1 y 3, en luagr de 0 y 1
             'porque 3 es el transformado de 0
             ' archivos = 0
             'vmociones.Button4.BackColor = System.Drawing.Color.LightGray
 
             '2.
             'No indispesable el promedio, si se alamacena allí la anteriori. SI
             'se emplea la 2 pues para anterior o para promedio,
             Call promedia_mociones(prini, fini, numero_arti_referencia, 3, mocion_no_rotada, 2)
 
             'Call copio_bloque_mocion(3, mocion_rotada, numero_arti_referencia, prini, fini)
             'Call copio_bloque_mocion_D(3, mocion_rotada, prini, fini)
             'copio_mociones_double_a_short()  'dibujo
 
 
             vmociones.TextBox4.Text = prini
             vmociones.TextBox5.Text = fini
 
             'Call toca_mocion()
             'toca_mocion_feten(prini, fini)
 
             'ijo con calculos de ww
             'meter cercanias entre arti en pantallas
             'cuando se pueda, distinguir trackes from inferred
             '¡==============================================================================
             'ESTO SIMULA LA OPTIMIZACION DEL SIGUIENTE BLOQUE (el siguiente que sirvio para calibrar
             retoca_paper_los_cuadros_bloque(prini, fini)
 
             'copio_mociones_todas_double_a_short()  '0 y 1  dibujo
             copio_mociones_auxiliares_double_a_short()     '2 y 3  dibujo
 
             '¡==============================================================================
             '      Public Sub toca_fragmento_mociones_api(ByVal prin As Short, ByVal fin As Short, ByVal m0 As Byte, ByVal m1 As Byte)
             toca_fragmento_mociones_api(prini, fini, 2, 2)
 
 
 
 
redactado el 13 oct de 2016
 

 
Vuelta al Principio    Última actualización: martes, 18 de octubre de 2016    Visitantes:contador de visitas