Exemple #1
0
        public IKHexapod(Vector3 center_point)
        {
            var e1 = new LineBuilder();

            e1.Add(true,
                   new Vector3(-Config.HALF_X2LENGTH, 0, 0),
                   new Vector3(-Config.HALF_X1LENGTH, 0, Config.HALF_ZLENGTH),
                   new Vector3(Config.HALF_X1LENGTH, 0, Config.HALF_ZLENGTH),
                   new Vector3(Config.HALF_X2LENGTH, 0, 0),
                   new Vector3(Config.HALF_X1LENGTH, 0, -Config.HALF_ZLENGTH),
                   new Vector3(-Config.HALF_X1LENGTH, 0, -Config.HALF_ZLENGTH));
            e1.Add(true, new Vector3(-Config.HALF_X2LENGTH, Config.BODY_HIGH, 0),
                   new Vector3(-Config.HALF_X1LENGTH, Config.BODY_HIGH, Config.HALF_ZLENGTH),
                   new Vector3(Config.HALF_X1LENGTH, Config.BODY_HIGH, Config.HALF_ZLENGTH),
                   new Vector3(Config.HALF_X2LENGTH, Config.BODY_HIGH, 0),
                   new Vector3(Config.HALF_X1LENGTH, Config.BODY_HIGH, -Config.HALF_ZLENGTH),
                   new Vector3(-Config.HALF_X1LENGTH, Config.BODY_HIGH, -Config.HALF_ZLENGTH));

            e1.AddLine(
                new Vector3(Config.HALF_X1LENGTH, Config.BODY_HIGH, -Config.HALF_ZLENGTH),
                new Vector3(Config.HALF_X1LENGTH, 0, -Config.HALF_ZLENGTH));
            e1.AddLine(
                new Vector3(Config.HALF_X2LENGTH, Config.BODY_HIGH, 0),
                new Vector3(Config.HALF_X2LENGTH, 0, 0));
            e1.AddLine(
                new Vector3(Config.HALF_X1LENGTH, Config.BODY_HIGH, Config.HALF_ZLENGTH),
                new Vector3(Config.HALF_X1LENGTH, 0, Config.HALF_ZLENGTH));
            e1.AddLine(
                new Vector3(-Config.HALF_X1LENGTH, Config.BODY_HIGH, Config.HALF_ZLENGTH),
                new Vector3(-Config.HALF_X1LENGTH, 0, Config.HALF_ZLENGTH));
            e1.AddLine(
                new Vector3(-Config.HALF_X2LENGTH, Config.BODY_HIGH, 0),
                new Vector3(-Config.HALF_X2LENGTH, 0, 0));
            e1.AddLine(
                new Vector3(-Config.HALF_X1LENGTH, Config.BODY_HIGH, -Config.HALF_ZLENGTH),
                new Vector3(-Config.HALF_X1LENGTH, 0, -Config.HALF_ZLENGTH));
            //var leg = new IKLeg(0, new Vector3(), 1, 1, 1);
            Leg1 = new IKLeg(1,
                             new Vector3(Config.HALF_X1LENGTH, Config.TIBIA_LENGTH, -Config.HALF_ZLENGTH),
                             Config.COXA_LENGTH, Config.FEMUR_LENGTH, Config.TIBIA_LENGTH);
            Leg2 = new IKLeg(2,
                             new Vector3(Config.HALF_X2LENGTH, Config.TIBIA_LENGTH, 0),
                             Config.COXA_LENGTH, Config.FEMUR_LENGTH, Config.TIBIA_LENGTH);
            Leg3 = new IKLeg(3,
                             new Vector3(Config.HALF_X1LENGTH, Config.TIBIA_LENGTH, Config.HALF_ZLENGTH),
                             Config.COXA_LENGTH, Config.FEMUR_LENGTH, Config.TIBIA_LENGTH);
            Leg4 = new IKLeg(4,
                             new Vector3(-Config.HALF_X1LENGTH, Config.TIBIA_LENGTH, Config.HALF_ZLENGTH),
                             Config.COXA_LENGTH, Config.FEMUR_LENGTH, Config.TIBIA_LENGTH);
            Leg5 = new IKLeg(5,
                             new Vector3(-Config.HALF_X2LENGTH, Config.TIBIA_LENGTH, 0),
                             Config.COXA_LENGTH, Config.FEMUR_LENGTH, Config.TIBIA_LENGTH);
            Leg6 = new IKLeg(6,
                             new Vector3(-Config.HALF_X1LENGTH, Config.TIBIA_LENGTH, -Config.HALF_ZLENGTH),
                             Config.COXA_LENGTH, Config.FEMUR_LENGTH, Config.TIBIA_LENGTH);

            ModelSkeleton     = e1.ToLineGeometry3D();
            SkeletonTransform = new System.Windows.Media.Media3D.TranslateTransform3D(center_point.ToVector3D());
            Calculate();
        }
Exemple #2
0
 private void ApplyUnloadTool()
 {
     if ((_loadedTool != null) /*&& (_preLoadTransform != null)*/)
     {
         _loadedTool.Transform = _preLoadTransform;
         Children.Add(_loadedTool);
         _loadedTool       = null;
         _preLoadTransform = null;
     }
 }
Exemple #3
0
 public void RaiseBody(double distance)
 {
     SkeletonTransform = new System.Windows.Media.Media3D.TranslateTransform3D(
         SkeletonTransform.Value.OffsetX,
         SkeletonTransform.Value.OffsetY + distance,
         SkeletonTransform.Value.OffsetZ);
     UpdateAllLeg(distance, 0, "Y");
     UpdateAllLeg(distance, 1, "Y");
     Calculate();
 }
Exemple #4
0
        private void InitializeViewCubes()
        {
            var builder = new MeshBuilder();

            builder.AddPyramid(Vector3.Zero, 10, 10, true);
            ViewCubeGeometry1 = builder.ToMesh();
            ViewCubeMaterial1 = DiffuseMaterials.Orange;

            builder = new MeshBuilder();
            builder.AddDodecahedron(Vector3.Zero, Vector3.UnitX, Vector3.UnitY, 5);
            ViewCubeGeometry2 = builder.ToMesh();
            ViewCubeMaterial2 = DiffuseMaterials.Blue;

            ViewCubeMaterial3 = DiffuseMaterials.Gray;
            ViewCubeMaterial4 = DiffuseMaterials.Pearl;
            //Center the model first and do scaling
            var transform = Matrix.Translation(0, -2, 0) * Matrix.Scaling(3.5f);

            ViewCubeTransform3 = new System.Windows.Media.Media3D.MatrixTransform3D(transform.ToMatrix3D());
        }
Exemple #5
0
 private void OnLoadToolMessage(LoadToolMessage msg)
 {
     if (msg.ToolSource == ToolHolderId)
     {
         if (Children.Count == 1)
         {
             _loadedTool       = Children[0];
             _preLoadTransform = _loadedTool.Transform;
             Children.Clear();
             MessengerInstance.Send(new CompleteToolLoadingMessage()
             {
                 ToolSink     = msg.ToolSink,
                 ToolModel    = _loadedTool,
                 ToolData     = _tool,
                 BackNotifyId = msg.BackNotifyId
             });
         }
         else
         {
             throw new InvalidOperationException("Load tool from empty tool holder source!");
         }
     }
 }