Préambule.
La géométrie de la tortue dans Wikipedia.
Dans ce chapitre, nous présenterons un exemple (c01.c) et la librairie (*.h).
Les fonctions de la librairie ne sont pas à étudier.
Dans un premier temps, amusez-vous simplement avec ces fonctions.
L'étude de ce chapitre peut ce faire à l'aide de cette [Playlist]..
Présentation.
Les commandes d'initialisation :
Les commandes de déplacement :
La direction :
Dessiner.
Dessiner un carré.
/* Save as : c01.c */
int main(void)
double **U = G_main(-10.,10.,-10.,10.);
double angle = 0.;
double side = 5.;
 for(;angle<360;angle+=90)
 vo(U,angle,side);
 F_mR(U);
 printf(" * open the file a_main.plt with Gnuplot.\n\n\n");
 return 0;
Le résultat :
 # Gnuplot file : load "a_main.plt"
 set zeroaxis
 set size ratio -1
 plot [-10.000:10.000] [-10.000:10.000] \
 "data.plt" with linesp pt 0
Les fichiers h partagés.
/* Save as : v_a.h */
/* ------------------------------------ */
/* Save as : vdefine.h */
void clrscrn(void)
 printf("\n\n\n\n\n\n\n\n\n\n\n"
 "\n\n\n\n\n\n\n\n\n\n\n"
 "\n\n\n\n\n\n\n\n\n\n\n");
L'étude sur les matrices fait partie d'un autre livre.
/* Save as : vmatini.h */
double **I_mR(
int r,
int c
int i = R0;
int ar = r + C1;
int ac = c + C1;
double **A = malloc(ar * sizeof(*A));
 for(; i<ar; i++)
 A[i] = malloc(ac * sizeof(**A));
 A[R_SIZE][OF] = ar;
 A[C_SIZE][OF] = ac;
return(A);
/* ------------------------------------ */
void F_mR(
double **A
int i=R0;
int r=A[R_SIZE][OF];
 if(A) for(;i<r;i++) free(A[i]);
 free(A);
/* Save as : vmatbas.h */
double **add_mR(
double **A,
double **B,
double **AplsB
int r;
int c;
 for (r=FIRST;r<A[R_SIZE][OF];r++)
 for(c=FIRST;c<A[C_SIZE][OF];c++)
 AplsB[r][c]=A[r][c]+B[r][c];
 return(AplsB);
/* ------------------------------------ */
double **mul_mR(
double **A,
double **B,
double **AB
int i,j,k;
 for (k=FIRST; k<A[R_SIZE][OF];k++)
 for (j=FIRST; j<B[C_SIZE][OF];j++)
 for(i=FIRST,AB[k][j]=0;i<A[C_SIZE][OF];i++)
 AB[k][j]+=A[k][i]*B[i][j];
 return(AB);
/* Save as : vmatcop.h */
double ** c_mR(
double **A,
double **B
int r;
int c;
for( r=FIRST;r<A[R_SIZE][OF];r++)
 for(c=FIRST;c<A[C_SIZE][OF];c++)
 B[r][c]=A[r][c];
return(B);
/* ------------------------------------ */
double **c_a_A_mR(
double a[],
double **A
int r;
int c;
int i=0;
for( r=FIRST; r<A[R_SIZE][OF]; r++)
 for(c=FIRST; c<A[C_SIZE][OF]; c++)
 A[r][c] = a[i++];
return(A);
/* Save as : vmatrot.h */
double **rot2D_mR(
double **A,
double alpha
 A[1][1]=cos(alpha);A[1][2]=-sin(alpha);
 A[2][1]=sin(alpha);A[2][2]= cos(alpha);
return(A);
/* Save as : y_r.h */
void pd(
double **A
FILE *fp = fopen("data.plt","a"); 
fprintf(fp," %+.3f %+.3f\n",A[R1][C1],A[R2][C1]); 
 fclose(fp);
/* ------------------------------------ */ 
void pu(
double **A
FILE *fp = fopen("data.plt","a"); 
fprintf(fp,"\n %+.3f %+.3f\n",A[R1][C1],A[R2][C1]); 
 fclose(fp);
/* ------------------------------------ */ 
double **g_main(
double **A,
double xmin,
double xmax,
double ymin,
double ymax
FILE *fp;
 fp = fopen("a_main.plt","w");
fprintf(fp,"# Gnuplot file : load \"a_main.plt\" \n"
 "reset\n" 
 "set zeroaxis\n" 
 "set size ratio -1\n" 
 "plot [%0.3f:%0.3f] [%0.3f:%0.3f] \\\n"
 "\"data.plt\" with linesp pt 0\n"
 ,xmin,xmax,ymin,ymax);
 fclose(fp);
 fp = fopen("data.plt","w"); 
 fclose(fp);
 A[R1][C1] = 0.;
 A[R2][C1] = 0.;
 pd(A);
return(A); 
/* ------------------------------------ */ 
double **G_main(
double xmin,
double xmax,
double ymin,
double ymax
 return(g_main(I_mR(R2,C1),xmin,xmax,ymin,ymax)); 
/* ------------------------------------ */ 
void set(
double **A,
double x,
double y
 A[R1][C1] = x;
 A[R2][C1] = y;
 pd(A);
/* ------------------------------------ */ 
void setup(
double **A,
double x,
double y
 A[R1][C1] = x;
 A[R2][C1] = y;
 pu(A);
/* ------------------------------------ */ 
void vo(
double **A,
double alpha,
double side
double **T = I_mR(R2,C2);
double **B = I_mR(R2,C1);
double **C = I_mR(R2,C1);
 B[R1][C1] = side;
 B[R2][C1] = 0.;
 rot2D_mR(T,PI/180.*(alpha));
 mul_mR(T,B,C);
 c_mR(A,B);
 add_mR(B,C,A);
 pd(A); 
F_mR(C);
F_mR(B); 
F_mR(T);
/* ------------------------------------ */ 
void vu(
double **A,
double alpha,
double side
double **T = I_mR(R2,C2);
double **B = I_mR(R2,C1);
double **C = I_mR(R2,C1);
 B[R1][C1] = side;
 B[R2][C1] = 0.;
 rot2D_mR(T,PI/180.*(alpha));
 mul_mR(T,B,C);
 c_mR(A,B);
 add_mR(B,C,A);
 pu(A); 
F_mR(C);
F_mR(B); 
F_mR(T);

Formulaire de physique
Un formulaire de physique regroupe, généralement par domaine d'étude, les outils et formules mathématiques adaptés. La nécessité d'un tel formulaire vient du fait que la plupart des formules physiques, et "a fortiori" quand on travaille dans des systèmes de coordonnées exotiques, sont d'une complexité impressionnante. Les formulaires ne servent donc pas tant à apprendre les formules qu'à pouvoir se passer de telles équations, qui n'ont souvent d'intérêt que pratique.

Formulaire de mécanique
Cinématique : le rayon vecteur et ses dérivées successives.
En coordonnées cartésiennes.
La vitesse du point situé en r s'écrit
et l'accélération
En coordonnées cylindriques.
Ces formules sont basées sur le fait que la dérivée temporelle de deux des vecteurs de base est non nulle :
En coordonnées sphériques.
avec:
Changement de référentiel.
Vitesse d'entraînement: formula_15
Loi de composition des vitesses: formula_16
Accélération d'entraînement: formula_17
Accélération de Coriolis: formula_18
Loi de composition des accélérations:
formula_19
Notion de Moment.
Moment cinétique d'un point formula_22: formula_23
formula_24
Moment d'une force formula_25 par rapport à formula_26: formula_27
formula_28
Théorème du moment cinétique: formula_29
Oscillateur.
Oscillateur harmonique (sans amortissement).
Les constantes "A" et "B" sont déterminées par les conditions initiales.

Découvrir Scilab/Créer une interface graphique GUI