Les champs ptRoute[2] est rempli grâce à pointageSurRoute().

Les routes et les agglomérats sont donc maintenant entièrement liés par des pointeurs.
La suggestion des routes à supprimer devient possible.
This commit is contained in:
Xysto 2017-01-22 16:10:57 +01:00
parent 78eaa81aff
commit d3ac248982
3 changed files with 41 additions and 3 deletions

@ -43,7 +43,7 @@ struct Agglomerat
sfVector2f moyConv;
Point **agglo;
uint32_t nbPts;
Route **ptRoute;
Route *ptRoute[2];
double rayon;
double tailleCercle;
bool aSupprimer;

@ -50,7 +50,7 @@ Agglomerat fusionAgglo(Agglomerat const* const a1, Agglomerat const* const a2)
if (retour.agglo==NULL)
{
fprintf(stderr, "%s\n", strerror(errno));
return (Agglomerat){ {0.0, 0.0}, {0.0, 0.0}, NULL, 0, NULL, 0.0, 0.0};
return (Agglomerat){ {0.0, 0.0}, {0.0, 0.0}, NULL, 0, {NULL, NULL}, 0.0, 0.0};
}
/*Définition des valeurs du nouvel agglomérat*/
@ -318,3 +318,27 @@ ErrEnum assemblageGlobalAgglo(Agglomerat *tabAgglo, const uint32_t tailleA, Aggl
return SUCCESS;
}
ErrEnum pointageSurRoute(Agglomerat *tabAgglo, const uint32_t tailleA, Route *tabRoute, const uint32_t tailleR)
{
uint32_t l = 0;
for(uint32_t i = 0; i < tailleA; ++i)
{
for(uint32_t j = 0; j < tailleR; ++j)
{
for(uint32_t k = 0; k < 2; ++k)
{
if(tabRoute[j].ptAgglo[k] == &tabAgglo[i])
{
tabAgglo[i].ptRoute[l] = &tabRoute[j];
++l;
}
}
}
l = 0;
}
return SUCCESS;
}

@ -93,4 +93,18 @@ ErrEnum repereAgglo(Point* points, uint32_t tailleP, Agglomerat** agglos, uint32
*
* @return Valeur d'erreur ou de succes définies dans structures.h
*/
ErrEnum assemblageGlobalAgglo(Agglomerat *tabAgglo, const uint32_t tailleA, AgglomeratGlobal **tabAggloGlobal, uint32_t *tailleAGlobal);
ErrEnum assemblageGlobalAgglo(Agglomerat *tabAgglo, const uint32_t tailleA, AgglomeratGlobal **tabAggloGlobal, uint32_t *tailleAGlobal);
/**
* @brief Fait pointer les agglomérats sur les routes associés si cela est possible.
*
* Cette fonction se base entièrement sur le pointage déjà étable des routes sur Agglo.
* /!\ L'APPEL A CETTE FONCTION DEVRA ETRE FORCEMENT PRECEDE D'UN APPEL A pointageSurAgglo() /!\
*
* @param tabAgglo Tableau des agglomérats. Va être modifié pour remplir le champ ptRoute[]
* @param tailleA Taille du tableau d'agglomérats.
* @param tabRoute Tableau des routes
* @param tailleR Taille du tableau de routes
* @return Valeur d'erreur. SUCCESS si réussite.
*/
ErrEnum pointageSurRoute(Agglomerat *tabAgglo, const uint32_t tailleA, Route *tabRoute, const uint32_t tailleR);