Conversion C / caml
mouton
-
mouton -
mouton -
Bonjour,
je travaille en ce moment sur les courbes de bezier dont je dois rendre un dossier pour la semaine prochaine, mais il me manque certains elements notament en info ou j'aimerai bien traduire certains programme ecrit en C pour les mettre sous la forme de caml
en voici un exemple :
float B (int n, int i, float t)
{
if (i==0) return (pow(1-t),n) ; //pow(x,n) = x^n
return (t/(1-t)(n-i+1)/i*B(n,i-1,t)) ;
}
ou encore :
void Calcul_1 (void)
{
X=0 , Y=0;
float Bz;
for (int i=0 ; i<=n ; i++)
{
Bz=B(n,i,t)
X=X+Bz*P[i].x ;
Y=Y+Bz*P[i].y ;
}
}
mais aussi :
#define DEGRE_MAX 100
typedef stuct
{
float x;
float y;
} point;
int n,nb;
point P[DEGRE_MAX];
float t,pas,X=0,Y=0;
void main (void)
{
input ("Entrez le degré",&n);
saisie_points_initialise (&P);
input ("Entrez le nombre de points pour le tracé",&nb);
putpixel (P[0].x,P[0].y);
for (t=pas=(float)(1/nb) ; t<=1 ; t+=pas)
{
Calcul_1();
lineto (X,Y); // ou putpixel (X,Y); sans joindre les points
}
}
quelqu'un pourrait-il m'aider?? j'aurais besoin d'une reponse relativement rapide s'il vous plait...
merci d'avance
je travaille en ce moment sur les courbes de bezier dont je dois rendre un dossier pour la semaine prochaine, mais il me manque certains elements notament en info ou j'aimerai bien traduire certains programme ecrit en C pour les mettre sous la forme de caml
en voici un exemple :
float B (int n, int i, float t)
{
if (i==0) return (pow(1-t),n) ; //pow(x,n) = x^n
return (t/(1-t)(n-i+1)/i*B(n,i-1,t)) ;
}
ou encore :
void Calcul_1 (void)
{
X=0 , Y=0;
float Bz;
for (int i=0 ; i<=n ; i++)
{
Bz=B(n,i,t)
X=X+Bz*P[i].x ;
Y=Y+Bz*P[i].y ;
}
}
mais aussi :
#define DEGRE_MAX 100
typedef stuct
{
float x;
float y;
} point;
int n,nb;
point P[DEGRE_MAX];
float t,pas,X=0,Y=0;
void main (void)
{
input ("Entrez le degré",&n);
saisie_points_initialise (&P);
input ("Entrez le nombre de points pour le tracé",&nb);
putpixel (P[0].x,P[0].y);
for (t=pas=(float)(1/nb) ; t<=1 ; t+=pas)
{
Calcul_1();
lineto (X,Y); // ou putpixel (X,Y); sans joindre les points
}
}
quelqu'un pourrait-il m'aider?? j'aurais besoin d'une reponse relativement rapide s'il vous plait...
merci d'avance
Configuration: Windows XP Internet Explorer 6.0
4 réponses
-
Un petit tutoriel pour t'aider : Appel de commandes C/C++ dans OCaml
-
salut
heu...
j'ai pas tout compris mais j'crois que c'est juste pour melanger et pas pour traduire integralement si? -
Pour le premier ça donnerait ça :
let rec B n i t = if i=0 then (1.0-.t)**(float_of_int n) else t/.(1.0-.t)*.float_of_int(n-i+1)/.float_of_int(i)*.B(n,i-1,t);;
Pour les suivant, le code C est faux, il manque des informations (de déclaration ou de type) pour X, Y, n, i, t, et P.
Or en Caml le typage est primordial !!!
Corrige donc tes programmes en C avant de faire une traduction en Caml... -