Tu trabajo es animar esta ilusión circular . Parece que los puntos giran dentro del círculo, pero en realidad solo se mueven en línea recta.
Criterios
- El resultado tiene que ser animado. La forma en que haces la animación es irrelevante, puede generar un
.gif
, puede dibujar en una ventana, en la pantalla de algún dispositivo o lo que sea. - Este es un concurso de popularidad, por lo que es posible que desee agregar algunas características adicionales a su programa para obtener más votos a favor, por ejemplo, variando el número de puntos.
- El ganador es la respuesta válida más votada 7 días después de la última presentación válida.
- Las respuestas que realmente implementarán puntos que se mueven en línea recta y no al revés son más bienvenidas
Respuestas:
Python 3.4
Usando el módulo de tortuga. Las tortugas son de diferentes colores y siempre están orientadas en la misma dirección, por lo que se puede ver fácilmente que se mueven a lo largo de líneas rectas simplemente al enfocarse en una de ellas. A pesar de esto, la ilusión circular sigue siendo fuerte.
La ilusión todavía parece bastante fuerte incluso con solo 3 o 4 tortugas:
La velocidad de fotogramas se reduce considerablemente para todos estos ejemplos de GIF, pero no parece restar valor a la ilusión. Ejecutar el código localmente da una animación más suave.
A modo de contraste, aquí hay algunos que realmente rotan:
... o ellos?
El código se puede ejecutar con 5 argumentos opcionales: población, resolución, bucles, volteo y líneas.
population
es la cantidad de tortugasresolution
es la resolución de tiempo (número de cuadros de animación por repetición)loops
determina cuántas veces las tortugas vuelven sobre sí mismas. El valor predeterminado de 1 da un círculo estándar, otros números impares dan ese número de bucles en la cadena de tortugas, mientras que los números pares dan una cadena de tortugas desconectadas en los extremos, pero aún con la ilusión de movimiento curvo.flip
si no es cero, las tortugas cambian de dirección para su viaje de regreso (como lo sugiere aslum para que nunca se muevan hacia atrás). Por defecto, mantienen una dirección fija para evitar la distracción visual en los puntos finales.lines
si no es cero muestra las líneas en las que se mueven las tortugas, para mantener la coherencia con la imagen de ejemplo en la pregunta.Ejemplos con
flip
set, con y sinlines
. He dejado mi ejemplo principal anterior sin voltear, ya que prefiero no tener el salto esporádico, pero el borde del círculo se ve más suave con todas las tortugas alineadas, por lo que la opción está allí para que las personas elijan el estilo que prefieran al correr el código.Puede que no sea obvio de inmediato cómo se produjeron todas las imágenes anteriores a partir de este mismo código. En particular, la imagen más arriba que tiene un bucle externo lento y un bucle interno rápido (el que parece un cardioide que alguien cayó accidentalmente). He ocultado la explicación de este a continuación en caso de que alguien quiera retrasar el descubrimiento mientras experimenta / piensa.
Al probar diferentes números, encontré algunas de estas distorsiones más interesantes que los originales más simétricos, así que quería incluir uno aquí ...
fuente
C
Resultado:
fuente
system("cls"); // xD
SVG (sin Javascript)
Enlace JSFiddle aquí
fuente
http://jsfiddle.net/z6vhD/13/
intervaltime
cambia el FPS (FPS = 1000 / intervalo de tiempo).balls
cambia las # bolas.maxstep
ajusta los # pasos en un ciclo, cuanto más grande es el 'más suave'. 64 debe ser lo suficientemente grande donde parezca suave.Modelado como un círculo en movimiento, en lugar de mover las bolas a lo largo de las líneas, pero el efecto visual (¿debería ser?) Igual. Parte del código es bastante detallado, pero esto no es código golf, así que ...
fuente
requestAnimationFrame
en su lugar . JSFiddle modificado usandorequestAnimationFrame
.Animaciones CSS
Una solución que usa solo animaciones CSS (ver animación en JSFiddle ; tenga en cuenta que agregué los prefijos específicos del navegador en el violín para que pueda funcionar en las versiones más recientes).
fuente
-webkit-
para Webkit y-moz-
para Mozilla) Aquí está el mismo violín con prefijos actualizados: jsfiddle.net/nBCxz/3Mathematica
Aquí hay una presentación bastante sencilla.
Si llamas
animateCircle[32]
, obtendrás una animación ordenada con 32 líneas y círculos.Es completamente sencillo en Mathematica, pero tuve que limitar un poco la cantidad de cuadros para el GIF.
¿Qué sucede si pones dos discos en cada línea? (Es decir, agregar
Disk[-Sin[t + phase]*line, 0.05]
a la lista dentro deMap
.)También puede ponerlos 90 ° fuera de fase (usar en
Cos
lugar de-Sin
)fuente
{t, 0, 2 \[Pi]}
para{t, 0, 2 \[Pi] - 2 \[Pi]/60, 2 \[Pi]/60}
que no haya dos marcos idénticos y cambiarAnimate
aTable
. Entonces podrás exportar GIF.Animate
). SinTable
embargo , intentaré usar de nuevo.Gráfico circular VBScript + VBA + Excel
Esto hará que su procesador llore un poco, pero se ve bonito y creo que funciona de acuerdo con las especificaciones. Utilicé la respuesta de @ Fabricio como guía para implementar el algoritmo de movimiento circular.
EDITAR: Hizo algunos ajustes para mejorar la velocidad de renderizado.
El código:
fuente
Excel, 161 bytes
A2 (período) determina el tiempo (segundos) para una 'revolución' completa.
Cada celda dentro de las líneas es un condicional básico relacionado con el valor de la línea correspondiente. Por ejemplo, K2 es:
Y la celda central (K9) es:
Forzó la animación manteniendo presionado 'eliminar' en una celda aleatoria para activar constantemente una actualización.
Sé que este es un tema antiguo, pero la actividad reciente lo llevó a la cima y por alguna razón me pareció atractivo. Hace mucho tiempo oyente pcg, primer llamador. Sé gentil.
fuente
Solo por diversión con PSTricks.
fuente
Fortran
Cada cuadro se crea como un archivo gif individual usando el módulo gif Fortran en: http://fortranwiki.org/fortran/show/writegif
Luego hago trampa un poco usando ImageMagick para fusionar los gifs individuales en un gif animado.
ACTUALIZACIÓN: Establecer nuevo = .true. para obtener lo siguiente:
fuente
Versión obligatoria de C64 .
Copie y pegue en su emulador favorito:
fuente
Una versión compacta de JavaScript, que cambia la configuración predeterminada a algo diferente
http://jsfiddle.net/yZ3DP/1/
HTML:
JavaScript:
fuente
bw=10
). Edite su respuesta para mostrar su código. Ah, y mientras lo hace, hay un error que debe solucionar: reemplacetime+i*0.39*0.29
contime+i*Math.PI/num
en los cálculos trigonométricos para que las coordenadas se calculen correctamente para cualquier valor denum
. (PS actualizado JSFiddle aquí . Y bienvenido a codegolf.stackexchange.com)Mi opinión sobre Elm . Soy un principiante total que felizmente aceptaré relaciones públicas para mejorar esta solución ( GitHub ):
Tenga en cuenta que esta presentación realmente mueve puntos en líneas rectas:
fuente
Second Life LSL
inicio de la imagen alfa de la tortuga (haga clic con el botón derecho debajo para guardar la imagen)
final de la imagen alfa de la tortuga (haga clic con el botón derecho arriba para guardar la imagen)
construyendo el objeto:
haga un tamaño de cilindro de cebado raíz <1, 1, 0.01> corte 0.49, 0.51, color < 0, 0, 0>
haga la descripción de este cilindro "8,1,1,1" sin las comillas (muy importante)
haga un cilindro, llámelo "cyl", color <0.25, 0.25, 0.25> alpha 0.5
duplica el cyl 48 veces
haz una caja, nómbrala "esfera", color <1, 1, 1> transparencia 100 excepto por la transparencia superior 0
pon la textura de tu tortuga en la cara 0 de la caja, la tortuga debe mirar + x
duplicar la caja 48 veces
seleccione todas las cajas y los cilindros, asegúrese de seleccionar el cilindro raíz al final,enlace (control L)
ponga estos 2 scripts en la raíz:
fuente