Types of Boids
The public and protected methods and data of the Boid
class and its PredatorBoid and PreyBoid subclasses are shown in Figure 22-6.

Figure 22-6. The Boid class and subclasses
Boid represents a boid using a BranchGroup, TransformGroup, and BoidShape (a Shape3D node). The TransformGroup moves the boid about in the scene, and the BranchGroup permits the boid to be removed from the scene (e.g., after being eaten). Only a BranchGroup can be detached from a scene graph. The subgraph is built in the Boid() constructor:
private TransformGroup boidTG = new TransformGroup(); // global
public Boid(...)
{ // other initialization code, and then ...
// set TG capabilities so the boid can be moved
boidTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
boidTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
addChild(boidTG); // add TG to Boid BranchGroup
// add the boid shape to the TG
boidTG.addChild( new BoidShape(boidColour) );
} // end of Boid()Boid Movement
The most important attributes for a boid are its current position and velocity. These are set to random values (within a certain range) in the Boid constructor:
// globals
protected Vector3f boidPos = new Vector3f();
protected Vector3f boidVel = new Vector3f();
// code in the Boid constructor
boidPos.set(randPosn(),(float)(Math.random()*6.0), randPosn());
boidVel.set( randVel(), randVel(), randVel());The moveBoid() method ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access