コード例 #1
0
        private void UpdatePointMassParameters(PointMass o, float dt)
        {
            PointMassData data = o.PointMassData;

            if (data.Mass != 0)
            {
                data.Acceleration = data.Forces / data.Mass;
            }
            else
            {
                data.Acceleration = new MyVector(0, 0, 0);
            }

            data.Velocity.Add(data.Acceleration * dt);

            data.VelocityBody = data.Velocity;
            data.VelocityBody.Rotate(~data.Orientation);
            data.Forces = new MyVector(0, 0, 0);

            o.PointMassData = data;
        }
コード例 #2
0
        private void CalculatePointMassForces(PointMass o)
        {
            PointMassData data = o.PointMassData;
            //data.Forces = new MyVector(0, 0, 0);
            if (doGravity)
                data.Forces = o.Mass * gravity;

            if (doLinearDrag)
            {
                data.Forces -= data.Velocity * air_density * (data.Velocity.Length * o.LinearDragCoefficient *
                    o.BoundingSphereRadius * o.BoundingSphereRadius);

            }
            o.PointMassData = data;
        }