Idea: A 2m tall goalkeeper standing at the center of a gate throws himself against one of its upper corners. Find the approx. percentage of the diagonal length he is able to cover with stretched hands and estimate the number of ball diameters that would fit in the uncovered area. How much distance should the goalkeeper move to make for a 25% safer inclination angle to the ground to prevent injuries and what percentage of the original diagonal length would the new one be in this case?
from math import tan, atan2, degrees, radians gate_width_m, gate_height_m = 7.32, 2.44 half_gate_width_m = gate_width_m / 2 soccer_ball_size5_d_cm = 22.5 # Sample human dimensions human_height_cm, head_neck_height_cm, hand_length_cm, arm_length_cm = 168, 33.5, 69, 30 goalkeeper_height_m = 2 perc_higher_inclination_angle = 25 # Convert to meters soccer_ball_size5_d_m = soccer_ball_size5_d_cm / 100 human_height_m, head_neck_height_m, hand_length_m, arm_length_m = [v / 100 for v in (human_height_cm, head_neck_height_cm, hand_length_cm, arm_length_cm)] # Extrapolate to gauge goalkeeper body dimensions scale_ratio = goalkeeper_height_m / human_height_m goalkeeper_head_neck_m = scale_ratio * head_neck_height_m goalkeeper_hand_length_m = scale_ratio * hand_length_m goalkeeper_arm_length_m = scale_ratio * arm_length_m goalkeeper_with_stretched_hands_m = goalkeeper_height_m - goalkeeper_head_neck_m + goalkeeper_arm_length_m / 2 + goalkeeper_hand_length_m # Find gate center to corner diagonal (Pythagoras) gate_center_to_corner_diag_m = (half_gate_width_m**2 + gate_height_m**2)**0.5 # Find coverage and ball diameters fitting goalkeeper_diagonal_perc_coverage = (goalkeeper_with_stretched_hands_m / gate_center_to_corner_diag_m) * 100 ball_diameters_in_uncovered_diagonal = (gate_center_to_corner_diag_m - goalkeeper_with_stretched_hands_m) / soccer_ball_size5_d_m # Find angle of inclination of the goalkeeper to the ground goalkeeper_diag_to_ground_angle_deg = degrees(atan2(gate_height_m, half_gate_width_m)) #print(goalkeeper_diag_to_ground_angle_deg) increased_angle = goalkeeper_diag_to_ground_angle_deg * (1 + perc_higher_inclination_angle/100) distance_from_gate_post_for_better_angle_m = gate_height_m / tan(radians(increased_angle)) goalkeeper_distance_to_walk_to_satisfy_increased_angle_m = half_gate_width_m - distance_from_gate_post_for_better_angle_m # New diagonal length and percentage of old new_diag_length_m = (distance_from_gate_post_for_better_angle_m**2 + gate_height_m**2)**0.5 new_diag_length_as_perc_of_old = (new_diag_length_m / gate_center_to_corner_diag_m) * 100 print(""" Percent diagonal coverage by goalkeeper: %.2f%% Ball diameters fitting in the uncovered diagonal: %.2f Distance to move for a %d%% higher inclination angle to the ground: %.2fm New diagonal length as percent of old diagonal length: %.2f%% """ % (goalkeeper_diagonal_perc_coverage, ball_diameters_in_uncovered_diagonal, perc_higher_inclination_angle, goalkeeper_distance_to_walk_to_satisfy_increased_angle_m, new_diag_length_as_perc_of_old))
Percent diagonal coverage by goalkeeper: 59.13% Ball diameters fitting in the uncovered diagonal: 7.99 Distance to move for a 25% higher inclination angle to the ground: 0.96m New diagonal length as percent of old diagonal length: 82.72%
If the calculations are correct, moving ≈1m to the side reduces the diagonal to cover by ≈17.3%.