Example #1
0
        //public static CameraSpacePoint PointProjectionIntoPlane(CameraSpacePoint point, CameraSpacePoint planeNormal)
        //{
        //    float x = point.X;
        //    float y = point.Y;
        //    float z = point.Z;

        //    float a = planeNormal.X;
        //    float b = planeNormal.Y;
        //    float c = planeNormal.Z;

        //    float t = (a*)
        //}

        public static Planes GetPlanes(Dictionary <JointType, Joint> joints)
        {
            CameraSpacePoint spineBase = joints[JointType.SpineBase].Position;
            CameraSpacePoint spineMid  = joints[JointType.SpineMid].Position;

            CameraSpacePoint horizontalPlane = LinearAlgebra.Sub(spineMid, spineBase);
            CameraSpacePoint hipToHip        = LinearAlgebra.Sub(joints[JointType.HipLeft].Position, joints[JointType.HipRight].Position); // difference between both hips
            CameraSpacePoint sagittalPlane   = LinearAlgebra.CrossProduct(horizontalPlane, hipToHip);
            CameraSpacePoint frontalPlane    = LinearAlgebra.CrossProduct(horizontalPlane, sagittalPlane);


            Planes plane = new Planes(horizontalPlane, sagittalPlane, frontalPlane);

            return(new Planes(horizontalPlane, sagittalPlane, frontalPlane));;
        }
Example #2
0
        public void Analyze(JointsList jointsList)
        {
            FootDistances      = GetAnkleDistancesFromEachOther(jointsList);
            SpineBasePositions = GetSpineCenterPositions(jointsList);

            leftAnkledistancesFromPlane  = new List <float>();
            rightAnkledistancesFromPlane = new List <float>();
            foreach (Dictionary <JointType, Joint> joints in jointsList)
            {
                Planes planes = GetPlanes(joints);

                float distLeft  = GetDistanceFromPlane(joints[JointType.AnkleLeft].Position, joints[JointType.SpineBase].Position, planes.FrontalPlane);
                float distRight = GetDistanceFromPlane(joints[JointType.AnkleRight].Position, joints[JointType.SpineBase].Position, planes.FrontalPlane);
                leftAnkledistancesFromPlane.Add(distLeft);
                rightAnkledistancesFromPlane.Add(distRight);
            }
        }