import org.cove.flade.*; var psystem:ParticleSystem = new ParticleSystem(); psystem.setDamping(1.0); psystem.setGravity(0.0, 0.7); // cooefficient of restitution psystem.setKfr(0.1); // surface friction for particles psystem.setFriction(0.5); // line surfaces var sA:LineSurface = new LineSurface(new Vector(0, 100), new Vector(0, 300)); sA.setIsOrientH(false); psystem.addSurface(sA); var s0:LineSurface = new LineSurface(new Vector(0, 300), new Vector(183, 300)); psystem.addSurface(s0); var sB:LineSurface = new LineSurface(new Vector(799, 300), new Vector(799, 100)); sB.setIsOrientH(false); psystem.addSurface(sB); // circle surfaces var circA:CircleSurface = new CircleSurface(300, 370, 100); psystem.addSurface(circA); var circB:CircleSurface = new CircleSurface(445, 330, 50); psystem.addSurface(circB); var circC:CircleSurface = new CircleSurface(203, 300, 20); psystem.addSurface(circC); var circD:CircleSurface = new CircleSurface(665, 450, 200); psystem.addSurface(circD); var posX:Number = 100; var posY:Number = 190; var rectWidth:Number = 70; var rectHeight:Number = 30; var wheelSize:Number = 30; var strutRestLength = 5; // wheels var wheelA:Wheel = psystem.addWheel(posX - rectWidth, posY, wheelSize); var wheelB:Wheel = psystem.addWheel(posX, posY, wheelSize); var wheelC:Wheel = psystem.addWheel(posX + rectWidth, posY, wheelSize); var wheelD:Wheel = psystem.addWheel(posX + rectWidth * 2, posY, wheelSize); wheelA.setCoeffSlip(0.0); wheelB.setCoeffSlip(0.0); wheelC.setCoeffSlip(0.0); wheelD.setCoeffSlip(0.0); // bodies var rectA:Rectangle = psystem.addRectangle(new Vector(posX - rectWidth/2, posY), rectWidth, rectHeight); var rectB:Rectangle = psystem.addRectangle(new Vector(posX + rectWidth/2, posY), rectWidth, rectHeight); var rectC:Rectangle = psystem.addRectangle(new Vector(posX + rectWidth + rectWidth/2, posY), rectWidth, rectHeight); // wheel struts var conn1:SpringConstraint = psystem.addSpringConstraint(wheelA.wp, rectA.p3); conn1.setRestLength(strutRestLength); var conn1a:SpringConstraint = psystem.addSpringConstraint(wheelA.wp, rectA.p0); conn1a.setRestLength(strutRestLength); var conn2:SpringConstraint = psystem.addSpringConstraint(wheelB.wp, rectA.p2); conn2.setRestLength(strutRestLength); var conn2a:SpringConstraint = psystem.addSpringConstraint(wheelB.wp, rectA.p1); conn2a.setRestLength(strutRestLength); var conn3:SpringConstraint = psystem.addSpringConstraint(wheelB.wp, rectB.p3); conn3.setRestLength(strutRestLength); var conn3a:SpringConstraint = psystem.addSpringConstraint(wheelB.wp, rectB.p0); conn3a.setRestLength(strutRestLength); var conn4:SpringConstraint = psystem.addSpringConstraint(wheelC.wp, rectB.p2); conn4.setRestLength(strutRestLength); var conn4a:SpringConstraint = psystem.addSpringConstraint(wheelC.wp, rectB.p1); conn4a.setRestLength(strutRestLength); var conn5:SpringConstraint = psystem.addSpringConstraint(wheelC.wp, rectC.p3); conn5.setRestLength(strutRestLength); var conn5a:SpringConstraint = psystem.addSpringConstraint(wheelC.wp, rectC.p0); conn5a.setRestLength(strutRestLength); var conn6:SpringConstraint = psystem.addSpringConstraint(wheelD.wp, rectC.p2); conn6.setRestLength(strutRestLength); var conn6a:SpringConstraint = psystem.addSpringConstraint(wheelD.wp, rectC.p1); conn6a.setRestLength(strutRestLength); // body stiffness springs var conn7:SpringConstraint = psystem.addSpringConstraint(rectA.p3, rectC.p2); var conn8:SpringConstraint = psystem.addSpringConstraint(rectA.p0, rectC.p1); psystem.paintSurfaces(); this.onEnterFrame = function() { var keySpeed:Number = 2.0; if(Key.isDown(Key.LEFT)) { wheelA.rp.vs = -keySpeed; wheelB.rp.vs = -keySpeed; wheelC.rp.vs = -keySpeed; wheelD.rp.vs = -keySpeed; } else if(Key.isDown(Key.RIGHT)) { wheelA.rp.vs = keySpeed; wheelB.rp.vs = keySpeed; wheelC.rp.vs = keySpeed; wheelD.rp.vs = keySpeed; } else { wheelA.rp.vs = 0; wheelB.rp.vs = 0; wheelC.rp.vs = 0; wheelD.rp.vs = 0; } psystem.timeStep(); psystem.paintWheels(); psystem.paintConstraints(); }