public static GestureSegment generateSegmentFromSkeleton(Skeleton skeleton) { Dictionary<JointType, JointData> dictionary = new Dictionary<JointType,JointData>(); //Console.WriteLine("GestureSegment segment = new GestureSegment(dict1)"); //Console.WriteLine("segments.Add(segment)"); ; foreach (JointType joint in jointArray) { // Calculate the value and add into dictionary float x = skeleton.Joints[joint].Position.X; float y = skeleton.Joints[joint].Position.Y; float z = skeleton.Joints[joint].Position.Z; double x_angle = (Math.Atan(x / z) * 180) / Math.PI; double y_angle = (Math.Atan(y / x) * 180) / Math.PI; JointData data = new JointData(joint, x_angle, y_angle, x); dictionary.Add(joint, data); //Console.WriteLine(joint + " " + x_angle + " " + y_angle); //Console.WriteLine("data = new JointData(JointType."+joint+", " + x_angle + ", " + y_angle + ", 10);"); //Console.WriteLine("dict1.Add(JointType." + joint + ", data);"); } return new GestureSegment(dictionary); //return null; }
public GestureDetect() { m_currentNode = new TrieNode(); List<GestureSegment> segments = new List<GestureSegment>(); Dictionary<JointType, JointData> dict1 = new Dictionary<JointType,JointData>(); JointData data = new JointData(JointType.ElbowLeft, -4.50156369656848, 76.316932955313, 10); dict1.Add(JointType.ElbowLeft, data); data = new JointData(JointType.ElbowRight, 1.51893426700379, -85.4183328123706, 10); dict1.Add(JointType.ElbowRight, data); data = new JointData(JointType.HandLeft, -5.27420548570973, 79.0775137239691, 10); dict1.Add(JointType.HandLeft, data); data = new JointData(JointType.HandRight, 2.79117827175244, -83.7977168089263, 10); dict1.Add(JointType.HandRight, data); data = new JointData(JointType.ShoulderLeft, -8.50458482122497, 58.5640350015726, 10); dict1.Add(JointType.ShoulderLeft, data); data = new JointData(JointType.ShoulderRight, 1.29933884339533, -84.7637953603602, 10); dict1.Add(JointType.ShoulderRight, data); data = new JointData(JointType.WristLeft, -6.09018793140734, 76.7740072969837, 10); dict1.Add(JointType.WristLeft, data); data = new JointData(JointType.WristRight, 3.32410390623434, -81.9923424537729, 10); dict1.Add(JointType.WristRight, data); GestureSegment segment = new GestureSegment(dict1); segments.Add(segment); dict1.Clear(); data = new JointData(JointType.ElbowLeft, -2.65120821954993, 80.9836459608154, 10); dict1.Add(JointType.ElbowLeft, data); data = new JointData(JointType.ElbowRight, 1.51039503051607, -85.449379610491, 10); dict1.Add(JointType.ElbowRight, data); data = new JointData(JointType.HandLeft, -4.33679713468812, 80.0299024459167, 10); dict1.Add(JointType.HandLeft, data); data = new JointData(JointType.HandRight, 2.79303614652534, -83.8031257412415, 10); dict1.Add(JointType.HandRight, data); data = new JointData(JointType.ShoulderLeft, -8.30808671510396, 58.295435701722, 10); dict1.Add(JointType.ShoulderLeft, data); data = new JointData(JointType.ShoulderRight, 1.2797716225607, -84.8420419754879, 10); dict1.Add(JointType.ShoulderRight, data); data = new JointData(JointType.WristLeft, -5.11624594527998, 77.6154861050017, 10); dict1.Add(JointType.WristLeft, data); data = new JointData(JointType.WristRight, 3.32196919837735, -82.0158057631026, 10); dict1.Add(JointType.WristRight, data); segment = new GestureSegment(dict1); segments.Add(segment); dict1.Clear(); data = new JointData(JointType.ElbowLeft, -4.52696138753418, 76.050446116649, 10); dict1.Add(JointType.ElbowLeft, data); data = new JointData(JointType.ElbowRight, 1.57481632473222, -85.2386427383755, 10); dict1.Add(JointType.ElbowRight, data); data = new JointData(JointType.HandLeft, -5.29344972555013, 78.8845237995042, 10); dict1.Add(JointType.HandLeft, data); data = new JointData(JointType.HandRight, 2.78430269993827, -83.8351120537675, 10); dict1.Add(JointType.HandRight, data); data = new JointData(JointType.ShoulderLeft, -7.73010110339442, 59.4834490383893, 10); dict1.Add(JointType.ShoulderLeft, data); data = new JointData(JointType.ShoulderRight, 1.29915281642949, -84.7414405710047, 10); dict1.Add(JointType.ShoulderRight, data); data = new JointData(JointType.WristLeft, -6.09391277772654, 76.584821792357, 10); dict1.Add(JointType.WristLeft, data); data = new JointData(JointType.WristRight, 3.30937029873276, -82.0683823755423, 10); dict1.Add(JointType.WristRight, data); segment = new GestureSegment(dict1); segments.Add(segment); dict1.Clear(); data = new JointData(JointType.ElbowLeft, -4.55997368322977, 76.0492472976981, 10); dict1.Add(JointType.ElbowLeft, data); data = new JointData(JointType.ElbowRight, 1.76899733093313, -84.6415797924758, 10); dict1.Add(JointType.ElbowRight, data); data = new JointData(JointType.HandLeft, -5.50142780873238, 78.5007140684528, 10); dict1.Add(JointType.HandLeft, data); data = new JointData(JointType.HandRight, -2.58818375299741, 83.8235541601875, 10); dict1.Add(JointType.HandRight, data); data = new JointData(JointType.ShoulderLeft, -8.70737767416432, 58.4645819026804, 10); dict1.Add(JointType.ShoulderLeft, data); data = new JointData(JointType.ShoulderRight, 1.03908323631209, -85.7812872564111, 10); dict1.Add(JointType.ShoulderRight, data); data = new JointData(JointType.WristLeft, -6.29745722682813, 76.209996863806, 10); dict1.Add(JointType.WristLeft, data); data = new JointData(JointType.WristRight, -2.03893538810967, 84.6539053339944, 10); dict1.Add(JointType.WristRight, data); segment = new GestureSegment(dict1); segments.Add(segment); dict1.Clear(); data = new JointData(JointType.ElbowLeft, -3.76788888422445, 77.9908126242001, 10); dict1.Add(JointType.ElbowLeft, data); data = new JointData(JointType.ElbowRight, 0.170834344326128, -89.4926318580757, 10); dict1.Add(JointType.ElbowRight, data); data = new JointData(JointType.HandLeft, -12.7602854702621, 56.4400742384674, 10); dict1.Add(JointType.HandLeft, data); data = new JointData(JointType.HandRight, -3.66677897947356, 81.995017948452, 10); dict1.Add(JointType.HandRight, data); data = new JointData(JointType.ShoulderLeft, -8.85565048977197, 57.9722900347853, 10); dict1.Add(JointType.ShoulderLeft, data); data = new JointData(JointType.ShoulderRight, 0.500513295503658, -87.9057823779831, 10); dict1.Add(JointType.ShoulderRight, data); data = new JointData(JointType.WristLeft, -10.5800344301698, 60.7816349446109, 10); dict1.Add(JointType.WristLeft, data); data = new JointData(JointType.WristRight, -2.63102505581758, 83.8019954092871, 10); dict1.Add(JointType.WristRight, data); segment = new GestureSegment(dict1); segments.Add(segment); dict1.Clear(); data = new JointData(JointType.ElbowLeft, -5.75231350290312, 66.9553417984875, 10); dict1.Add(JointType.ElbowLeft, data); data = new JointData(JointType.ElbowRight, 4.53692253537415, -67.9569673830934, 10); dict1.Add(JointType.ElbowRight, data); data = new JointData(JointType.HandLeft, -12.7146546412539, 52.6287162529574, 10); dict1.Add(JointType.HandLeft, data); data = new JointData(JointType.HandRight, -1.36900750114951, 78.5402686537019, 10); dict1.Add(JointType.HandRight, data); data = new JointData(JointType.ShoulderLeft, -12.171888257629, 51.2432022633995, 10); dict1.Add(JointType.ShoulderLeft, data); data = new JointData(JointType.ShoulderRight, 1.42775363040743, -83.9996583503326, 10); dict1.Add(JointType.ShoulderRight, data); data = new JointData(JointType.WristLeft, -10.9645051323317, 55.3888097856532, 10); dict1.Add(JointType.WristLeft, data); data = new JointData(JointType.WristRight, 0.0419401254424694, -89.6932169970724, 10); dict1.Add(JointType.WristRight, data); segment = new GestureSegment(dict1); segments.Add(segment); dict1.Clear(); data = new JointData(JointType.ElbowLeft, -3.99502679796075, 72.6206450326225, 10); dict1.Add(JointType.ElbowLeft, data); data = new JointData(JointType.ElbowRight, 5.66616058838355, -73.1782113477185, 10); dict1.Add(JointType.ElbowRight, data); data = new JointData(JointType.HandLeft, -7.98342558631133, 68.4934529522154, 10); dict1.Add(JointType.HandLeft, data); data = new JointData(JointType.HandRight, 12.295566468161, -45.0739402511015, 10); dict1.Add(JointType.HandRight, data); data = new JointData(JointType.ShoulderLeft, -8.73430475576969, 57.4977914558669, 10); dict1.Add(JointType.ShoulderLeft, data); data = new JointData(JointType.ShoulderRight, 0.672128830331295, -87.2719292062135, 10); dict1.Add(JointType.ShoulderRight, data); data = new JointData(JointType.WristLeft, -6.90371844921663, 69.2693206614554, 10); dict1.Add(JointType.WristLeft, data); data = new JointData(JointType.WristRight, 10.6331117539806, -52.7667536470163, 10); dict1.Add(JointType.WristRight, data); segment = new GestureSegment(dict1); segments.Add(segment); dict1.Clear(); data = new JointData(JointType.ElbowLeft, -3.6795045384253, 73.5843093387949, 10); dict1.Add(JointType.ElbowLeft, data); data = new JointData(JointType.ElbowRight, 7.20321681872982, -65.7034055466752, 10); dict1.Add(JointType.ElbowRight, data); data = new JointData(JointType.HandLeft, -7.57031458883527, 69.4232084190014, 10); dict1.Add(JointType.HandLeft, data); data = new JointData(JointType.HandRight, 12.3539041182334, -33.8672038076763, 10); dict1.Add(JointType.HandRight, data); data = new JointData(JointType.ShoulderLeft, -8.40002768889213, 58.130452149117, 10); dict1.Add(JointType.ShoulderLeft, data); data = new JointData(JointType.ShoulderRight, 0.878135081983395, -86.4535620095332, 10); dict1.Add(JointType.ShoulderRight, data); data = new JointData(JointType.WristLeft, -6.51918867469597, 70.1931973685357, 10); dict1.Add(JointType.WristLeft, data); data = new JointData(JointType.WristRight, 11.0712796749129, -42.7996757536621, 10); dict1.Add(JointType.WristRight, data); segment = new GestureSegment(dict1); segments.Add(segment); dict1.Clear(); data = new JointData(JointType.ElbowLeft, -6.15307368845637, 64.7615235705074, 10); dict1.Add(JointType.ElbowLeft, data); data = new JointData(JointType.ElbowRight, 5.69418170135753, -61.023306612055, 10); dict1.Add(JointType.ElbowRight, data); data = new JointData(JointType.HandLeft, -11.1796353833734, 53.0192798243889, 10); dict1.Add(JointType.HandLeft, data); data = new JointData(JointType.HandRight, -0.310151351797389, 87.7954266795302, 10); dict1.Add(JointType.HandRight, data); data = new JointData(JointType.ShoulderLeft, -4.24973249211829, 61.2639998515406, 10); dict1.Add(JointType.ShoulderLeft, data); data = new JointData(JointType.ShoulderRight, 2.15197412927674, -64.7660502959084, 10); dict1.Add(JointType.ShoulderRight, data); data = new JointData(JointType.WristLeft, -10.3525787518531, 56.7449018452825, 10); dict1.Add(JointType.WristLeft, data); data = new JointData(JointType.WristRight, 0.882833195831113, -82.4209887968226, 10); dict1.Add(JointType.WristRight, data); segment = new GestureSegment(dict1); segments.Add(segment); dict1.Clear(); data = new JointData(JointType.ElbowLeft, -4.94041132093647, 73.5463516374905, 10); dict1.Add(JointType.ElbowLeft, data); data = new JointData(JointType.ElbowRight, 7.15939420641997, -65.4584753854321, 10); dict1.Add(JointType.ElbowRight, data); data = new JointData(JointType.HandLeft, -9.11171717555313, 67.3790769319718, 10); dict1.Add(JointType.HandLeft, data); data = new JointData(JointType.HandRight, 15.3477712244698, -44.1046220794308, 10); dict1.Add(JointType.HandRight, data); data = new JointData(JointType.ShoulderLeft, -8.21448431283458, 58.5988040447074, 10); dict1.Add(JointType.ShoulderLeft, data); data = new JointData(JointType.ShoulderRight, 1.05695666236123, -85.7238423580136, 10); dict1.Add(JointType.ShoulderRight, data); data = new JointData(JointType.WristLeft, -8.00818904719426, 68.6883867901354, 10); dict1.Add(JointType.WristLeft, data); data = new JointData(JointType.WristRight, 13.1789632828376, -48.7924370113171, 10); dict1.Add(JointType.WristRight, data); segment = new GestureSegment(dict1); segments.Add(segment); dict1.Clear(); m_currentNode.addSegments(segments, "Wave"); m_root = m_currentNode; }
public bool InSameDirection(JointData data, JointData prevData) { if (data.DaJoint != DaJoint) return false; x_dir = ((data.m_angleX - m_angleX) > 0) ? Direction.POS : Direction.NEG; y_dir = ((data.m_angleY - m_angleY) > 0) ? Direction.POS : Direction.NEG; Console.WriteLine("xDir " + x_dir + " y_dir " + y_dir); if (prevData == null) { Console.WriteLine("prev Data was null"); return true; } Console.WriteLine("PREV: xDir " + prevData.x_dir + "y_dir " + prevData.y_dir); return (prevData.x_dir == x_dir && prevData.y_dir == y_dir); }
// May need to refine this. // TODO: Return true if at least 50% overlap public bool Overlap(JointData data) { if (data.DaJoint != DaJoint) return false; return (PercentOverlap(Axis.x, data.m_angleX) >= 50) && (PercentOverlap(Axis.y, data.m_angleY) >= 50); }
public bool InAggregateRange(JointData data) { if (data.DaJoint != DaJoint) return false; Console.WriteLine("Tol axis.x " + data.m_angleX + " vs " + m_angleX); Console.WriteLine("Tol axis.y " + data.m_angleY + " vs " + m_angleY); return InRange(Axis.x, data.m_angleX, AGGREGATE_TOLERANCE) && InRange(Axis.y, data.m_angleY, AGGREGATE_TOLERANCE); }