"Bertrand Lenoir-Welter" <bertrand-dot-2008-at-galaad-dot-net> wrote in
message news:48182e7d$0$877$ba4acef3@news.orange.fr...
Merci Jean-Marc pour ce code. J'avoue que je ne suis pas très calé en
Basic mais ça devrait pouvoir se convertir sans trop de difficultés dans
un langage plus Civilisé (avec un grand C).
C'est sur! Si j'ai 5 minutes, je ferais la conversion
en C, avec par exemple comme interface:
Paramètre IN: un tableau de points (préalablement triés).
En retour, un tableau d'indices représentant les indices
des points retenus pour le contour.
Ca ressemblera à ça:
#include<stdio.h>
#include<stdlib.h>
typedef struct _pt
{
double x;
double y;
}TPoint;
void sort_with_x(TPoint *t, long nb)
{
/* code de tri */
}
void calc_contour(TPoint *t, long nb_points, long *contour)
{
/* calculer les indices et mettre dans contour */
/* mettre -1 après le dernier indice pour indiquer
la fin du tableau */
}
int main(void)
{
long nb_points = 0L;
TPoint *t = NULL;
long *contour = NULL;
long idx = 0L;
/* définir le nombre de points, par exemple 100 */
nb_points = 100L;
/* allouer tableau */
t = (TPoint*) malloc( sizeof(struct _pt) * (nb_points+1) );
/* remplir tabbleau */
t[0].x = 123.456; t[0].y = 78.94;
t[1].x = 987.654; t[2].y = 21.54;
/* etc. */
/* trier tableau */
sort_with_x(t, nb_points);
/* Calcul du contour */
/* préallouer le tableau d'indices pour le contour,
au maximum il y aura nb_points */
contour = malloc( sizeof(long) * (nb_points+1) );
calc_contour(t, nb_points, contour);
idx = 0;
while( contour[idx] != -1 )
{
printf("pt%ld Indice = %ld - x=%f, y=%f\n",
idx, contour[idx], t[contour[idx]].x, t[contour[idx]].y);
idx++;
}
return 0;
}
Voila, ça compile et tout et tout.
Il n'y a plus qu'à remplir les trous :-)
--
Jean-marc Noury (jean_marc_n2)
FAQ VB:
http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr