-
Notifications
You must be signed in to change notification settings - Fork 0
/
fieldgen.py
70 lines (54 loc) · 2.22 KB
/
fieldgen.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from obstacleCanvas import *
from boundingSegment import *
import random
def fieldGen(width, height, guiInput, numObstacles, numWaypoints, numBoundPts,mapFilename):
'''
def obstacleGen:
This is a function that will create the obstacles that will be used for path planning and if user input is selected,
will allow the user to choose the starting and the ending waypoints
width: Width of the field in px
height: Height of the field in px
guiInput: Boolean of whether the user wants a gui input of the obstacles
numObstacles: Number of obstacles(only for random generation)
'''
# initialize an empty list
obstacle_list = []
waypoint_list = []
bound_segments= []
bound_pts = []
if guiInput:
'''
Initialize tkinter canvas
get user input for waypoint start and end
get user input for location and size of obstacles
'''
# Create tkinter canvas
root = Tk()
root.attributes('-fullscreen', True)
window = ObstacleCanvas(root, numWaypoints, numBoundPts, mapFilename, width=width, height=height)
window.pack()
def endgui(event):
nonlocal root
nonlocal obstacle_list
nonlocal waypoint_list
nonlocal bound_pts
nonlocal window
waypoint_list = window.waypoints
obstacle_list = window.obstacles
bound_pts = window.bound_pts
root.destroy()
root.bind("q", endgui)
root.mainloop()
else:
waypoint_list = []
waypoint_list.append(Position(0, 0))
waypoint_list.append(Position(width, height))
# add 11 obstacles to the list
for i in range(numObstacles):
radius = random.uniform(40, 50)
pos = Position(random.uniform(0 + radius, width - radius), random.uniform(0 + radius, height - radius))
obstacle_list.append(Obstacle(pos, radius))
#Convert the bound_pts to bound_segments
for i in range(len(bound_pts),0,-1):
bound_segments.append(BoundSegment(bound_pts[i-1],bound_pts[i-2]))
return waypoint_list, obstacle_list, bound_segments