Crea un botón con rótulo: Reiniciar 

y  con el siguiente guion (al hacer clic):

ZoomAcerca(1)
Valor(P, P0)
Valor(V, V0)

Explicación del guion:

# Borramos los rastros que hubiera:
ZoomAcerca(1)

# Devolvemos P a la posición de partida P0:
Valor(P, P0)

# Asignamos al punto V el valor inicial V0:
Valor(V, V0)

Nota: las coordenadas de V0 y V serán
posteriormente las componentes de los
vectores v0 y v, respectivamente.

Valor(P, Si(abs(P - Ptan)<0.2, Ptan, P))
Valor(V, Si(P==Ptan, V' - Ptan, V))
Valor(P, P + 0.1 V)

Explicación del guion:

# Cuando P esté “suficientemente próximo” a Ptan, pasa a coincidir con Ptan:
Valor(P, Si(abs(P - Ptan)<0.2, Ptan, P))

# Cuando P coincida con Ptan, V pasa a ser V'-Ptan:
Valor(V, Si(P==Ptan, Q - Ptan, V))

# P avanza un paso en dirección v:
Valor(P, P + 0.1 V)

paso = 1 (slider from 1 to total)
instrucciones: {"Crea 4 puntos libres y renómbralos O, P, V y V0 (Vcero).\\nOculta V y V0.", "Crea la circunferencia c de centro O y radio 4.\\nSi es necesario, recolócala para visualizarla entera.", "Coloca un punto P0 (Pcero) en esa circunferencia.\\nCrea un botón como se indica en el recuadro amarillo.", "Crea el vector v0=Vector(V0). Posiciona v0 en P0\\ny haz que apunte al interior del círculo.", "Crea el vector v=Vector(V). \\nPosiciona v en P y pulsa el botón Reiniciar.", "Crea la recta dir que pasa por P con dirección v:\\ndir = Recta(P, v)", "Crea Ptan, el 2º punto de intersección de esa recta con c:\\nPtan = Interseca(dir, c, 2)", "Crea rtan, la recta tangente a c por Ptan:\\nrtan = Tangente(Ptan, c)", "Crea V', reflejo de Ptan+V en rtan:\\nV' = Refleja(Ptan+V, rtan)", "Crea un deslizador cualquiera y asígnale el guion (al actualizar)\\nque se indica en el recuadro amarillo.", "Activa el rastro de P, anima el deslizador,\\noculta los elementos innecesarios y mejora la estética."}
texto = Element(instrucciones, paso)
total = Length(instrucciones)
fondo: {Polygon[Corner[1], Corner[2], Corner[2] + (0, 1.5), Corner[1] + (0, 1.5)]}
pasoActual: "Paso " + paso + " de " + total + ""