# Godot area determination

I have balls in my res/assets folder with godot, I randomly assign these balls to the screen using gdscript codes, but a Node2D/Area2D/Polygon2D area has been created in my scene, I want the balls to come to the part of this polygon I specified, what should I do?

``````extends Node2D

var top_count = 0
var min_position = Vector2(50, 50)
var max_position = Vector2(350, 350)
var vertical_spacing = 30

func generate_random_position(tops, current_row):
var area_center = (min_position + max_position) / 2
var new_position = Vector2(
randf_range(area_center.x - (max_position.x - min_position.x) / 2, area_center.x + (max_position.x - min_position.x) / 2),
randf_range(area_center.y - (max_position.y - min_position.y) / 2 + current_row * vertical_spacing,
area_center.y + (max_position.y - min_position.y) / 2 + current_row * vertical_spacing)
)

for i in range(tops.get_child_count()):
var existing_top = tops.get_child(i)
var distance = new_position.distance_to(existing_top.position)

if distance < (existing_top.texture.get_width() + existing_top.texture.get_height()) * 0.6:
return generate_random_position(tops, current_row)

return new_position

``````

You could try using `Geometry2D.is_point_in_polygon()` to know if the random point is inside the polygon or not and repeat with another random point until the point is inside a polygon.

``````	extends Node

@onready var polygon_2d: Polygon2D = \$Polygon2D

var min:Vector2 = Vector2.INF
var max:Vector2 = -Vector2.INF

# get the min and max vectors from the polygon
for point in polygon_2d.polygon:
min.x = min(min.x, point.x)
min.y = min(min.y, point.y)
max.x = max(max.x, point.x)
max.y = max(max.y, point.y)

printt("Polygon min and max vectors:", min, max)

# print 10 random points inside of the polygon
for i in 10:
print(get_random_point_in_polygon())

func get_random_point_in_polygon() -> Vector2:
var result = Vector2.ZERO
while true:
# Get random point
result.x = randf_range(min.x, max.x)
result.y = randf_range(min.y, max.y)
if Geometry2D.is_point_in_polygon(result, polygon_2d.polygon):
# if the point is inside the polygon, break out of the loop
break

# return the point
return result
``````