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: "척추 각도가 무너져 머리가 상하로 움직이고 있습니다. 어드레스 시 만들었던 척추 각도가 임팩트까지 유지되어야 합니다. 척추 각도가 무너지면 스윙 궤도 또한 불안정해져 일관된 샷을 칠 수 없습니다.", }
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"}
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"}
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: "어드레스 시 유지한 등과 골반의 각도를 유지하세요. 머리가 상하로 움직이고 있습니다." }
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"}
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: "백스윙 시 왼발을 들면 더 큰 회전력을 얻을 수 있지만 스윙의 일관성이 떨어질 수 있습니다. 권장되는 방법은 아닙니다.", }
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: "어드레스 시 유지한 등과 골반의 각도를 유지하세요. 머리가 상하로 움직이고 있습니다." }
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: "체중 이동 시 상체가 좌우로 움직이고 있습니다. 정확한 임팩트가 어렵고 거리 손실을 보게 됩니다. " }
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: "다운 스윙에서부터 끌고온 래깅이 임팩트까지 유지되는 것이 좋습니다." }
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: "머리가 상하로 움직이면 일관된 스윙 궤도를 얻기 힘들어집니다." }
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: "임팩트 시 무게 중심이 아직 오른발에 있는지 확인해보세요." }
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: "골반과 몸통이 축을 중심으로 회전하지 않고, 좌우로 밀리고 있습니다. 스윙의 축이 변하여 정확한 임팩트가 어렵고 거리 손실을 보게 됩니다.", }