Пример #1
0
        public Contact(Particle p1, Particle p2, VectorN _normal, double _depth)
            : base(p1, p2)
        {
            normal      = _normal;
            depth       = _depth;
            restitution = 0.7;

            VectorN relVelVec = new VectorN(pair[0].v);

            relVelVec.Sub(pair[1].v);
            relVel = relVelVec.Dot(normal);
        }
Пример #2
0
        public void Update()
        {
            if (immovable)
            {
                return;
            }

            double energy = v.Dot(v);

            if (energy < 0.01)
            {
                if (aboutToFreeze)
                {
                    //curGravity.Scale(0.8);

                    framesToFreeze++;
                    if (framesToFreeze > 20)
                    {
                        freezed       = true;
                        aboutToFreeze = false;
                        v.Clear();
                    }
                }
                else
                {
                    framesToFreeze = 0;
                    aboutToFreeze  = true;
                }
            }
            else
            {
                if (aboutToFreeze)
                {
                    aboutToFreeze = false;
                }
            }
        }