Skip to main content

Un poco más de flocking

Después de un par de tardes trabajando en el tiempo libre sobre la demo de flocking he consegido ya algo un poco más respetable.

Finalmente he conseguido superar algunos de los problemas que me he encontrado a la hora de implementar el algoritmo correctamente. Entiendo correctamente al hecho de que los componentes de la manada sólo tomen como referencia a sus vecinos más cercanos y no al conjunto global como estaban haciendo hasta ahora.

De todos modos, esta implementación aún puede mejorarse muchísimo, añadiendo acciones de no comportamiento, dimensión Z y sobre todo, dandole un pequeó enfoque de juego que aproveche el algoritmo. Si tengo tiempo intentaré darle un par de vuelta más. De momento aquí dejo lo que tengo hecho.


Adjunto el ejecutable en formato zip.

flocker2x


El video del ejemplo:

Y los algoritmos en pseudocódigo.

REGLA DE COHESIÓN:

 PROCEDURE rule1(boid bJ)
Vector pcJ
FOR EACH BOID b
IF b != bJ THEN
pcJ = pcJ + b.position
END IF
END
pcJ = pcJ / N-1
RETURN (pcJ - bJ.position) / 100
END PROCEDURE

REGLA DE REPULSIÓN:

 PROCEDURE rule2(boid bJ)
Vector c = 0;
FOR EACH BOID b
IF b != bJ THEN
IF |b.position - bJ.position| < c =" c">J.position)
END IF
END IF
END
RETURN c
END PROCEDURE

REGLA DE ALINEAMIENTO:

 PROCEDURE rule3(boid bJ)
Vector pvJ
FOR EACH BOID b
IF b != bJ THEN
pvJ = pvJ + b.velocity
END IF
END
pvJ = pvJ / N-1
RETURN (pvJ - bJ.velocity) / 8

END PROCEDURE

Comments

Popular posts from this blog

Himno de Teleco

Himno de la carrera de ingeniería de Telecomunicaciones, al más puro estilo Dragon Ball. Para echarte unas risas. Aviso de antemano: el humor de la canción está dirigido exclusivamente a estudiantes de Telecomunicaciones, ingenieros de ídem o a cualquiera que tenga unos conocimientos básicos (universitarios) sobre señales y sistemas. Vamos con Payán, todos a la vez a buscar con ahínco un sistema de transmisión. Sin duda será, convencido estoy, lineal, invariante y sin distorsión. Este mundo es como un filtro ideal donde hay escondido un suspenso en él. Como un filtro multicolor con un cero de transmisión, como una variable aleatoria con toda su gran inversión, el proceso empieza ahora, ¡vamos a filtrar, filtrar, filtrar, filtrar, filtrar! Hallaremos su covarianza y también su correlación, con la respuesta al impulso hallaremos convolución, el filtro sin distorsión será al fin nuestro, oh. Integrémoslo por Fourier, unidos a Gauss no hay que temer pues tenemos el DSP, ¡que no sirve p...

Los Captchas y el Profeta

Ultimamente hay una palabra "nueva" en Internet que me ha llamado la atención. Se trata de Captcha. Es un tipo de prueba que intenta dificultar la automatización de ciertas tareas en Internet, obligando a un usuario humano a realizarlas. Su intención es dificultar el abuso de estos recursos, en forma de spam en foros públicos, la creación automática de cuentas de correos o cualquier otra actividad automatizada masiva. La típica prueba de captcha consiste en que el usuario introduzca un conjunto de caracteres que se muestran en una imagen distorsionada que aparece en pantalla. Se supone que una máquina no es capaz de comprender e introducir la secuencia de forma correcta por lo que solamente el humano podría hacerlo. Lo más curioso de todo esto es el origen del nombre. Captcha proviene del acrónimo Completely Automated Public Turing test to tell Computers and Humans Apart, o sea, Prueba de Turing pública y automática para diferenciar a máquinas y humanos. Esta prueba también s...

Cosas que los programadores prefieren al dinero

Muchos de los desarrolladores que conozco llevan programando desde el instituto. Tanto si era construyendo juegos en modo texto en C como creando una aplicación para el banquillo del equipo de fútbol de la escuela en Visual Basic, es algo que hacían por el desafío y, claro, por las chicas. Las mujeres aman a un hombre que puede hablar en ensamblador con su 8086. Los graduados universitarios se enfrentan a una triste realidad cuando abandonan el vientre protector de la universidad y tienen que conseguir su primer empleo. Muchos de mis amigos encontraron trabajos donde pagaban una miseria al salir de la universidad, y les asombraba que la diferencia entre salarios iniciales de ingenierías y salarios iniciales de informática era casi el doble. Pero la mayoría de los ingenieros en mi clase no se hicieron ingenieros por el dinero; lo hicimos porque teníamos un profundo deseo de trastear e impresionar a nuestros amigos. ¿Ya os he dicho lo de las chicas? El dinero es un factor de motivación p...