Exemple #1
0
    public void CreateScenario(ParticleSystem a_ParticleSystem)
    {
        Particle p1 = new Particle(1f);

        p1.Position = new Vector2(3, 4);
        Particle p2 = new Particle(1f);

        p2.Position = new Vector2(-3, 4);
        a_ParticleSystem.AddParticle(p1);
        a_ParticleSystem.AddParticle(p2);
        new CircularWireConstraint(p1, p1.Position + Vector2.right, a_ParticleSystem);
        new CircularWireConstraint(p2, p2.Position + Vector2.left, a_ParticleSystem);
        Particle p3 = new Particle(1);

        p3.Position = new Vector2(3, 2);
        Particle p4 = new Particle(1);

        p4.Position = new Vector2(-3, 2);
        Particle p5 = new Particle(1);

        p5.Position = new Vector2(-4, 0);
        Particle p6 = new Particle(1);

        p6.Position = new Vector2(0, 0);
        Particle p7 = new Particle(1);

        p7.Position = new Vector2(4, 0);
        a_ParticleSystem.AddParticle(p3);
        a_ParticleSystem.AddParticle(p4);
        a_ParticleSystem.AddParticle(p5);
        a_ParticleSystem.AddParticle(p6);
        a_ParticleSystem.AddParticle(p7);

        Force f1 = new HooksLawSpring(p1, p3, 1, 1, 1f);
        Force f2 = new HooksLawSpring(p2, p4, 1, 1, 1f);
        Force f3 = new HooksLawSpring(p3, p7, 1, 1, 1f);
        Force f4 = new HooksLawSpring(p3, p6, 1, 1, 1f);
        Force f5 = new HooksLawSpring(p4, p6, 1, 1, 1f);
        Force f6 = new HooksLawSpring(p4, p5, 1, 1, 1f);
        Force f7 = new HooksLawSpring(p7, p6, 3, 1, 1f);
        Force f8 = new HooksLawSpring(p7, p5, 3, 1, 1f);
        Force f9 = new HooksLawSpring(p6, p5, 3, 1, 1f);

        a_ParticleSystem.AddForce(f1);
        a_ParticleSystem.AddForce(f2);
        a_ParticleSystem.AddForce(f3);
        a_ParticleSystem.AddForce(f4);
        a_ParticleSystem.AddForce(f5);
        a_ParticleSystem.AddForce(f6);
        a_ParticleSystem.AddForce(f7);
        a_ParticleSystem.AddForce(f8);
        a_ParticleSystem.AddForce(f9);

        a_ParticleSystem.AddForce(new GravityForce(.1f));
    }
    public void CreateScenario(ParticleSystem a_ParticleSystem)
    {
        ViscousDragForce drag = new ViscousDragForce(0.1f);

        a_ParticleSystem.AddForce(drag);

        GravityForce gravity = new GravityForce(0.1f);

        a_ParticleSystem.AddForce(gravity);

        Particle p1 = new Particle(1f);

        p1.Position = new Vector2(-3f, 0f);
        a_ParticleSystem.AddParticle(p1);

        Particle p2 = new Particle(1f);

        p2.Position = new Vector2(3f, 0f);
        a_ParticleSystem.AddParticle(p2);

        HooksLawSpring spring1 = new HooksLawSpring(p1, p2, 3f, 10f, 10f);

        a_ParticleSystem.AddForce(spring1);
    }
    public void CreateScenario(ParticleSystem a_ParticleSystem)
    {
        const float particleMass = 1f;

        Particle p1 = new Particle(particleMass);

        p1.Position = new Vector2(-3f, 3.5f);
        a_ParticleSystem.AddParticle(p1);
        new CircularWireConstraint(p1, new Vector2(-2f, 3.5f), a_ParticleSystem);

        Particle p3 = new Particle(particleMass);

        p3.Position = p1.Position + new Vector2(0.5f, 0f);
        a_ParticleSystem.AddParticle(p3);
        new RodConstraint(p1, p3, a_ParticleSystem);

        Particle p2 = new Particle(particleMass);

        p2.Position = new Vector2(2f, 3.5f);
        a_ParticleSystem.AddParticle(p2);
        new CircularWireConstraint(p2, new Vector2(3f, 3.5f), a_ParticleSystem);

        Particle p4 = new Particle(particleMass);

        p4.Position = p2.Position + new Vector2(0.5f, 0f);
        a_ParticleSystem.AddParticle(p4);
        new RodConstraint(p2, p4, a_ParticleSystem);

        new RodConstraint(p3, p4, a_ParticleSystem);

        // With springs
        const float springConstant  = 75f;
        const float dampingConstant = 40f;

        Particle p5 = new Particle(particleMass);

        p5.Position = new Vector2(-3f, 1);
        a_ParticleSystem.AddParticle(p5);
        new CircularWireConstraint(p5, new Vector2(-2f, 1), a_ParticleSystem);

        Particle p6 = new Particle(particleMass);

        p6.Position = p5.Position + new Vector2(0.5f, 1f);
        a_ParticleSystem.AddParticle(p6);
        HooksLawSpring s1 = new HooksLawSpring(p5, p6, 0.5f, springConstant, dampingConstant);

        a_ParticleSystem.AddForce(s1);

        Particle p7 = new Particle(particleMass);

        p7.Position = new Vector2(2f, 1);
        a_ParticleSystem.AddParticle(p7);
        new CircularWireConstraint(p7, new Vector2(3f, 1), a_ParticleSystem);

        Particle p8 = new Particle(particleMass);

        p8.Position = p7.Position + new Vector2(0.5f, 1f);
        a_ParticleSystem.AddParticle(p8);
        HooksLawSpring s2 = new HooksLawSpring(p7, p8, 0.5f, springConstant, dampingConstant);

        a_ParticleSystem.AddForce(s2);

        new RodConstraint(p6, p8, a_ParticleSystem);



        Particle q1 = new Particle(particleMass);

        q1.Position = new Vector2(-3f, -1.5f);
        a_ParticleSystem.AddParticle(q1);
        new CircularWireConstraint(q1, new Vector2(-2f, -1.5f), a_ParticleSystem);


        Particle q2 = new Particle(particleMass);

        q2.Position = new Vector2(2f, -1.5f);
        a_ParticleSystem.AddParticle(q2);
        new CircularWireConstraint(q2, new Vector2(3f, -1.5f), a_ParticleSystem);
        new RodConstraint(q1, q2, a_ParticleSystem);


        Particle a1 = new Particle(1);
        Particle a2 = new Particle(1);
        Particle a3 = new Particle(1);
        Particle a4 = new Particle(1);

        a1.Position = new Vector2(-4, -3);
        a2.Position = new Vector2(0, -3);
        a3.Position = new Vector2(0, -5);
        a4.Position = new Vector2(4, -5);
        a_ParticleSystem.AddParticle(a1);
        a_ParticleSystem.AddParticle(a2);
        a_ParticleSystem.AddParticle(a3);
        a_ParticleSystem.AddParticle(a4);
        new CircularWireConstraint(a1, a1.Position + Vector2.down, a_ParticleSystem);
        new CircularWireConstraint(a2, a2.Position + Vector2.down, a_ParticleSystem);
        new CircularWireConstraint(a3, a3.Position + Vector2.up, a_ParticleSystem);
        new CircularWireConstraint(a4, a4.Position + Vector2.up, a_ParticleSystem);
        new RodConstraint(a1, a2, a_ParticleSystem);
        new RodConstraint(a2, a3, a_ParticleSystem);
        new RodConstraint(a3, a4, a_ParticleSystem);
    }
    public void CreateScenario(ParticleSystem a_ParticleSystem)
    {
        Particle particle1 = new Particle(1000f);

        particle1.Position = new Vector2(-2f, 0f);
        a_ParticleSystem.AddParticle(particle1);
        Particle particle2 = new Particle(1f);

        particle2.Position = new Vector2(0f, 5f);
        a_ParticleSystem.AddParticle(particle2);
        Particle particle3 = new Particle(1f);

        particle3.Position = new Vector2(4f, 4f);
        a_ParticleSystem.AddParticle(particle3);

        Force angleforce = new AngularSpringForce(particle2, particle1, particle3, Mathf.PI / 2, 1f, 0.1f);

        a_ParticleSystem.AddForce(angleforce);
        Force spring1 = new HooksLawSpring(particle1, particle2, 2, 1, .1f);
        Force spring2 = new HooksLawSpring(particle3, particle2, 2, 1, .1f);

        a_ParticleSystem.AddForce(spring1);
        a_ParticleSystem.AddForce(spring2);
        Force gravityForce = new GravityForce(.001f);

        a_ParticleSystem.AddForce(gravityForce);

        Particle p6 = new Particle(.5f);

        p6.Position = new Vector2(0, -4);
        a_ParticleSystem.AddParticle(p6);
        Particle p7 = new Particle(1);

        p7.Position = new Vector2(0, -5f);
        a_ParticleSystem.AddParticle(p7);
        new RodConstraint(p6, p7, a_ParticleSystem);


        Particle p5 = new Particle(500f);

        p5.Position = new Vector2(2, 2);
        a_ParticleSystem.AddParticle(p5);
        new CircularWireConstraint(p5, p5.Position + Vector2.right, a_ParticleSystem);

        Particle p8 = new Particle(0.5f);

        p8.Position = new Vector2(-3, -1);
        a_ParticleSystem.AddParticle(p8);
        new FixedPointConstraint(p8, a_ParticleSystem);


        Particle p9 = new Particle(.5f);

        p9.Position = new Vector2(-3, -2);
        a_ParticleSystem.AddParticle(p9);
        new HLineConstraint(p9, a_ParticleSystem);

        Particle p10 = new Particle(.5f);

        p10.Position = new Vector2(5, -2);
        a_ParticleSystem.AddParticle(p10);
        new VLineConstraint(p10, a_ParticleSystem);


        Particle q1 = new Particle(.5f);

        q1.Position = new Vector2(-3, 3);
        a_ParticleSystem.AddParticle(q1);
        new EllipticalWireConstraint(q1, q1.Position + new Vector2(1f, -.3f), q1.Position + new Vector2(-1f, -1f), a_ParticleSystem);

        Force dragForce = new ViscousDragForce(.2f);

        a_ParticleSystem.AddForce(dragForce);
    }