Stap 4: Stap 3: vergelijken van gezamenlijke Sets
Wij hebben gekozen voor het analyseren van de vier sets van gewrichten: schouders, heupen, polsen, linker knie en juiste enkel, en rechterknie en links enkel.
het doel was om een soort van indicatie toen een gezamenlijke uit plaatsing. Uit de plaatsing in dit scenario zou zijn wanneer de twee gewrichten geen langere niveau waren.
Wij schreef 2 functies om te controleren levelness:
function1--voor schouders, heupen en polsen (dit kan worden toegevoegd aan de onderkant van de skeleton stream renderer)
//functions die we toegevoegd
gebruikt om te controleren levelness van heupen, polsen en schouders
privé-lijst < JointType > IsLevel (JointType j1, j2 JointType)
{
Lijst van < JointType > higherJoints = nieuwe lijst < JointType > ();
foreach (var skelet in skeletonData)
{
int Y1 = (int) mapMethod (skelet. Gewrichten [j1]. Positie). Y;
int Y2 = (int) mapMethod (skelet. Gewrichten [j2]. Positie). Y;
Als (Math.Abs (Y1 - Y2) < 10)
{
higherJoints.Add(JointType.Head); geeft als resultaat het hoofd gezamenlijke omdat dat gezamenlijke ongeldig is
}
anders
{
Als (Y2 < Y1) higherJoints.Add(j2);
Als (Y1 < Y2) higherJoints.Add(j1);
}
}
Return higherJoints;
}
In wezen, als de gewrichten niveau zijn, het geeft de hoofd gezamenlijke (oftewel niet-bestaande in het programma) en dan zal worden gezien als groen. Echter, als de afstand tussen de gewrichten groter dan tien is, blijkt de hogere gezamenlijke rode, waarschuwen de speler die dat bepaalde gezamenlijke van de aanpassing is.
Functie 2 (controleert de knieën en enkels):
//used om te controleren van de plaatsing van de voet en knie in passe
privé-lijst < JointType > IsHigher (JointType j3, j4 JointType)
{
Lijst van < JointType > lowerJoints = nieuwe lijst < JointType > ();
foreach (var skelet in skeletonData)
{
int Y3 = (int) mapMethod (skelet. Gewrichten [j3]. Positie). Y;
int Y4 = (int) mapMethod (skelet. Gewrichten [j4]. Positie). Y;
Als (Math.Abs (Y3 - Y4) < 10 || Math.Abs(Y3-Y4) > 70 || Y3 < Y4)
{
lowerJoints.Add(JointType.Head);
}
anders
{
lowerJoints.Add(j3);
}
}
Return lowerJoints;
}
Dit doet het zelfde ding als functie 1, maar in de tegenovergestelde richting. Als het enkelgewricht te ver onder de knie, is rood gekleurd. Alle foutenpercentages kunnen gemakkelijk worden aangepast voor verschillende niveaus van dansers.
Dan moeten we deze functies in als variabelen toe te voegen. Voeg de volgende code recht voordat de beenderen zijn getrokken: Lijst < JointType > shoulderCheck = IsLevel (JointType.ShoulderRight, JointType.ShoulderLeft);
//Variables Kelcy toegevoegd
Lijst < JointType > hipCheck = IsLevel (JointType.HipRight, JointType.HipLeft);
Lijst < JointType > wristCheck = IsLevel (JointType.WristRight, JointType.WristLeft);
Lijst < JointType > kneeAndAnkleCheckR = IsHigher (JointType.AnkleRight, JointType.KneeLeft);
Lijst < JointType > kneeAndAnkleCheckL IsHigher (JointType.AnkleLeft, JointType.KneeRight) =