public SharpEngine GetPhysicsEnvironment()
        {
            var physicsEnvironment = new SharpEngine();

            List <ICollisionShape> objects = BuildBaseAndCarShapes();

            foreach (var obj in objects)
            {
                physicsEnvironment.AddShape(obj);
            }

            ICollisionJoint[] constraints = GetCarConstraints(objects);

            foreach (var item in constraints)
            {
                physicsEnvironment.AddJoint(item);
            }

            var bridge = BuildBridge();

            var bridgeConstraints = GetBridgeConstraints(bridge);

            foreach (var item in bridge)
            {
                physicsEnvironment.AddShape(item);
            }

            foreach (var item in bridgeConstraints)
            {
                physicsEnvironment.AddJoint(item);
            }

            var stack = BuildStack();

            foreach (var item in stack)
            {
                physicsEnvironment.AddShape(item);
            }

            //var jenga = BuildJenga();
            //foreach (var item in jenga)
            //{
            //    physicsEnvironment.AddShape(item);
            //}


            physicsEnvironment.EngineParameters.SetFrictionDirection(2);
            physicsEnvironment.SolverParameters.SetSolverMaxIteration(50);
            physicsEnvironment.SolverParameters.SetSOR(1.0);
            physicsEnvironment.SolverParameters.SetErrorTolerance(1E-10);
            physicsEnvironment.SolverParameters.SetNewtonStepIterations(0);
            physicsEnvironment.SetSolverType(SolverType.NonLinearConjugateGradient);

            return(physicsEnvironment);
        }
Ejemplo n.º 2
0
        public SharpEngine GetPhysicsEnvironment()
        {
            var physicsEnvironment = new SharpEngine();

            List <ICollisionShape> objects = getSimulationObjects();

            foreach (var obj in objects)
            {
                physicsEnvironment.AddShape(obj);
            }

            //physicsEnvironment.RemoveShape(0);

            physicsEnvironment.SetSolverType(SolverType.RedBlackProjectedGaussSeidel);
            physicsEnvironment.SolverParameters.SetSolverMaxIteration(50);

            return(physicsEnvironment);
        }
Ejemplo n.º 3
0
        public SharpEngine GetPhysicsEnvironment()
        {
            var physicsEnvironment = new SharpEngine();

            List <ICollisionShape> objects = GetSimulationObjects();

            foreach (var obj in objects)
            {
                physicsEnvironment.AddShape(obj);
            }

            physicsEnvironment.SetSolverType(SolverType.ProjectedSymmetricGS);
            physicsEnvironment.EngineParameters.SetFrictionDirection(2);
            physicsEnvironment.SolverParameters.SetSolverMaxIteration(100);
            physicsEnvironment.SolverParameters.SetSOR(1.0);
            physicsEnvironment.SolverParameters.SetErrorTolerance(1E-8);

            return(physicsEnvironment);
        }
Ejemplo n.º 4
0
        public SharpEngine GetPhysicsEnvironmentJoints()
        {
            var physicsEnvironment = new SharpEngine();

            ICollisionShape[] objects = getSphereObject();

            foreach (var obj in objects)
            {
                physicsEnvironment.AddShape(obj);
            }

            ICollisionJoint[] constraints = getConstraint(objects);

            foreach (var item in constraints)
            {
                physicsEnvironment.AddJoint(item);
            }
            //physicsEnvironment.RemoveShape(0);

            physicsEnvironment.SetSolverType(SolverType.NonLinearConjugateGradient);

            return(physicsEnvironment);
        }
Ejemplo n.º 5
0
        public SharpEngine GetPhysicsEnvironment()
        {
            var physicsEnvironment = new SharpEngine();

            List <ICollisionShape> objects = GetSimulationObjects();

            foreach (var obj in objects)
            {
                physicsEnvironment.AddShape(obj);
            }

            //physicsEnvironment.RemoveShape(0);

            physicsEnvironment.CollisionEngineParam.SetBroadPhaseEngine(BroadPhaseEngineType.HierarchicalTree);
            physicsEnvironment.EngineParameters.SetFrictionDirection(2);
            physicsEnvironment.SolverParameters.SetSolverMaxIteration(20);
            physicsEnvironment.SolverParameters.SetSOR(1.3);
            physicsEnvironment.SolverParameters.SetErrorTolerance(1E-10);
            physicsEnvironment.SetSolverType(SolverType.ProjectedGaussSeidel);


            return(physicsEnvironment);
        }