コード例 #1
0
        public override List <KinematicSolution> Kinematics(IEnumerable <Target> targets, IEnumerable <double[]> prevJoints = null, bool displayMeshes = false)
        {
            var target     = targets.First();
            var prevJoint  = prevJoints?.First();
            var kinematics = new List <KinematicSolution>();
            var kinematic  = Robot.Kinematics(target, prevJoint, displayMeshes, this.BasePlane);
            var planes     = kinematic.Planes.ToList();
            var meshes     = (displayMeshes) ? kinematic.Meshes.ToList() : null;

            // Tool
            if (target.Tool != null)
            {
                Plane toolPlane = target.Tool.Tcp;
                toolPlane.Transform(planes[planes.Count - 1].ToTransform());
                planes.Add(toolPlane);
            }
            else
            {
                planes.Add(planes[planes.Count - 1]);
            }

            if (displayMeshes)
            {
                if (target.Tool?.Mesh != null)
                {
                    Mesh toolMesh = target.Tool.Mesh.DuplicateMesh();
                    toolMesh.Transform(Transform.PlaneToPlane(target.Tool.Tcp, planes[planes.Count - 1]));
                    meshes.Add(toolMesh);
                }
                else
                {
                    meshes.Add(null);
                }

                kinematic.Meshes = meshes.ToArray();
            }
            kinematic.Planes = planes.ToArray();
            kinematics.Add(kinematic);
            return(kinematics);
        }