We saw a program that had a double pendulum called the chaos pendulum and my girlfriend said I should try and make it, so I had a quick play in quickbox2d. It was being used as an example of chaotic looking movement that wasn’t random. Here’s a real one.
and here’s the flash on, it’s not as good but box2d does an interesting job.
let’s test putting some code on here.. then you need to get quickbox2d…
import com.actionsnippet.qbox.*;
stage.frameRate = 60;
var sim:QuickBox2D = new QuickBox2D(this);
var $x:Number = 9
var $y:int = 4
var $length:int = 5
var $radius:Number = 0.5
var pin_to:QuickObject = sim.addBox({x:$x, y:$y, width:0.5, height:0.25,density:0, maskBits:0x0008 } );
var top_pendulum:QuickObject = sim.addBox({x:$x, y:$y+($length * 0.5), height:$length,width:1.5,friction:0,restitution:0 } );
var bottom_pendulum:QuickObject = sim.addBox({x:$x, y:$y + ( $length * 1.3 ), height:$length,width:0.75,friction:0,restitution:0 } );
//SET UP JOINTS
sim.addJoint( {type:"revolute",a:pin_to.body,b:top_pendulum.body,collideConnected:false, x1:$x, y1:$y, x2:$x, y2:$y } );
sim.addJoint( {type:"revolute",a:top_pendulum.body,b:bottom_pendulum.body,collideConnected:false, x1:$x, y1:$y+( $length * 0.9 ), x2:$x, y2:$y+$length-0.25 } );
sim.start();
sim.mouseDrag();
//ADD RANDOM ANGULAR VELOCITY ON CLICK
//JUST SETTING THE bottom_pendulum SEEMS TO WORK
stage.addEventListener( MouseEvent.CLICK, clicked );
function clicked( e:MouseEvent ):void
{
bottom_pendulum.body.SetAngularVelocity( 10000-Math.random() * 20000 )
}
stage.frameRate = 60;
var sim:QuickBox2D = new QuickBox2D(this);
var $x:Number = 9
var $y:int = 4
var $length:int = 5
var $radius:Number = 0.5
var pin_to:QuickObject = sim.addBox({x:$x, y:$y, width:0.5, height:0.25,density:0, maskBits:0x0008 } );
var top_pendulum:QuickObject = sim.addBox({x:$x, y:$y+($length * 0.5), height:$length,width:1.5,friction:0,restitution:0 } );
var bottom_pendulum:QuickObject = sim.addBox({x:$x, y:$y + ( $length * 1.3 ), height:$length,width:0.75,friction:0,restitution:0 } );
//SET UP JOINTS
sim.addJoint( {type:"revolute",a:pin_to.body,b:top_pendulum.body,collideConnected:false, x1:$x, y1:$y, x2:$x, y2:$y } );
sim.addJoint( {type:"revolute",a:top_pendulum.body,b:bottom_pendulum.body,collideConnected:false, x1:$x, y1:$y+( $length * 0.9 ), x2:$x, y2:$y+$length-0.25 } );
sim.start();
sim.mouseDrag();
//ADD RANDOM ANGULAR VELOCITY ON CLICK
//JUST SETTING THE bottom_pendulum SEEMS TO WORK
stage.addEventListener( MouseEvent.CLICK, clicked );
function clicked( e:MouseEvent ):void
{
bottom_pendulum.body.SetAngularVelocity( 10000-Math.random() * 20000 )
}