//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));; }
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); } }