-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGELOG
More file actions
58 lines (40 loc) · 3.3 KB
/
Copy pathCHANGELOG
File metadata and controls
58 lines (40 loc) · 3.3 KB
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
12/11/2016
Première version fonctionnelle.
Ajout d'une méthode changerOrientatation(coord) qui s'occupe de diriger l'orientation de la caméra vers la coordonnée (en respectant les limites).
Fonctionnement de l'algorithme :
1ère étape :
Pour chaque satellite, je créer un tableau qui contient toutes les coordonnées qu'il peut croiser (je fais une simulation une première fois pour ça, à chaque tour il parcours toutes les coords pour chaque satellite pour voir s'il peut la prendre, c'est ici que ça prend vachement de temps)
A ce point là, j'ai un tableau pour chaque satellite remplit de toutes les coordonnées qu'il peut avoir et c'est trier dans l'ordre (vu que remplit dans l'ordre)
2ème étape :
Je vais ici décider des chemins que le satellite devra prendre.
Mon premier satellite prendra le premier point GPS qu'il possède dans sa liste, je vais ensuite check toutes les autres listes des autres satellites pour supprimer ce point GPS (les autres satellites ne pourront pas prendre ce point).
Ensuite je passe au deuxième satellite qui prend lui aussi son premier point GPS, et il compare avec les autres pour supprimer et ainsi de suite.
Après on prend le point juste en haut et ainsi de suite.
A partir d'ici, chaque satellite a un chemin composé de point GPS unique.
3ème étape :
Je lance la simulation pour de vrai. Le point le plus proche sera toujours le point [0] dans la liste. Donc j'ai une méthode changerOrientation(coord) qui s'occupe de se diriger automatiquement vers ce point là à chaque tour. Dès que j'arrive dessus, je le supprime de la liste et je prends le suivant.
Fin du programme, exemple de résultat :
Lancement de la simulation :
Part 1 done
Part 2 done
Part 3 done
Part 4 done
[[[99590, -287544], [107307, -293795], [122499, -293630]]]
Total avant : 3
Tour : 373 Satellite : 0 Coordonnees pt d'interet: [99590, -287544]
Tour : 439 Satellite : 0 Coordonnees pt d'interet: [107307, -293795]
Tour : 569 Satellite : 0 Coordonnees pt d'interet: [122499, -293630]
Total apres : 0
_______________
UPDATE :
Nouvelle méthode en cours de construction.
La planète peut être vu comme un rectangle (-648000W 648000E 324000N -324000S). La trajectoire d'un satellite peut donc être représenté par des polygones (des
quadrilatères qui continnent la tracjectoire d'un satellite), il peut y en avoir plusieurs pour un satellite lorsqu'il dépasse un des pôles.
Cette méthode marche, mais manque d'optimisation quand on s'approche d'un pôle avec la longitude (au lieu de faire un pas de +15, il faudrait faire en sorte
de bouger au bon endroit) pour éviter les erreurs dans la suite.
Avec ces aires, on peut comparer chaque point avec les polygones et vérifier s'ils sont devant ou non, la complexité est beaucoup plus réduite.
Pour voir si un point est dans un polygone, je calcule l'aire de chaque triangles (du point à vérif à un segment du polygone), si l'aire des 4 triangles
et plus grande est celle du quadrilatère alors il n'est pas dedans, si c'est égal alors il est dedans.
Le problème d'avant fait que l'aire du polygone n'est pas exactement la bonne, et donc que ce n'est jamais égal. De plus, c'est possible qu'il y ai des erreurs
d'approximations avec les divions ou racines carrées.
La comparaison d'aire a été faite mais les valeurs ne sont pas très justes.