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:
parent
78eaa81aff
commit
d3ac248982
@ -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);
|
Reference in New Issue
Block a user