JeuWeb - Crée ton jeu par navigateur
Carte, brouillard de guerre et grandes unités - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Carte, brouillard de guerre et grandes unités (/showthread.php?tid=4704)

Pages : 1 2 3


RE: Carte, brouillard de guerre et grandes unités - Ter Rowan - 05-04-2010

attention, pour moi le 0.5 ne sert qu'à réduire la liste des bateaux susceptibles d'être dans la ligne de mire

parmi ceux là, il faudra déterminer (pour moi en php) lesquels le sont vraiment (grâce à l'angle)


RE: Carte, brouillard de guerre et grandes unités - My Hotel - 05-04-2010

Oui, évidemment, mais ça permet quand même de filtrer une bonne partie des cas. Parce que je suis arrivé aussi à la conclusion qu'une requête qui sélectionnerai directement les bons bateaux est impossible.

Bye


RE: Carte, brouillard de guerre et grandes unités - NicoMSEvent - 06-04-2010

c'est toujours possible, mais tout dépends du coût en ressource de tes requetes Wink

si on considère que ton bateau a l'épaisseur d'un fil (ce qui facilite grandement les calculs)
par exemple :

expr1=((champ_vision*cos(ma_coord_x))+(champ_vision*sin(ma_coord_y)) )


SELECT id_bateau FROM bateaux WHERE
(
(bateau_coord_x BETWEEN ma_coord_x-expr1 AND ma_coord_x+expr1)
OR
bateau_coord_x+(longueur_bateau*cos(direction_bateau)+longueur_bateau*sin(direction_bateau) )
//pour l'extrémité, et on peut rajouter des valeurs intermédiaires pour le milieu du bateau si on veut
BETWEEN ma_coord_x-expr1 AND ma_coord_x+expr1

)
AND
même chose pour les coordonnées Y

je pense qu'avec quelque chose du genre, y a moyen de tout caser dans la requete SQL. De la a savoir si tu peux mettre un index sur les coordonnées de tes bateaux, je dirais que non.
je te conseille de préselectionner un carré qui engloberait le cercle, comme ça a été proposé par je ne sais plus qui (trop la flemme de retrouver dans tous ces posts ^^), ça réduirait grandement les ressources consommées, et els index seraient pris en compte Smile

j'espère que ça va te relancer sur une piste qui n'est pas un cul-de-sac Wink


RE: Carte, brouillard de guerre et grandes unités - My Hotel - 06-04-2010

Bon, ta réponse m'a prouvé qu'une requête qui faisait ce que je voulais existait, à un détail près : mes bateaux font tous 1 case d'épaisseur. Donc pour toi, c'est un fil? Ou est-ce qu'on peut l'assimiler à un fil?
Si on peut pas dire que c'est un fil, c'est vrai que ça complique vachement. Je vais peut-être assimiler mes bateaux au fil qui les coupe en 2 dans le sens de la largeur. A voir.

Sinon, merci, j'aurais jamais trouvé un truc pareil vu mon niveau en SQL.
Sinon, au niveau perf, effectivement je vais préselectionner dans un carré et faire mes calculs en PHP, je pense que j'y gagnerais beaucoup...


RE: Carte, brouillard de guerre et grandes unités - Ter Rowan - 06-04-2010

pour une case de large, t'embête pas, considère que c'est un fil

si ça avait été plus, ça aurait été autrement il aurait fallut tester 4 sommets