from scipy.spatial.distance import euclidean

from services import (
    getCoordinates,
    countFullLength,
)

class Hands():
    def __init__(self, df) -> None:
        # Храним в классе пары в течении всех кадров и параметры
        self.pairSequence = self.getArmsPoints(df)
        self.min, self.max, self.mean = countFullLength(self.pairSequence)

    # Подсчет длинны от кисти до плеча
    def getArmsPoints(self, df):
        series = getCoordinates(df)
        for seria in series:
            subSeria = seria[[
                "Левая кисть", 
                "Левый локоть", 
                'Левое плечо', 
                "Правая кисть", 
                "Правый локоть", 
                "Правое плечо"
                ]]
            
            left_elbow = euclidean(subSeria[0], subSeria[1])
            left_shoulder = euclidean(subSeria[1], subSeria[2])
            right_elbow = euclidean(subSeria[3], subSeria[4])
            right_shoulder = euclidean(subSeria[4], subSeria[5])

            yield (left_elbow + left_shoulder, right_elbow + right_shoulder)

