def keep_the_lag(self):
        lwrist = self.kp[5][5]
        club = self.kp[5][25]
        diff = p2_diff(lwrist, club)[0] / self.height

        if club[0] == 0:
            self.feedback["keep_the_lag"] = {
                0: 0,
                1: diff,
                2: "클럽 헤드를 감지하지 못 했습니다."
            }
            return

        if 0.0 <= diff <= 1.0:
            self.feedback["keep_the_lag"] = {
                0: 2,
                1: diff,
                2: "임팩트까지 래깅 유지"
            }
        elif -0.5 <= diff <= 0.0:
            self.feedback["keep_the_lag"] = {
                0: 1,
                1: diff,
                2: "어드레스 시 손목을 클럽보다 앞에 두고 클럽을 살짝 기울여 세팅하게 됩니다. 임팩트 시에도 손목 위치를 동일하게 하여 래깅을 유지해야 합니다."
            }
        else:
            self.feedback["keep_the_lag"] = {
                0: 0,
                1: diff,
                2: "어드레스 시 손목을 클럽보다 앞에 두고 클럽을 살짝 기울여 세팅하게 됩니다. 임팩트 시에도 손목 위치를 동일하게 하여 래깅을 유지해야 합니다."
            }
    def sway(self):
        lhip_address = self.kp[0][9]
        lhip_downswing = self.kp[4][9]

        diff = p2_diff(lhip_address, lhip_downswing) / self.height

        if 0.0 <= diff[0] <= 1.0:
            self.feedback["sway"] = {0: 2, 1: diff[0], 2: "스웨이 체크"}
        elif -0.1 <= diff[0] <= 0.2:
            self.feedback["sway"] = {
                0:
                2,
                1:
                diff[0],
                2:
                "몸이 회전하지 않고 좌우로 이동하고 있습니다. 비거리 손실을 보게되고 스윙 궤도가 중심에서 벗어나 임팩트의 일관성이 떨어지게 됩니다."
            }
        else:
            self.feedback["sway"] = {
                0:
                0,
                1:
                diff[0],
                2:
                "몸이 회전하지 않고 좌우로 이동하고 있습니다. 비거리 손실을 보게되고 스윙 궤도가 중심에서 벗어나 임팩트의 일관성이 떨어지게 됩니다."
            }
    def head_position(self):
        nose_address = self.kp[0][0]
        nose_backswing = self.kp[2][0]
        diff = p2_diff(nose_address, nose_backswing)[1] / self.height

        if -0.001 <= diff <= 0.001:
            self.feedback['head_position'] = {
                0: 2,
                1: diff,
                2: "척추 각도가 안정적입니다.",
            }
        elif -0.002 <= diff <= 0.002:
            self.feedback['head_position'] = {
                0:
                1,
                1:
                diff,
                2:
                "척추 각도가 무너져 머리가 상하로 움직이고 있습니다. 어드레스 시 만들었던 척추 각도가 임팩트까지 유지되어야 합니다. 척추 각도가 무너지면 스윙 궤도 또한 불안정해져 일관된 샷을 칠 수 없습니다.",
            }
        else:
            self.feedback['head_position'] = {
                0:
                0,
                1:
                diff,
                2:
                "척추 각도가 무너져 머리가 상하로 움직이고 있습니다. 어드레스 시 만들었던 척추 각도가 임팩트까지 유지되어야 합니다. 척추 각도가 무너지면 스윙 궤도 또한 불안정해져 일관된 샷을 칠 수 없습니다.",
            }
Exemple #4
0
    def sway_downswing(self):
        lhip_address = self.kp[0][9]
        lhip_downswing = self.kp[4][9]

        diff = p2_diff(lhip_address, lhip_downswing)

        if 280 <= diff[0] <= 310:
            self.feedback["sway_downswing"] = {0: 2, 1: diff[0], 2: "Good"}
        else:
            self.feedback["sway_downswing"] = {0: 0, 1: diff[0], 2: "Bad"}
Exemple #5
0
    def head_postion(self):
        nose_address = self.kp[0][0]
        nose_top = self.kp[3][0]

        diff = p2_diff(nose_address, nose_top)

        if 0 <= diff[1] <= 23:
            self.feedback["head_position"] = {0: 2, 1: diff[0], 2: "Good"}
        else:
            self.feedback["head_position"] = {0: 0, 1: diff[0], 2: "Bad"}
Exemple #6
0
    def head_postion(self):
        nose_address = self.kp[0][0]
        nose_top = self.kp[3][0]

        diff = p2_diff(nose_address, nose_top)

        if 0 <= diff[1] <= 23:
            self.feedback["head_position"] = {0: 2, 1: diff[1], 2: "등 각도 유지"}
        else:
            self.feedback["head_position"] = {
                0: 0,
                1: diff[1],
                2: "어드레스 시 유지한 등과 골반의 각도를 유지하세요. 머리가 상하로 움직이고 있습니다."
            }
Exemple #7
0
    def side_target(self):
        nose = self.kp[7][0]
        lfoot = self.kp[7][13]

        height = (nose - lfoot)[1]

        boob = self.kp[7][8]
        dick = self.kp[7][9]

        diff = p2_diff(boob, dick) / height

        if 0.01 <= diff[1] <= 0.04:
            self.feedback["target"] = {0: 2, 1: diff[0], 2: "Good"}
        else:
            self.feedback["target"] = {0: 0, 1: diff[0], 2: "Bad"}
Exemple #8
0
    def head(self):

        lfoot = self.kp[5][14]
        neck = self.kp[5][1]

        height = (lfoot - neck)[1]

        lf_address = self.kp[0][21] / height
        lf_backswing = self.kp[2][21] / height

        diff = p2_diff(lf_address, lf_backswing)

        if -0.1 <= diff[1] <= 0.2:
            self.feedback["head"] = {0: 2, 1: diff[1], 2: "Good"}
        elif -0.3 <= diff[1] <= -25:
            self.feedback["head"] = {0: 0, 1: diff[1], 2: "So SO"}
        else:
            self.feedback["head"] = {0: 0, 1: diff[1], 2: "bad"}
    def reverse_pivot(self):
        lshoulder = self.kp[4][5]
        lfoot = self.kp[4][14]
        diff = p2_diff(lshoulder, lfoot)[0] / self.height

        if 0.05 <= diff <= 0.15:
            self.feedback["reverse_pivot"] = {0: 2, 1: diff, 2: "리버스 피벗 체크"}
        elif 5 <= diff <= 16:
            self.feedback["reverse_pivot"] = {
                0: 1,
                1: diff,
                2: "오른발에서 왼발로 체중이동되는 것 아닌 왼발에서 오른발로 체중이 이동하고 있습니다.(리버스 피벗)"
            }
        else:
            self.feedback["reverse_pivot"] = {
                0: 0,
                1: diff,
                2: "오른발에서 왼발로 체중이동되는 것 아닌 왼발에서 오른발로 체중이 이동하고 있습니다.(리버스 피벗)"
            }
    def foot_fliyng(self):
        lf_address = self.kp[0][21]
        lf_backswing = self.kp[2][21]
        diff = p2_diff(lf_address, lf_backswing)

        if -25 <= diff[1] <= 25:
            self.feedback["foot_flying"] = {
                0: 2,
                1: diff[1],
                2: "왼발 들림이 없습니다",
            }
        elif diff[1] < -25:
            self.feedback["foot_flying"] = {
                0:
                0,
                1:
                diff[1],
                2:
                "백스윙 시 왼발을 들면 더 큰 회전력을 얻을 수 있지만 스윙의 일관성이 떨어질 수 있습니다. 권장되는 방법은 아닙니다.",
            }
Exemple #11
0
    def head_postion(self):
        nose_address = self.kp[0][0]
        nose_top = self.kp[3][0]

        diff = p2_diff(nose_address, nose_top) / self.height

        if -0.1 <= diff[1] <= 0.5:
            self.feedback["head_position"] = {0: 2, 1: diff[1], 2: "등 각도 유지"}
        elif -0.2 <= diff[1] <= 1.0:
            self.feedback["head_position"] = {
                0: 1,
                1: diff[1],
                2: "어드레스 시 유지한 등과 골반의 각도를 유지하세요. 머리가 상하로 움직이고 있습니다."
            }
        else:
            self.feedback["head_position"] = {
                0: 0,
                1: diff[1],
                2: "어드레스 시 유지한 등과 골반의 각도를 유지하세요. 머리가 상하로 움직이고 있습니다."
            }
Exemple #12
0
    def sway(self):
        lshoulder = self.kp[5][5]
        lfoot = self.kp[5][14]
        height = self.kp[0][1][1] - self.kp[0][11][1]

        diff = p2_diff(lshoulder, lfoot) / height

        if diff[0] <= 0.2:
            self.feedback["sway"] = {0: 2, 1: diff[0], 2: "스웨이 체크"}
        elif diff[0] <= 0.3:
            self.feedback["sway"] = {
                0: 1,
                1: diff[0],
                2: "체중 이동 시 상체가 좌우로 움직이고 있습니다. 정확한 임팩트가 어렵고 거리 손실을 보게 됩니다. "
            }
        else:
            self.feedback["sway"] = {
                0: 0,
                1: diff[0],
                2: "체중 이동 시 상체가 좌우로 움직이고 있습니다. 정확한 임팩트가 어렵고 거리 손실을 보게 됩니다. "
            }
Exemple #13
0
    def wrist_lead_club(self):
        lwrist = self.kp[5][7]
        club = self.kp[5][25]
        height = self.kp[0][1][1] - self.kp[0][11][1]

        diff = p2_diff(lwrist, club)[0] / height

        if 0 <= diff:
            self.feedback["wrist_lead_club"] = {0: 2, 1: diff, 2: "래깅"}
        elif -0.5 <= diff:
            self.feedback["wrist_lead_club"] = {
                0: 1,
                1: diff,
                2: "다운 스윙에서부터 끌고온 래깅이 임팩트까지 유지되는 것이 좋습니다."
            }
        else:
            self.feedback["wrist_lead_club"] = {
                0: 0,
                1: diff,
                2: "다운 스윙에서부터 끌고온 래깅이 임팩트까지 유지되는 것이 좋습니다."
            }
Exemple #14
0
    def head_position(self):
        nose_address = self.kp[0][0]
        nose_impact = self.kp[5][0]
        height = self.kp[0][1][1] - self.kp[0][11][1]

        diff = p2_diff(nose_address, nose_impact)[1] / height

        if -0.15 <= diff <= 0.2:
            self.feedback["head_position"] = {0: 2, 1: diff, 2: "헤드 포지션"}
        elif -0.5 <= diff <= 0.5:
            self.feedback["head_position"] = {
                0: 1,
                1: diff,
                2: "머리가 상하로 움직이면 일관된 스윙 궤도를 얻기 힘들어집니다."
            }
        else:
            self.feedback["head_position"] = {
                0: 0,
                1: diff,
                2: "머리가 상하로 움직이면 일관된 스윙 궤도를 얻기 힘들어집니다."
            }
Exemple #15
0
    def reverse_pivot(self):
        lshoulder = self.kp[5][5]
        lfoot = self.kp[5][14]
        height = self.kp[0][1][1] - self.kp[0][11][1]

        diff = p2_diff(lshoulder, lfoot) / height

        if 0.05 <= diff[0]:
            self.feedback["reverse_pivot"] = {0: 2, 1: diff[0], 2: "리버스 피벗 체크"}
        elif 0.0 <= diff[0]:
            self.feedback["reverse_pivot"] = {
                0: 1,
                1: diff[0],
                2: "임팩트 시 무게 중심이 아직 오른발에 있는지 확인해보세요."
            }
        else:
            self.feedback["reverse_pivot"] = {
                0: 0,
                1: diff[0],
                2: "임팩트 시 무게 중심이 아직 오른발에 있는지 확인해보세요."
            }
Exemple #16
0
    def foot_fliyng(self):
        lf_address = self.kp[0][21]
        lf_backswing = self.kp[2][21]

        lfoot = self.kp[2][14]
        neck = self.kp[2][1]

        height = (lfoot - neck)[1]

        diff = p2_diff(lf_address, lf_backswing) / height

        if -25 <= diff[1] <= 25:
            self.feedback["foot_flying"] = {0: 2, 1: diff[1], 2: ""}
        elif diff[1] < -25:
            self.feedback["foot_flying"] = {
                0:
                0,
                1:
                diff[1],
                2:
                "백스윙 시 왼발을 들면 더 큰 회전력을 얻을 수 있지만 스윙의 일관성이 떨어질 수 있습니다. 권장되는 방법은 아닙니다."
            }
    def sway(self):
        lhip_address = self.kp[0][9]
        lhip_backswing = self.kp[2][9]

        diff = p2_diff(lhip_address, lhip_backswing)[0] / self.height

        # 640 * 640 이미지 기준
        # -50~ 50 사이
        if -0.8 <= diff <= 0.4:
            self.feedback["sway"] = {
                0: 2,
                1: diff,
                2: "상체가 축을 중심으로 회전하고 있습니다.",
            }
        # elif -20 <= diff[0] <= 20:
        #     self.feedback["sway"] = {
        #         0: 4,
        #         1: diff[0]
        #     }
        elif -1.0 <= diff <= 1.0:
            self.feedback["sway"] = {
                0:
                1,
                1:
                diff,
                2:
                "골반과 몸통이 축을 중심으로 회전하지 않고, 좌우로 밀리고 있습니다. 스윙의 축이 변하여 정확한 임팩트가 어렵고 거리 손실을 보게 됩니다.",
            }
        else:
            self.feedback["sway"] = {
                0:
                0,
                1:
                diff,
                2:
                "골반과 몸통이 축을 중심으로 회전하지 않고, 좌우로 밀리고 있습니다. 스윙의 축이 변하여 정확한 임팩트가 어렵고 거리 손실을 보게 됩니다.",
            }