Étape 4: Étape 3: comparer les ensembles mixtes
Nous avons choisi d’analyser quatre ensembles de joints : épaules, hanches, poignets, genou et la cheville droite et genou droit et cheville gauche.
l’objectif était d’avoir une sorte d’indication lorsqu’une articulation a été hors de placement. Hors placement dans ce scénario serait quand les deux joints n’étaient aucun plus de niveau.
Nous avons écrit 2 fonctions pour vérifier l’aplomb :
function1--pour les épaules, des hanches et des poignets (Ceci peut être ajouté au bas du moteur de rendu de flux squelette)
//functions que nous avons ajouté
utilisé pour vérifier l’aplomb des hanches, les poignets et les épaules
Liste privée < JointType > IsLevel (JointType j1, j2 JointType)
{
Liste des higherJoints < JointType > = gcnew List < JointType > () ;
foreach (var squelette dans skeletonData)
{
int Y1 = (int) mapMethod (squelette. Articulations [j1]. Position). Y ;
int Y2 = (int) mapMethod (squelette. Articulations [j2]. Position). Y ;
Si (Math.Abs (Y1 - Y2) < 10)
{
higherJoints.Add(JointType.Head) ; retourne la tête mixte parce que cette articulation est nulle
}
d’autre
{
Si (Y2 < Y1) higherJoints.Add(j2) ;
Si (Y1 < Y2) higherJoints.Add(j1) ;
}
}
Return higherJoints ;
}
Essentiellement, si les joints sont de niveau, il sera de retour la tête mixte (qui n’existe pas dans le programme) et sera alors considéré comme vert. Toutefois, si la distance entre les joints est supérieure à dix, il s’avère le plus élevé rouge mixte, alerter le lecteur que cette articulation particulière est hors de l’alignement.
Fonction 2 (vérifie les genoux et les chevilles) :
//used pour vérifier le placement du pied et du genou en passe
Liste privée < JointType > IsHigher (JointType j3, j4 JointType)
{
Liste des lowerJoints < JointType > = gcnew List < JointType > () ;
foreach (var squelette dans skeletonData)
{
int Y3 = (int) mapMethod (squelette. Articulations [j3]. Position). Y ;
int Y4 = (int) mapMethod (squelette. Articulations [j4]. Position). Y ;
Si (Math.Abs (Y3 - Y4) < 10 || Math.Abs(Y3-Y4) > 70 || Y3 < Y4)
{
lowerJoints.Add(JointType.Head) ;
}
d’autre
{
lowerJoints.Add(j3) ;
}
}
Return lowerJoints ;
}
Cela fait la même chose comme fonction 1, mais dans la direction opposée. Si l’articulation de la cheville est trop loin au-dessous du genou, il est de couleur rouge. Toutes les marges d’erreur peuvent être facilement ajustées pour différents niveaux de danseurs.
Il faut ensuite ajouter ces fonctions en tant que variables. Ajoutez le code suivant juste avant que les os sont dessinés : Liste < JointType > shoulderCheck = IsLevel (JointType.ShoulderRight, JointType.ShoulderLeft) ;
//Variables Francesca ajouté
Liste < JointType > hipCheck = IsLevel (JointType.HipRight, JointType.HipLeft) ;
Liste < JointType > wristCheck = IsLevel (JointType.WristRight, JointType.WristLeft) ;
Liste < JointType > kneeAndAnkleCheckR = IsHigher (JointType.AnkleRight, JointType.KneeLeft) ;
Liste < JointType > kneeAndAnkleCheckL = IsHigher (JointType.AnkleLeft, JointType.KneeRight);