private void InitJoints()
        {
            baseJoint = new Hinge(MathHelper.PiOver4,
                                  new Hinge(
                                      MathHelper.PiOver4,
                                      new Hinge(
                                          MathHelper.PiOver4,
                                          new Hinge(
                                              MathHelper.PiOver4
                                              )
            {
                AngleLimitLower = -2f, AngleLimitUpper = 2f
            }
                                          )
            {
                AngleLimitLower = -2f, AngleLimitUpper = 2f
            }
                                      )
            {
                AngleLimitLower = -2f, AngleLimitUpper = 2f
            }
                                  );

            focusJoint = baseJoint;
        }
        public void SetUpBeam()
        {
            var material = new Concrete(youngModulus: 30);
            var section  = new RectangleSection(width: 300, height: 500);

            var node1 = new FixedNode();
            var node2 = new Hinge();
            var node3 = new FixedNode();

            var nodes = new Node[] { node1, node2, node3 };

            var span1 = new Span(
                leftNode: node1,
                length: 10,
                rightNode: node2,
                material: material,
                section: section
                );

            var span2 = new Span(
                leftNode: node2,
                length: 5,
                rightNode: node3,
                material: material,
                section: section
                );

            var spans = new Span[] { span1, span2 };

            span1.PointLoads.Add(new ShearLoad(value: -100, position: 3));

            _beam = new Beam(spans, nodes);

            _beam.Calculate();
        }
Example #3
0
            public void HingeTest()
            {
                var actual   = new Matrix(4, 1);
                var expected = new Matrix(4, 1);

                actual.InRandomize();
                expected.InRandomize();

                var autoErr = new Hinge().Evaluate(actual, expected);
                var error   = 0.0;

                for (var i = 0; i < actual.Rows; i++)
                {
                    for (var j = 0; j < actual.Columns; j++)
                    {
                        error += Math.Max(0.0, 1.0 - expected[i, j] * actual[i, j]);
                    }
                }
                error /= actual.Rows * actual.Columns;
                Assert.IsTrue(Math.Abs(error - autoErr) < 0.01, new Hinge().Type().ToString() + " Forward!");

                var autoDErr = new Hinge().Backward(actual, expected);
                var dErr     = new Matrix(actual.Rows, actual.Columns);

                for (var i = 0; i < actual.Rows; i++)
                {
                    for (var j = 0; j < actual.Columns; j++)
                    {
                        dErr[i, j] = -1 * Math.Exp(-expected[i, j] * actual[i, j]);
                    }
                }
                Assert.IsTrue(Math.Abs(dErr.FrobeniusNorm() - autoDErr.FrobeniusNorm()) < 0.01, new Hinge().Type().ToString() + " Backward!");
            }
Example #4
0
 private void InitJoints()
 {
     leftJoint = new Hinge(MathHelper.PiOver4,
                           new Hinge(
                               MathHelper.PiOver4,
                               new Hinge(
                                   MathHelper.PiOver4,
                                   new Hinge(
                                       MathHelper.PiOver4
                                       )
                                   )
                               )
                           )
     {
         DefaultPosition = new Vector2(-HALF_W / 4, 0)
     };
     rightJoint = new Hinge(MathHelper.PiOver4,
                            new Hinge(
                                MathHelper.PiOver4,
                                new Hinge(
                                    MathHelper.PiOver4,
                                    new Hinge(
                                        MathHelper.PiOver4
                                        )
                                    )
                                )
                            )
     {
         DefaultPosition = new Vector2(HALF_W / 4, 0)
     };
 }
 private void InitJoints()
 {
     baseJoint = new Hinge(MathHelper.PiOver4,
                           new Hinge(
                               MathHelper.PiOver4,
                               new Hinge(
                                   MathHelper.PiOver4,
                                   new Hinge(
                                       MathHelper.PiOver4
                                       )
     {
         Length = 40f
     }
                                   )
     {
         Length = 20f
     }
                               )
     {
         Length = 80f
     }
                           )
     {
         Length = 30f
     };
 }
Example #6
0
        public IEnumerable <Hinge> GetHinge()
        {
            Hinge        hinge = new Hinge();
            List <Hinge> lm    = hinge.getHinges();

            return(lm);
        }
 public void Post([FromBody] Hinge p)
 {
     try {
         p.insert();   //    int someError = Convert.ToInt32("will fail to convert");
     }
     catch (Exception e) {
         throw e; // throw new Exception("Error in posting a new item");
     }
 }
Example #8
0
 // Use this for initialization
 void Start()
 {
     baseHinge        = new Hinge(baseConnector, Vector3.forward, new RangeInt(0, 360), 60.0f);
     upperArmHinge    = new Hinge(upperArm, Vector3.up, new RangeInt(270, 40), 40.0f);
     lowerArmHinge    = new Hinge(lowerArm, Vector3.up, new RangeInt(0, 360), 40.0f);
     wristRotateHinge = new Hinge(wristRotate, Vector3.forward, new RangeInt(0, 360), 40.0f);
     wristHingeHinge  = new Hinge(wristHinge, Vector3.up, new RangeInt(0, 360), 40.0f);
     // grabberHinge = new Hinge(grabber, Vector3.);
 }
Example #9
0
        public void DeleteHingeByName(string Name)
        {
            Hinge hingeOld = dataContext.Hinges.FirstOrDefault(d => d.Name == Name);

            if (hingeOld != null)
            {
                dataContext.Hinges.Remove(hingeOld);
                dataContext.SaveChanges();
            }
        }
Example #10
0
        public void UpdateHinge(Hinge hinge)
        {
            Hinge hingeOld = dataContext.Hinges.FirstOrDefault(d => d.Name == hinge.Name);

            if (hingeOld != null)
            {
                hingeOld.Name = hinge.Name;
                dataContext.SaveChanges();
            }
        }
Example #11
0
        public void DeleteHingeById(int ID)
        {
            Hinge hingeOld = dataContext.Hinges.FirstOrDefault(d => d.ID == ID);

            if (hingeOld != null)
            {
                dataContext.Hinges.Remove(hingeOld);
                dataContext.SaveChanges();
            }
        }
Example #12
0
 public Faucet()
 {
     Table wine = new Table();
     Hinge book = new Hinge();
     wine.Set(book);
     book.Set(wine);
     wine.Lamp(10);
     book.garden.Lamp("back in");
     book.bulb *= 2;
     wine.Lamp("minutes");
     wine.Lamp(book);
 }
        public void SetUpBeam()
        {
            var material = new Concrete(youngModulus: 30, withReinforcement: false);
            var section  = new RectangleSection(width: 300, height: 500);

            var node1 = new FixedNode();
            var node2 = new Hinge();
            var node3 = new Hinge();
            var node4 = new FixedNode();

            var nodes = new Node[] { node1, node2, node3, node4 };

            var span1 = new Span(
                leftNode: node1,
                length: 5,
                rightNode: node2,
                material: material,
                section: section,
                includeSelfWeight: false
                );

            var span2 = new Span(
                leftNode: node2,
                length: 5,
                rightNode: node3,
                material: material,
                section: section,
                includeSelfWeight: false
                );

            var span3 = new Span(
                leftNode: node3,
                length: 5,
                rightNode: node4,
                material: material,
                section: section,
                includeSelfWeight: false
                );

            var spans = new Span[] { span1, span2, span3 };

            var pointLoad1 = new ShearLoad(value: -100, position: 2.5);

            span1.PointLoads.Add(pointLoad1);

            var pointLoad2 = new ShearLoad(value: -100, position: 2.5);

            span2.PointLoads.Add(pointLoad2);

            _beam = new Beam(spans, nodes, includeSelfWeight: false);

            _beam.CalculationEngine.Calculate();
        }
Example #14
0
        public Faucet()
        {
            Table wine = new Table();
            Hinge book = new Hinge();

            wine.Set(book);
            book.Set(wine);
            wine.Lamp(10);
            book.garden.Lamp("back in");
            book.bulb *= 2;
            wine.Lamp("minutes");
            wine.Lamp(book);
        }
        public int SolveDLS(Hinge joint, Vector2 goal)
        {
            var dist       = Vector2.Distance(joint.EndEffector, goal);
            var iterations = 0;

            while (dist > SolutionThreshold && iterations < MaxIterations)
            {
                IterateDLS(joint, goal);
                dist = Vector2.Distance(joint.EndEffector, goal);
                iterations++;
            }

            return(iterations);
        }
        private List <Vector2> ComputeJacobian(Hinge joint)
        {
            var jacobian = new List <Vector2>();
            var focus    = joint;

            while (focus != null)
            {
                jacobian.Add(focus.AnalyticalJacobianColumn());

                focus = focus.Child;
            }

            return(jacobian);
        }
Example #17
0
        public override MapItem Deserialize(BinaryReader r)
        {
            var hinge = new Hinge(false);

            ReadKdopItem(r, hinge);

            hinge.Model       = r.ReadToken();
            hinge.Look        = r.ReadToken();
            hinge.Node        = new UnresolvedNode(r.ReadUInt64());
            hinge.MinRotation = r.ReadSingle();
            hinge.MaxRotation = r.ReadSingle();

            return(hinge);
        }
Example #18
0
 public void Lamp(object oil) //Boxing happens here!
 {
     if (oil is int)
     {
         floor.bulb = (int)oil;
     }
     else if (oil is string)
     {
         stairs = (string)oil;
     }
     else if (oil is Hinge)
     {
         Hinge vine = oil as Hinge;
         Console.WriteLine(vine.Table()
                           + " " + floor.bulb + " " + stairs);
     }
 }
Example #19
0
 private void InitJoints()
 {
     baseJoint = new Hinge(MathHelper.PiOver4,
                           new Hinge(
                               MathHelper.PiOver4,
                               new Hinge(
                                   MathHelper.PiOver4
                                   )
     {
         AngleLimitLower = -MathHelper.PiOver2, AngleLimitUpper = MathHelper.PiOver2
     }
                               )
     {
         AngleLimitLower = -MathHelper.PiOver2, AngleLimitUpper = MathHelper.PiOver2
     }
                           );
 }
        public void IterateCCD(Hinge joint, Vector2 goal)
        {
            var focus = joint;

            while (focus != null)
            {
                var toE = focus.EndEffector - focus.GlobalPosition;
                var toG = goal - focus.GlobalPosition;

                var eAngle = Math.Atan2(toE.Y, toE.X);
                var gAngle = Math.Atan2(toG.Y, toG.X);

                focus.Angle += ((float)(gAngle - eAngle));

                focus = focus.Child;
            }
        }
        public void IterateDLS(Hinge joint, Vector2 goal)
        {
            var jacobian = ComputeJacobian(joint);
            var deltaE   = ClampDeltaE(goal, joint.EndEffector);

            var jacobianMat = CreateMatrix.Dense(2, jacobian.Count, (row, col) => row == 0 ? jacobian[col].X : jacobian[col].Y);

            var lambda       = DLSLambda;
            var lambdaMatrix = lambda * lambda * CreateMatrix.DenseIdentity <float>(jacobianMat.RowCount);
            var deltaPhiVec  =
                jacobianMat.Transpose() *
                (jacobianMat * jacobianMat.Transpose() + (lambdaMatrix)).Inverse() *
                CreateVector.DenseOfArray(new float[] { deltaE.X, deltaE.Y });
            var deltaPhi = new LinkedList <float>(deltaPhiVec.ToArray());

            joint.ApplyDofDeltas(deltaPhi);
        }
Example #22
0
        float CalcHingeVelocity(Hinge hinge)
        {
            float input = GetInputClamped(hinge.axis, cockpit);

            if (input == 0 && autoStraighten)
            {
                return(-steeringSpeed * (1 - ((float)(inputAxisCounter[hinge.axis].lefts + inputAxisCounter[hinge.axis].rights) / turnCeil)) * ((hinge.hinge.Angle + hinge.center) / hinge.hinge.UpperLimitRad));
            }
            else if (input > 0)
            {
                return(hinge.direction * -steeringSpeed * ((float)inputAxisCounter[hinge.axis].lefts / turnCeil) * Clamp(input, 0, 1));
            }
            else if (input < 0)
            {
                return(hinge.direction * -steeringSpeed * ((float)inputAxisCounter[hinge.axis].rights / turnCeil) * Clamp(input, -1, 1));
            }
            return(0);
        }
        public void SetUpBeam()
        {
            var material = new Concrete(youngModulus: 30);
            var section  = new RectangleSection(width: 300, height: 500);

            var node1 = new FixedNode();
            var node2 = new Hinge();
            var node3 = new FixedNode();

            var nodes = new Node[] { node1, node2, node3 };

            var span1 = new Span(
                leftNode: node1,
                length: 10,
                rightNode: node2,
                material: material,
                section: section
                );

            var span2 = new Span(
                leftNode: node2,
                length: 10,
                rightNode: node3,
                material: material,
                section: section
                );


            var spans = new Span[] { span1, span2 };

            node2.ConcentratedForces.Add(new AngledLoad(value: -100, angle: 30));

            var pointLoad1 = new AngledLoad(value: -200, position: 5, angle: -45);

            span1.PointLoads.Add(pointLoad1);

            var pointLoad2 = new AngledLoad(value: -200, position: 5, angle: -60);

            span2.PointLoads.Add(pointLoad2);

            _beam = new Beam(spans, nodes);

            _beam.Calculate();
        }
        public void IterateJI(Hinge joint, Vector2 goal)
        {
            var jacobian = ComputeJacobian(joint);
            var deltaE   = ClampDeltaE(goal, joint.EndEffector);

            var jacobianMat = CreateMatrix.Dense(2, jacobian.Count, (row, col) => row == 0 ? jacobian[col].X : jacobian[col].Y);

            var inverse  = jacobianMat.GeneralizedInverse();
            var pInverse = jacobianMat.SVDPseudoInverse();

            var deltaPhi = new LinkedList <float>();

            foreach (var row in pInverse.ToRowArrays())
            {
                deltaPhi.AddLast((deltaE.X * row[0]) + (deltaE.Y * row[1]));
            }

            joint.ApplyDofDeltas(deltaPhi);
        }
        public void SetUpBeam()
        {
            var material1 = new Concrete(youngModulus: 27, withReinforcement: false);
            var material2 = new Concrete(youngModulus: 37, withReinforcement: false);
            var section   = new RectangleSection(width: 300, height: 500);

            var node1 = new FixedNode();
            var node2 = new Hinge();
            var node3 = new FixedNode();

            var nodes = new Node[] { node1, node2, node3 };

            var span1 = new Span(
                leftNode: node1,
                length: 4,
                rightNode: node2,
                material: material1,
                section: section,
                includeSelfWeight: false
                );

            var span2 = new Span(
                leftNode: node2,
                length: 4,
                rightNode: node3,
                material: material2,
                section: section,
                includeSelfWeight: false
                );

            var spans = new Span[] { span1, span2 };

            node2.ConcentratedForces.Add(new ShearLoad(value: -20));
            span1.ContinousLoads.Add(ContinousShearLoad.Create(
                                         new LoadData(value: -9, position: 0),
                                         new LoadData(value: -9, position: 4)));

            _beam = new Beam(spans, nodes, includeSelfWeight: false);

            _beam.CalculationEngine.Calculate();
        }
        public void IterateJT(Hinge joint, Vector2 goal)
        {
            var jacobian    = ComputeJacobian(joint);
            var jacobianMat = CreateMatrix.Dense(2, jacobian.Count, (row, col) => row == 0 ? jacobian[col].X : jacobian[col].Y);
            var deltaE      = ClampDeltaE(goal, joint.EndEffector);

            if (deltaE.LengthSquared() < 0.0001)
            {
                return;
            }

            var deltaEVec = CreateVector.Dense(new float[] { deltaE.X, deltaE.Y });
            var denom     = (jacobianMat * jacobianMat.Transpose() * deltaEVec).L2Norm();

            var lambda = (deltaEVec * jacobianMat * jacobianMat.Transpose() * deltaEVec) / (denom * denom);

            var deltaPhiVec = (float)lambda * jacobianMat.Transpose() * deltaEVec;
            var deltaPhi    = new LinkedList <float>(deltaPhiVec.ToArray());

            joint.ApplyDofDeltas(deltaPhi);
        }
        public void SetUpBeam()
        {
            var material = new Concrete(youngModulus: 30, withReinforcement: false);
            var section  = new RectangleSection(width: 300, height: 700);

            var node1 = new FixedNode();
            var node2 = new Hinge();
            var node3 = new FixedNode();

            var nodes = new Node[] { node1, node2, node3 };

            var span1 = new Span(
                leftNode: node1,
                length: 10,
                rightNode: node2,
                material: material,
                section: section,
                includeSelfWeight: false
                );

            var span2 = new Span(
                leftNode: node2,
                length: 10,
                rightNode: node3,
                material: material,
                section: section,
                includeSelfWeight: false
                );

            var spans = new Span[] { span1, span2 };

            node2.ConcentratedForces.Add(new ShearLoad(value: -200));

            _beam = new Beam(spans, nodes, includeSelfWeight: false);

            _beam.CalculationEngine.Calculate();
        }
Example #28
0
        public void FullBeamCalculationsTest_TimeoutPerformanceChecking_Success(
            [Random(27.0, 37.0, 1)] double youngModulus,
            [Random(150.0, 500.0, 1)] double width,
            [Random(240.0, 1000.0, 1)] double height,
            [Random(1.0, 10.0, 2)] double length1,
            [Random(1.0, 10.0, 1)] double length2,
            [Random(1.0, 10.0, 2)] double length3,
            [Random(1.0, 10.0, 2)] double length4,
            [Random(-1000.0, -1.0, 2)] double nodeForce,
            [Random(-100.0, -1.0, 2)] double shearForce,
            [Random(0.0, 1.0, 1)] double minPosition,
            [Random(-300.0, -10.0, 2)] double pointLoad,
            [Random(1.1, 3.0, 2)] double divider
            )
        {
            var material = new Concrete(youngModulus: youngModulus);
            var section  = new RectangleSection(width: width, height: height);

            var node1 = new FixedNode();
            var node2 = new Hinge();
            var node3 = new Hinge();
            var node4 = new SupportedNode();
            var node5 = new SupportedNode();

            var nodes = new Node[] { node1, node2, node3, node4, node5 };

            var span1 = new Span(
                leftNode: node1,
                length: length1,
                rightNode: node2,
                material: material,
                section: section
                );

            var span2 = new Span(
                leftNode: node2,
                length: length2,
                rightNode: node3,
                material: material,
                section: section
                );

            var span3 = new Span(
                leftNode: node3,
                length: length3,
                rightNode: node4,
                material: material,
                section: section
                );

            var span4 = new Span(
                leftNode: node4,
                length: length4,
                rightNode: node5,
                material: material,
                section: section
                );

            var spans = new Span[] { span1, span2, span3, span4 };

            node3.ConcentratedForces.Add(new ShearLoad(value: nodeForce));

            var startLoad1 = new LoadData(value: shearForce, position: minPosition);
            var endLoad1   = new LoadData(value: shearForce, position: length1);

            span1.ContinousLoads.Add(ContinousShearLoad.Create(startLoad1, endLoad1));

            var pointLoad1 = new ShearLoad(value: pointLoad, position: length2 / divider);

            span2.PointLoads.Add(pointLoad1);

            _beam = new Beam(spans, nodes);

            _beam.Calculate();

            for (int i = 0; i < _beam.Length * 100; i++)
            {
                _beam.ShearResult.GetValue(i);
                _beam.BendingMomentResult.GetValue(i);
                _beam.VerticalDeflectionResult.GetValue(i);
                _beam.RotationResult.GetValue(i);
            }

            Assert.That(_beam.Spans[0].LeftNode.NormalForce?.Value, Is.Not.Null);
            Assert.That(_beam.Spans[0].LeftNode.ShearForce?.Value, Is.Not.Null);
            Assert.That(_beam.Spans[0].LeftNode.BendingMoment?.Value, Is.Not.Null);

            Assert.That(_beam.Spans[1].LeftNode.NormalForce, Is.Null);
            Assert.That(_beam.Spans[1].LeftNode.ShearForce, Is.Null);
            Assert.That(_beam.Spans[1].LeftNode.BendingMoment, Is.Null);

            Assert.That(_beam.Spans[2].LeftNode.NormalForce, Is.Null);
            Assert.That(_beam.Spans[2].LeftNode.ShearForce, Is.Null);
            Assert.That(_beam.Spans[2].LeftNode.BendingMoment, Is.Null);

            Assert.That(_beam.Spans[3].LeftNode.NormalForce?.Value, Is.Not.Null);
            Assert.That(_beam.Spans[3].LeftNode.ShearForce?.Value, Is.Not.Null);
            Assert.That(_beam.Spans[3].LeftNode.BendingMoment, Is.Null);

            Assert.That(_beam.Spans[3].RightNode.NormalForce?.Value, Is.Not.Null);
            Assert.That(_beam.Spans[3].RightNode.ShearForce?.Value, Is.Not.Null);
            Assert.That(_beam.Spans[3].RightNode.BendingMoment, Is.Null);
        }
Example #29
0
 public void Set(Hinge b)
 {
     floor = b;
 }
Example #30
0
        public Hinge GetHingeByID(int ID)
        {
            Hinge hinge = dataContext.Hinges.FirstOrDefault(d => d.ID == ID);

            return(hinge != null ? hinge : null);
        }
Example #31
0
        public Hinge GetHingeByName(string name)
        {
            Hinge hinge = dataContext.Hinges.FirstOrDefault(d => d.Name == name);

            return(hinge != null ? hinge : null);
        }
Example #32
0
 public void AddHinge(Hinge hinge)
 {
     dataContext.Hinges.Add(hinge);
     dataContext.SaveChanges();
 }