en fait on en a discuté un peu avec pascalje sur msn. Y a peut etre une solution en passant par une base temporaire.
EnGros, mon but est de placer des planetes dans la carte.
Chaque planete a un rayon d'attraction plus ou moins grand (de 1 à 5)
deux rayons d'actions ne peuvent pas se croiser.
Il existe déja dans la carte des soleils (avec rayons d'actions de 5 à 10 ) et des champs d'asteroide (R.A=0)
Donc on souhaite placer des points dans la carte respectant ces regles, et un maximum de points gros puis des plus petits etc... jusqu'au rayon de 1.
Bien sur pour voir si deux planetes peuvent etre cote à cote, on fait un joli petit pythagore: (Ax-Bx)²+(Ay-By)² >(At+Bt)²
avec Ax l'abscisse de A, Ay l'ordonnée de A, et At la taille du corps astral A.
Donc la solution que j'ai trouvé, en francais:
Je choisis le plus gros rayon de planete possible (5)
Je fais une requete en base qui me sort tous les resultats pour lesquels avec ce rayon je peux placer des planetes, et je mets tous ces resultats dan une table temporaire.
Je prends le premier de ses resultats et je l'insere en base. Je supprime de la base temporaire tous les resultats qu'il annule.
Je reitere l'operation jusqu'a ce que la table temporaire soit vide.
Je reitere ces operations jusqu'à arriver au rayon de (1)
Hop!
Du coup j'ai divisé mon nombre de requete de maniere monumentale je pense....
EnGros, mon but est de placer des planetes dans la carte.
Chaque planete a un rayon d'attraction plus ou moins grand (de 1 à 5)
deux rayons d'actions ne peuvent pas se croiser.
Il existe déja dans la carte des soleils (avec rayons d'actions de 5 à 10 ) et des champs d'asteroide (R.A=0)
Donc on souhaite placer des points dans la carte respectant ces regles, et un maximum de points gros puis des plus petits etc... jusqu'au rayon de 1.
Bien sur pour voir si deux planetes peuvent etre cote à cote, on fait un joli petit pythagore: (Ax-Bx)²+(Ay-By)² >(At+Bt)²
avec Ax l'abscisse de A, Ay l'ordonnée de A, et At la taille du corps astral A.
Donc la solution que j'ai trouvé, en francais:
Je choisis le plus gros rayon de planete possible (5)
Je fais une requete en base qui me sort tous les resultats pour lesquels avec ce rayon je peux placer des planetes, et je mets tous ces resultats dan une table temporaire.
Je prends le premier de ses resultats et je l'insere en base. Je supprime de la base temporaire tous les resultats qu'il annule.
Je reitere l'operation jusqu'a ce que la table temporaire soit vide.
Je reitere ces operations jusqu'à arriver au rayon de (1)
Hop!
Du coup j'ai divisé mon nombre de requete de maniere monumentale je pense....