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(); }
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!"); }
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 }; }
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"); } }
// 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.); }
public void DeleteHingeByName(string Name) { Hinge hingeOld = dataContext.Hinges.FirstOrDefault(d => d.Name == Name); if (hingeOld != null) { dataContext.Hinges.Remove(hingeOld); dataContext.SaveChanges(); } }
public void UpdateHinge(Hinge hinge) { Hinge hingeOld = dataContext.Hinges.FirstOrDefault(d => d.Name == hinge.Name); if (hingeOld != null) { hingeOld.Name = hinge.Name; dataContext.SaveChanges(); } }
public void DeleteHingeById(int ID) { Hinge hingeOld = dataContext.Hinges.FirstOrDefault(d => d.ID == ID); if (hingeOld != null) { dataContext.Hinges.Remove(hingeOld); dataContext.SaveChanges(); } }
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(); }
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); }
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); }
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); } }
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); }
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(); }
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); }
public void Set(Hinge b) { floor = b; }
public Hinge GetHingeByID(int ID) { Hinge hinge = dataContext.Hinges.FirstOrDefault(d => d.ID == ID); return(hinge != null ? hinge : null); }
public Hinge GetHingeByName(string name) { Hinge hinge = dataContext.Hinges.FirstOrDefault(d => d.Name == name); return(hinge != null ? hinge : null); }
public void AddHinge(Hinge hinge) { dataContext.Hinges.Add(hinge); dataContext.SaveChanges(); }