Commit 4bb40576 authored by Alexandre De Fonvillars's avatar Alexandre De Fonvillars
Browse files

modif

parent 34a255e1
...@@ -25,19 +25,17 @@ void calculAbscisseCordes(double x[], double y[], double a[], double b[]) //x & ...@@ -25,19 +25,17 @@ void calculAbscisseCordes(double x[], double y[], double a[], double b[]) //x &
y[4] = a[1]*gDonnees.corde.xs+b[1]; y[4] = a[1]*gDonnees.corde.xs+b[1];
} }
void calculPente(double x[], double y[], double a[]) //a[3]
{
int i;
for (i = 0; i < 3; i++) {
a[i] = (double) (y[i] - y[i-1])/(x[i]-x[i-1]);
}
}
double calculEchelle(double hmax, double xmax) double calculEchelle(double hmax, double xmax)
{ {
return minDouble(L_ZONE - X_ZONE, H_ZONE - Y_ZONE) / maxDouble(hmax, xmax); return minDouble(L_ZONE - X_ZONE, H_ZONE - Y_ZONE) / maxDouble(hmax, xmax);
} }
double calculPente(double x1, double x2, double y1, double y2)
{
return (double) (y2 - y1)/(x2 -x1);
}
void zoneDessinMultiTranslationCoord(double x[], double y[], double u[], double echelle) { void zoneDessinMultiTranslationCoord(double x[], double y[], double u[], double echelle) {
int i; int i;
...@@ -105,37 +103,47 @@ void zoneDessinDessinerCordes(double x[], double y[]) // x: position des points ...@@ -105,37 +103,47 @@ void zoneDessinDessinerCordes(double x[], double y[]) // x: position des points
fl_pie( x[i] - RAYON, y[i] - RAYON, RAYON * 2, RAYON * 2, 0, 360 ) ; fl_pie( x[i] - RAYON, y[i] - RAYON, RAYON * 2, RAYON * 2, 0, 360 ) ;
} }
void zoneDessinDessinerRessorts(double x[], double y[], double a[], double b[]) { void zoneDessinDessinerRessorts(double x[], double y[]) {
int i; double xdraw, ydraw, xgap; int i, j, nbr2dents1, nbr2dents2; // i et j sont des compteurs. nbr2dents : nombre de dents du ressort
double xdraw, ydraw, xgap, ygap; //Création de compteurs en x et en y et des variables d'incrémentation
xgap = (double) (L_ZONE - X_ZONE)/35;
nbr2dents1 = 20;
///Création des ressorts verticaux
for (i = 1; i < 3; i ++) { for (i = 1; i < 3; i ++) {
fl_color(FL_RED); ydraw = y[0]+(y[i]-y[0])/4;
xdraw = x[i];
ygap = (y[i]-y[0])/(nbr2dents1*4); //Pour chaque dent, il faut 2 points, les dents se situent sur seulement la moitié du ressort
fl_color(FL_RED);
fl_begin_complex_polygon(); fl_begin_complex_polygon();
fl_gap(); fl_line(xdraw, y[0], xdraw, ydraw);
fl_line(xdraw, ydraw, xdraw + xgap, ydraw + ygap);
ydraw += ygap;
for (j = 0; j < nbr2dents1; j++) {
if (j%2 == 0) {fl_line(xdraw + xgap, ydraw, xdraw - xgap, ydraw + 2*ygap);}
else {fl_line(xdraw - xgap, ydraw, xdraw + xgap, ydraw + 2*ygap);}
ydraw+=2*ygap;
}
fl_line(xdraw + xgap, ydraw, xdraw, ydraw + ygap);
ydraw += ygap;
fl_line(xdraw, ydraw, xdraw, y[0]+(y[i]-y[0]));
fl_end_complex_polygon(); fl_end_complex_polygon();
} }
}
// DessinerZone pour tester
void ZoneDessinDessinerCB( Fl_Widget* widget, void* data )
{
// On efface toute la zone ( en dessinant dessus un rectangle plein, noir )
fl_color(FL_BLACK);
fl_rectf(X_ZONE, Y_ZONE, L_ZONE, H_ZONE);
///Declaration des variables ///création du ressort intermédiaire
double x[5] = {1.5, 2, 4, 5, 4}; double pente = calculPente(x[1], x[2], y[1], y[2]);
double y1[5]; double y2[5]; nbr2dents2 = 10;
xdraw = x[1] + (x[2]-x[1])/4;
ydraw = y[1]+(x[2]-x[1])*pente/4;
xgap = (x[2] - x[1])/(nbr2dents2*4);
double a[3] = {-6, -0.25, 3.5}; fl_begin_complex_polygon();
double b[3] = {13, 1.5, -13.5}; fl_line(x[1], y[1], xdraw, ydraw);
fl_line(xdraw, ydraw, xdraw+xgap, )
double echelle = calculEchelle(8 , 5);
calculAbscisseCordes(x, y1, a, b); fl_end_complex_polygon();
zoneDessinMultiTranslationCoord(x, y1, y2, echelle);
zoneDessinDessinerCordes(x, y1);
zoneDessinDessinerCordes(x, y2);
} }
// DessinerZone à partir des données du pb // DessinerZone à partir des données du pb
...@@ -155,14 +163,8 @@ void ZoneDessinDessinerCBpb( Fl_Widget* widget, void* data ) ...@@ -155,14 +163,8 @@ void ZoneDessinDessinerCBpb( Fl_Widget* widget, void* data )
zoneDessinDessinerCordes(x, yHaut); zoneDessinDessinerCordes(x, yHaut);
zoneDessinDessinerCordes(x, yBas); zoneDessinDessinerCordes(x, yBas);
zoneDessinDessinerRessorts(x, yHaut);
zoneDessinDessinerRessorts(x, yBas);
}
}
void ZoneDessinDessinerCBressorts( Fl_Widget* widget, void* data )
{
fl_color(FL_BLACK);
fl_rectf(X_ZONE, Y_ZONE, L_ZONE, H_ZONE);
}
...@@ -3,10 +3,11 @@ ...@@ -3,10 +3,11 @@
#ifndef _u2_dessin_h #ifndef _u2_dessin_h
#define _u2_dessin_h #define _u2_dessin_h
#define RAYON 3 //Défini la valeur du rayon des cercles si on choisit d'en mettre #define RAYON 3 //Défini la valeur du rayon des cercles
// Declaration des sous-programmes par ordre d'utilisation: Lorsqu'il y a "ZoneDessin" : on travail avec les coords en pixel // Declaration des sous-programmes par ordre d'utilisation: Lorsqu'il y a "ZoneDessin" : on travail avec les coords en pixel
void calculAbscisseCordes(double x[], double y[], double a[], double b[]); //Calcul de la coordonnee y des cordes void calculAbscisseCordes(double x[], double y[], double a[], double b[]); //Calcul de la coordonnee y des cordes
double calculPente(double x1, double x2, double y1, double y2);
double calculEchelle(double hmax, double x); //Renvoie un rapport qui permet de passer des dimensions phyiques du probleme en nbr de pixel double calculEchelle(double hmax, double x); //Renvoie un rapport qui permet de passer des dimensions phyiques du probleme en nbr de pixel
void zoneDessinMultiTranslationCoord(double x[], double y[], double echelle); //Operations sur les coordonnes pour les faire tenir dans la zone de dessin void zoneDessinMultiTranslationCoord(double x[], double y[], double echelle); //Operations sur les coordonnes pour les faire tenir dans la zone de dessin
void zoneDessinDessinerCordes(double x[], double y[]); void zoneDessinDessinerCordes(double x[], double y[]);
......
...@@ -179,6 +179,11 @@ double calculPsub() ...@@ -179,6 +179,11 @@ double calculPsub()
{ {
P_sub = gDonnees.Psub; P_sub = gDonnees.Psub;
} }
else
{
P_sub = P_supra;
}
return P_sub; return P_sub;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment