growth_plate_upper = @(x) -0.0005*x.^2 + 15;
growth_plate_lower = @(x) -0.0005*x.^2 + 13;
buffer_zone_upper = @(x) growth_plate_upper(x) + 1;
buffer_zone_lower = @(x) growth_plate_lower(x) - 1;
drill_radius = drill_diameter / 2;
distances_from_origin_upper = zeros(1, num_points);
distances_from_origin_lower = zeros(1, num_points);
reachable_upper = false(1, num_points);
reachable_lower = false(1, num_points);
x_values = linspace(x_min, x_max, num_points);
y_growth_upper = growth_plate_upper(x);
y_growth_lower = growth_plate_lower(x);
distances_from_origin_upper(i) = sqrt(x^2 + y_growth_upper^2);
distances_from_origin_lower(i) = sqrt(x^2 + y_growth_lower^2);
if (y_growth_upper - drill_radius >= buffer_zone_lower(x)) && (y_growth_upper + drill_radius <= buffer_zone_upper(x))
reachable_upper(i) = true;
if (y_growth_lower - drill_radius >= buffer_zone_lower(x)) && (y_growth_lower + drill_radius <= buffer_zone_upper(x))
reachable_lower(i) = true;
plot(x_values, growth_plate_upper(x_values), 'b-', 'LineWidth', 2);
plot(x_values, growth_plate_lower(x_values), 'b-', 'LineWidth', 2);
plot(x_values, buffer_zone_upper(x_values), 'r--');
plot(x_values, buffer_zone_lower(x_values), 'r--');
title('Growth Plate and Buffer Zone');
legend('Growth Plate Upper', 'Growth Plate Lower', 'Buffer Upper', 'Buffer Lower', 'Location', 'eastoutside');