-
Notifications
You must be signed in to change notification settings - Fork 1
/
Field.py
91 lines (74 loc) · 1.97 KB
/
Field.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/python
#-*- coding: utf-8 -*-
import random as rdm
from math import sqrt
from Sensor import *
from Target import *
"""
@project Technique d'optimisation
@author Antoine De Gieter
@author Alexis Beaujon
"""
class Field:
"""
Field:
width: square width
"""
def __init__(self):
self._width = 0
self._targets = []
self._sensors = []
def __str__(self):
return "[FIELD] Width: [" + str(self._width) + "]\n"
def init(self, target_nb, sensor_nb):
self._width = input("Width = ")
del self._targets[:]
del self._sensors[:]
for i in range(target_nb):
self._targets.append(Target())
self._targets[i].initRandom(self._width)
for i in range(sensor_nb):
self._sensors.append(Sensor())
self._sensors[i].initRandom(self._width)
def initRandom(self):
self._width = rdm.randint(5, 10)
del self._targets[:]
del self._sensors[:]
for i in range(rdm.randint(5, 10)):
self._targets.append(Target())
self._targets[i].initRandom(self._width)
for t in self._targets:
s = Sensor()
s.initRandom(self._width)
while self.sensorCoversTarget(s, t) == False:
s = Sensor()
s.initRandom(self._width)
self._sensors.append(s)
# for i in range(rdm.randint(5, 10)):
# self._sensors.append(Sensor())
# self._sensors[i].initRandom(self._width)
def distanceSensorTarget(self, sensor, target):
sensor_x = sensor._get_x()
sensor_y = sensor._get_y()
target_x = target._get_x()
target_y = target._get_y()
return sqrt(pow((sensor_x - target_x), 2) + pow((sensor_y - target_y), 2))
def sensorCoversTarget(self, sensor, target):
return sensor._get_radius() >= self.distanceSensorTarget(sensor, target)
def targetsCoveredBySensor(self, sensor):
targets = []
n = 0
for t in self._targets:
n += 1
if self.sensorCoversTarget(sensor, t):
targets.append(n)
return targets
"""
Getters
"""
def _get_width(self):
return self._width
def _get_targets(self):
return self._targets
def _get_sensors(self):
return self._sensors