Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  

AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows

AspAutocadCDot netExcelFox proHtmlJava
LinuxMathcadPhotoshopPhpSqlVisual studioWindowsXml

Complexity theory


+ Font mai mare | - Font mai mic


Trimite pe Messenger
Text fields
The new AWT: The new event model
Alternatives to action
Java programming guidelines
Bitwise operators
Creating windows and applets
Relational operators
Performance: Locating the bottleneck

Complexity theory

This program was modified from code originally created by Larry O’Brien, and is based on the “Boids” program created by Craig Reynolds in 1986 to demonstrate an aspect of complexity theory called “emergence.”

The goal here is to produce a reasonably lifelike reproduction of flocking or herding behavior in animals by establishing a small set of simple rules for each animal. Each animal can look at the entire scene and all the other animals in the scene, but it reacts only to a set of nearby “flockmates.” The animal moves according to three simple steering behaviors:

Separation: Avoid crowding local flockmates.

Alignment: Follow the average heading of local flockmates.

Cohesion: Move toward the center of the group of local flockmates.

More elaborate models can include obstacles and the ability for the animals to predict collisions and avoid them, so the animals can flow around fixed objects in the environment. In addition, the animals might also be given a goal, which can cause the herd to follow a desired path. For simplicity, obstacle avoidance and goal-seeking is not included in the model presented here.

Emergence means that, despite the limited nature of computers and the simplicity of the steering rules, the result seems realistic. That is, remarkably lifelike behavior “emerges” from this simple model.

The program is presented as a combined application/applet:


// Demonstration of complexity theory; simulates

// herding behavior in animals. Adapted from

// a program by Larry O'Brien

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

import java.util.*;

class Beast

public void step()


// Rule 1: Match average speed of those

// in the list:

currentSpeed = totalSpeed / seen.size();

// Rule 2: Move towards the perceived

// center of gravity of the herd:

currentDirection =

totalBearing / seen.size();

// Rule 3: Maintain a minimum distance

// from those around you:

if(distanceToNearest <=





// Make the beast move:

x += (int)(Math.cos(currentDirection)

* currentSpeed);

y += (int)(Math.sin(currentDirection)

* currentSpeed);

x %= field.xExtent;

y %= field.yExtent;

if(x < 0)

x += field.xExtent;

if(y < 0)

y += field.yExtent;


public float bearingFromPointAlongAxis (

int originX, int originY, float axis)



// Just subtract the axis (in radians):

return (float) (axis - bearingInRadians);

} catch(ArithmeticException aE)


return (float) Math.PI;



public float distanceFromPoint(int x1, int y1)

public Point position()

// Beasts know how to draw themselves:

public void draw(Graphics g)


public class FieldOBeasts extends Applet

implements Runnable

beasts =

makeBeastVector(numBeasts, uniqueColors);

// Now start the beasts a-rovin':

thisThread = new Thread(this);



public void run()

try catch(InterruptedException ex)

repaint(); // Otherwise it won't update



Vector makeBeastVector(

int quantity, boolean uniqueColors)




new Beast(this, x, y, direction, speed,

new Color(r,g,b)));


return newBeasts;


public Vector beastListInSector(Beast viewer)


return output;


public void paint(Graphics g)


public static void main(String[] args)


frame.add(field, BorderLayout.CENTER);






} ///:~

Although this isn’t a perfect reproduction of the behavior in Craig Reynold’s “Boids” example, it exhibits its own fascinating characteristics, which you can modify by adjusting the numbers. You can find out more about the modeling of flocking behavior and see a spectacular 3-D version of Boids at Craig Reynold’s page

To run this program as an applet, put the following applet tag in an HTML file:





<param name=xExtent value = '640'>

<param name=yExtent value = '480'>


Politica de confidentialitate



Vizualizari: 384
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2022 . All rights reserved

Distribuie URL

Adauga cod HTML in site