public GestureComponent(JointType j1, JointType j2, JointRelationship begin, JointRelationship end) { Joint1 = j1; Joint2 = j2; Begin = begin; Ending = end; }
private bool CompareJointRelationship(Joint inJoint1, Joint inJoint2, JointRelationship relation) { switch (relation) { case JointRelationship.None: return(true); case JointRelationship.AboveAndLeft: return((inJoint1.Position.X < inJoint2.Position.X) && (inJoint2.Position.Y < inJoint1.Position.Y)); case JointRelationship.AboveAndRight: return((inJoint1.Position.X > inJoint2.Position.X) && (inJoint2.Position.Y < inJoint1.Position.Y)); case JointRelationship.BelowAndLeft: return((inJoint1.Position.X < inJoint2.Position.X) && (inJoint2.Position.Y > inJoint1.Position.Y)); case JointRelationship.BelowAndRight: return((inJoint1.Position.X > inJoint2.Position.X) && (inJoint2.Position.Y > inJoint1.Position.Y)); case JointRelationship.Below: return(inJoint2.Position.Y > inJoint1.Position.Y); case JointRelationship.Above: return(inJoint2.Position.Y < inJoint1.Position.Y); case JointRelationship.LeftOf: return(inJoint1.Position.X < inJoint2.Position.X); case JointRelationship.RightOf: return(inJoint1.Position.X > inJoint2.Position.X); } return(false); }
public GestureComponent(JointType joint1, JointType joint2, JointRelationship endingRelationship, JointRelationship beginningRelationship = JointRelationship.None) { Joint1 = joint1; Joint2 = joint2; EndingRelationship = endingRelationship; BeginningRelationship = beginningRelationship; }
// ------------------------------------------ // Parser // ------------------------------------------ public static GestureComponent Parse(XmlTextReader reader) { GestureComponent component = new GestureComponent(); var j1 = reader.GetAttribute("firstJoint"); if (j1 != null) { JointType join = (JointType)(Enum.Parse(typeof(JointType), j1)); component.Joint1 = join; } var j2 = reader.GetAttribute("secondJoint"); if (j2 != null) { JointType join = (JointType)(Enum.Parse(typeof(JointType), j2)); component.Joint2 = join; } var begin = reader.GetAttribute("beginningRelationship"); if (begin != null) { JointRelationship rs = (JointRelationship)(Enum.Parse(typeof(JointRelationship), begin)); component.Begin = rs; } var end = reader.GetAttribute("endingRelationship"); if (end != null) { JointRelationship rs = (JointRelationship)(Enum.Parse(typeof(JointRelationship), end)); component.Ending = rs; } return(component); }
private bool CompareJointRelationship(Joint inJoint1, Joint inJoint2, JointRelationship relation) { switch (relation) { case JointRelationship.None: return true; case JointRelationship.Below: return inJoint1.Position.Y > inJoint2.Position.Y; case JointRelationship.Above: return inJoint1.Position.Y < inJoint2.Position.Y; case JointRelationship.LeftOf: return inJoint1.Position.X < inJoint2.Position.X; case JointRelationship.RightOf: return inJoint1.Position.X > inJoint2.Position.X; case JointRelationship.Front: return inJoint1.Position.Z < inJoint2.Position.Z; case JointRelationship.Behind: return inJoint1.Position.Z > inJoint2.Position.Z; case JointRelationship.AboveAndLeft: return ((inJoint1.Position.X < inJoint2.Position.X) && (inJoint1.Position.Y < inJoint2.Position.Y)); case JointRelationship.AboveAndRight: return ((inJoint1.Position.X > inJoint2.Position.X) && (inJoint1.Position.Y < inJoint2.Position.Y)); case JointRelationship.BelowAndLeft: return ((inJoint1.Position.X < inJoint2.Position.X) && (inJoint1.Position.Y > inJoint2.Position.Y)); case JointRelationship.BelowAndRight: return ((inJoint1.Position.X > inJoint2.Position.X) && (inJoint1.Position.Y > inJoint2.Position.Y)); case JointRelationship.FrontAbove: return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y)); case JointRelationship.FrontBelow: return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y)); case JointRelationship.FrontLeftOf: return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.X < inJoint2.Position.X)); case JointRelationship.FrontRightOf: return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.X > inJoint2.Position.X)); case JointRelationship.FrontAboveAndRight: return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y) && (inJoint1.Position.X > inJoint2.Position.X)); case JointRelationship.FrontBelowAndRight: return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y) && (inJoint1.Position.X > inJoint2.Position.X)); case JointRelationship.FrontAboveAndLeft: return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y) && (inJoint1.Position.X < inJoint2.Position.X)); case JointRelationship.FrontBelowAndLeft: return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y) && (inJoint1.Position.X < inJoint2.Position.X)); case JointRelationship.BehindAbove: return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y)); case JointRelationship.BehindBelow: return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y)); case JointRelationship.BehindLeftOf: return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.X < inJoint2.Position.X)); case JointRelationship.BehindRightOf: return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.X > inJoint2.Position.X)); case JointRelationship.BehindAboveAndRight: return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y) && (inJoint1.Position.X > inJoint2.Position.X)); case JointRelationship.BehindBelowAndRight: return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y) && (inJoint1.Position.X > inJoint2.Position.X)); case JointRelationship.BehindAboveAndLeft: return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y) && (inJoint1.Position.X < inJoint2.Position.X)); case JointRelationship.BehindBelowAndLeft: return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y) && (inJoint1.Position.X < inJoint2.Position.X)); } return false; }
private bool CompareJointRelationship(Joint inJoint1, Joint inJoint2, JointRelationship relation) { if ((inJoint1.JointType.ToString().Contains("WristRight"))) { if (inJoint2.JointType.ToString().Contains("ShoulderCenter")) { sizeOfArm = inJoint2.Position.Z - inJoint1.Position.Z; if((sizeOfArm > 0.5)&&(!gest)){ gest = true; Debug.WriteLine("Arm Size:" + sizeOfArm.ToString()); Debug.WriteLine("Forward Gesture Detected: " + gest); GestureMapState.Connect("169.254.27.218", 4); } else if ((sizeOfArm < 0.3)&&(gest)) { gest = false; } } } if (inJoint2.JointType.ToString().Contains("WristRight")) { Debug.WriteLine("Posicao da junta " + inJoint2.JointType + " #2 em Z: " + inJoint2.Position.Z); } switch (relation) { case JointRelationship.None: return true; case JointRelationship.AboveAndLeft: return ((inJoint1.Position.X < inJoint2.Position.X) && (inJoint1.Position.Y < inJoint2.Position.Y)); case JointRelationship.AboveAndRight: return ((inJoint1.Position.X > inJoint2.Position.X) && (inJoint1.Position.Y < inJoint2.Position.Y)); case JointRelationship.BelowAndLeft: return ((inJoint1.Position.X < inJoint2.Position.X) && (inJoint1.Position.Y > inJoint2.Position.Y)); case JointRelationship.BelowAndRight: return ((inJoint1.Position.X > inJoint2.Position.X) && (inJoint1.Position.Y > inJoint2.Position.Y)); case JointRelationship.Behind: return ((inJoint1.Position.Z < inJoint2.Position.Z)); case JointRelationship.InFrontOf: return ((inJoint1.Position.Z > inJoint2.Position.Z)); case JointRelationship.Below: return inJoint1.Position.Y > inJoint2.Position.Y; case JointRelationship.Above: return inJoint1.Position.Y < inJoint2.Position.Y; case JointRelationship.LeftOf: return inJoint1.Position.X < inJoint2.Position.X; case JointRelationship.RightOf: return inJoint1.Position.X > inJoint2.Position.X; } return false; }
private bool CompareJointRelationship(Joint inJoint1, Joint inJoint2, JointRelationship relation) { if ((inJoint1.JointType.ToString().Contains("WristRight"))) { if (inJoint2.JointType.ToString().Contains("ShoulderCenter")) { sizeOfArm = inJoint2.Position.Z - inJoint1.Position.Z; if ((sizeOfArm > 0.5) && (!gest)) { gest = true; Debug.WriteLine("Arm Size:" + sizeOfArm.ToString()); Debug.WriteLine("Forward Gesture Detected: " + gest); GestureMapState.Connect("169.254.27.218", 4); } else if ((sizeOfArm < 0.3) && (gest)) { gest = false; } } } if (inJoint2.JointType.ToString().Contains("WristRight")) { Debug.WriteLine("Posicao da junta " + inJoint2.JointType + " #2 em Z: " + inJoint2.Position.Z); } switch (relation) { case JointRelationship.None: return(true); case JointRelationship.AboveAndLeft: return((inJoint1.Position.X < inJoint2.Position.X) && (inJoint1.Position.Y < inJoint2.Position.Y)); case JointRelationship.AboveAndRight: return((inJoint1.Position.X > inJoint2.Position.X) && (inJoint1.Position.Y < inJoint2.Position.Y)); case JointRelationship.BelowAndLeft: return((inJoint1.Position.X < inJoint2.Position.X) && (inJoint1.Position.Y > inJoint2.Position.Y)); case JointRelationship.BelowAndRight: return((inJoint1.Position.X > inJoint2.Position.X) && (inJoint1.Position.Y > inJoint2.Position.Y)); case JointRelationship.Behind: return((inJoint1.Position.Z < inJoint2.Position.Z)); case JointRelationship.InFrontOf: return((inJoint1.Position.Z > inJoint2.Position.Z)); case JointRelationship.Below: return(inJoint1.Position.Y > inJoint2.Position.Y); case JointRelationship.Above: return(inJoint1.Position.Y < inJoint2.Position.Y); case JointRelationship.LeftOf: return(inJoint1.Position.X < inJoint2.Position.X); case JointRelationship.RightOf: return(inJoint1.Position.X > inJoint2.Position.X); } return(false); }