示例#1
0
        public static IJoint Add(IJoint j1, IJoint j2)
        {
            var newJoint = new OrientedJoint(j1.JointType, j1.Valid)
            {
                Point       = j1.Point + j2.Point,
                Orientation = j1.Orientation + j2.Orientation
            };

            foreach (var child in j1.GetChildren())
            {
                newJoint.AddChild(Add(child, j2.FindChild(child.JointType)));
            }

            return(newJoint);
        }
示例#2
0
        public static IJoint Div(IJoint j, int divisor)
        {
            var newJoint = new OrientedJoint(j.JointType, j.Valid)
            {
                Point       = j.Point / divisor,
                Orientation = j.Orientation / divisor
            };

            foreach (var child in j.GetChildren())
            {
                newJoint.AddChild(Div(child, divisor));
            }

            return(newJoint);
        }
示例#3
0
        public void TestUpdate()
        {
            var s    = Creator.GetNewDefaultSkeleton <InMapSkeleton>();
            var head = new OrientedJoint {
                JointType = JointType.HEAD, Point = new Vector3(1, 2, 3)
            };

            s.UpdateSkeleton(JointType.HEAD, head);

            var head2 = s.GetJoint(JointType.HEAD);

            Assert.AreEqual(head.Point, head2.Point);
            Assert.AreEqual(head, head2);

            Assert.AreEqual(17, s.Joints.Count);
        }
示例#4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="j1"></param>
        /// <param name="j2"></param>
        /// <returns></returns>
        public static IJoint Diff(IJoint j1, IJoint j2)
        {
            if (j1.JointType != j2.JointType)
            {
                throw new Exception("Joint types defer from each other.");
            }
            var newJoint = new OrientedJoint(j1.JointType, j1.Valid)
            {
                Point       = j1.Point - j2.Point,
                Orientation = j1.Orientation - j2.Orientation
            };

            foreach (var child in j1.GetChildren())
            {
                newJoint.AddChild(Diff(child, j2.FindChild(child.JointType)));
            }

            return(newJoint);
        }