Exemplo n.º 1
0
    public void CalculateVelocityField()
    {
        VelocityField.Clear();

        Vector3 prevPos = P0.transform.position;

        for (int c = 1; c <= Resolution; c++)
        {
            float   t       = (float)c / Resolution;
            Vector3 currPos = CurveMath.CalculateBezierPoint(t, P0.transform.position, P0_Tangent.transform.position, P1_Tangent.transform.position, P1.transform.position);
            Vector3 currTan = (currPos - prevPos).normalized;
            float   mag     = VelocityMagCurve.Evaluate(t);

            VelocityFieldNode ti = new VelocityFieldNode();
            ti.TargetPosition = prevPos;
            ti.TargetVelocity = currTan;
            ti.Mag            = mag;
            VelocityField.Add(ti);
            prevPos = currPos;
        }
    }
        public void TestVelocityField()
        {
            ///Shear Flow
            ///(-U(y - height) ,0)

            VelocityField stream = CommonVelocityFields.UniformStream;

            CommonVelocityFields.FlowStrength = 3;

            Particle p = new Particle(5, new Vector(5, 5));

            p.ApplyVelocityField(stream);

            p.Move(5);
            Vector result = p.Position;

            //flow strength 3, so should move 15 in x direction
            Vector expected = new Vector(20, 5);

            Assert.AreEqual(expected, result);
        }
Exemplo n.º 3
0
        private void FlowPicker_SelectedIndexChanged(object sender, EventArgs e)
        {
            Picker picker        = (Picker)sender;
            int    selectedIndex = picker.SelectedIndex;

            if (selectedIndex != -1)
            {
                VelocityField field = (picker.ItemsSource[selectedIndex] as VelocityFieldListItem)?.Field;

                foreach (FluidSimParticle p in _particles)
                {
                    p.Particle.ApplyVelocityField(field);
                }

                foreach (FluidSimParticle p in _touchParticles)
                {
                    p.Particle.ApplyVelocityField(field);
                }

                this.SelectedVelocityField = field;
                SetUserControls();
            }
        }
 public void ClearVelocityField()
 {
     VelocityField = new VelocityField();
 }
 public void ApplyVelocityField(VelocityField f)
 {
     VelocityField = f;
 }
Exemplo n.º 6
0
 public VelocityFieldListItem(string name, VelocityField v)
 {
     this.Name  = name;
     this.Field = v;
 }