Commit 1202441b authored by Alexandre De Fonvillars's avatar Alexandre De Fonvillars
Browse files

Voila, un dur labeur

parent 1b921f98
......@@ -207,7 +207,7 @@
1330504384 /home/alex/Documents/phelma/informatique/kitc-phelma/fmodlinux64/api/inc/fmod_errors.h
"fmod.h"
1616932522 source:/home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/main.cpp
1616963403 source:/home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/main.cpp
<iostream>
<FL/Fl.H>
<FL/fl_draw.H>
......@@ -216,26 +216,27 @@
"u3-callbacks.h"
"u4-fonctions.h"
1616932522 /home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/main.h
1616963403 /home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/main.h
<FL/Fl_Widget.H>
1616932522 /home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u1-interface.h
1616995407 /home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u1-interface.h
"main.h"
<FL/Fl_Double_Window.H>
<FL/Fl_Button.H>
<FL/Fl_Check_Button.H>
<FL/Fl_Round_Button.H>
<FL/Fl_Tabs.H>
<FL/Fl_Group.H>
<FL/Fl_Value_Slider.H>
<FL/fl_ask.H>
1616932522 /home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u3-callbacks.h
1616995351 /home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u3-callbacks.h
<FL/Fl_Widget.H>
1616932522 /home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u4-fonctions.h
1616995351 /home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u4-fonctions.h
<math.h>
1616932522 source:/home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u1-interface.cpp
1616995351 source:/home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u1-interface.cpp
<iostream>
<stdio.h>
"u1-interface.h"
......@@ -243,9 +244,9 @@
"u3-callbacks.h"
"u4-fonctions.h"
1616943119 /home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u2-dessin.h
1616993845 /home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u2-dessin.h
1616943804 source:/home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u2-dessin.cpp
1616995351 source:/home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u2-dessin.cpp
<iostream>
<FL/Fl.H>
<FL/fl_draw.H>
......@@ -253,7 +254,7 @@
"u2-dessin.h"
"u4-fonctions.h"
1616932522 source:/home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u3-callbacks.cpp
1616995351 source:/home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u3-callbacks.cpp
<iostream>
<FL/Fl.H>
<FL/fl_ask.H>
......@@ -262,7 +263,7 @@
"u3-callbacks.h"
"u4-fonctions.h"
1616940861 source:/home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u4-fonctions.cpp
1616995467 source:/home/alex/Documents/phelma/informatique/kitc-phelma/4projetcordesvocales/u4-fonctions.cpp
<iostream>
<stdlib.h>
<stdio.h>
......@@ -582,3 +583,6 @@
1584944062 /home/enzo/Documents/kitc-phelma/fltkubuntu64/FL/Fl_Tabs.H
"Fl_Group.H"
1584944062 /home/alex/Documents/phelma/informatique/kitc-phelma/fltkubuntu64/FL/Fl_Round_Button.H
"Fl_Light_Button.H"
......@@ -2,19 +2,30 @@
<CodeBlocks_layout_file>
<FileVersion major="1" minor="0" />
<ActiveTarget name="Debug" />
<File name="u1-interface.cpp" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="u2-dessin.cpp" open="1" top="1" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="843" topLine="0" />
<Cursor1 position="7181" topLine="25" />
</Cursor>
<Folding>
<Collapse line="18" />
<Collapse line="30" />
<Collapse line="35" />
<Collapse line="39" />
<Collapse line="63" />
<Collapse line="87" />
<Collapse line="130" />
<Collapse line="149" />
<Collapse line="181" />
</Folding>
</File>
<File name="u3-callbacks.cpp" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="977" topLine="21" />
<Cursor1 position="3149" topLine="98" />
</Cursor>
</File>
<File name="u3-callbacks.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="main.cpp" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1007" topLine="1" />
<Cursor1 position="798" topLine="0" />
</Cursor>
</File>
<File name="main.h" open="1" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
......@@ -22,37 +33,34 @@
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="u4-fonctions.h" open="1" top="1" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="u3-callbacks.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3269" topLine="42" />
<Cursor1 position="824" topLine="0" />
</Cursor>
</File>
<File name="u2-dessin.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="u1-interface.cpp" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="406" topLine="0" />
<Cursor1 position="9867" topLine="189" />
</Cursor>
</File>
<File name="u2-dessin.cpp" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="u4-fonctions.h" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="633" topLine="0" />
<Cursor1 position="3418" topLine="39" />
</Cursor>
<Folding>
<Collapse line="30" />
</Folding>
</File>
<File name="u1-interface.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="17" topLine="9" />
<Cursor1 position="1127" topLine="22" />
</Cursor>
</File>
<File name="u4-fonctions.cpp" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="u2-dessin.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="7339" topLine="209" />
<Cursor1 position="1030" topLine="0" />
</Cursor>
</File>
<File name="main.cpp" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="u4-fonctions.cpp" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="798" topLine="0" />
<Cursor1 position="4709" topLine="81" />
</Cursor>
</File>
</CodeBlocks_layout_file>
......@@ -25,27 +25,11 @@ void CreerInterface()
// Creation de la zone de dessin
gInterface.ZoneDessin = new DrawingArea(X_ZONE,Y_ZONE,L_ZONE,H_ZONE);
gInterface.ZoneDessin->draw_callback( ZoneDessinDessinerCBpb, NULL ) ;
gInterface.ZoneDessin->draw_callback( ZoneDessinDessinerCB, NULL ) ;
gInterface.ZoneDessin->mouse_callback( ZoneDessinSourisCB, NULL ) ;
//Création sliders1
gInterface.Slider1 = new Fl_Value_Slider( 680, 300, 100, 20, "k" ) ;
gInterface.Slider1->type( FL_HORIZONTAL ) ;
gInterface.Slider1->align( FL_ALIGN_TOP ) ;
gInterface.Slider1->box(FL_PLASTIC_UP_BOX);
gInterface.Slider1->callback( SliderCallback1, NULL ) ;
gInterface.Slider1->precision( 1 ) ;
gInterface.Slider1->bounds(1, 100 ) ;
//Création sliders2
gInterface.Slider2 = new Fl_Value_Slider( 575, 300, 100, 20, "kc" ) ;
gInterface.Slider2->type( FL_HORIZONTAL ) ;
gInterface.Slider2->align( FL_ALIGN_TOP ) ;
gInterface.Slider2->callback( SliderCallback2, NULL ) ;
gInterface.Slider2->precision( 1 ) ;
gInterface.Slider2->bounds(1, 20 ) ;
//Création des tabulations
//Création des tabulations/onglets
gInterface.Tab1 = new Fl_Tabs( L_ZONE + 5, 5, L_IHM - L_ZONE - 10, H_IHM - 10, "");
{
int xTab = L_ZONE + 5, yTab = 5, lTab = L_IHM - L_ZONE - 10, hTab = H_IHM - 10;
......@@ -60,16 +44,25 @@ void CreerInterface()
y = yGroup + hGap*2; //y : compteur qui permet de placer les positions successives des widgets
//Creation slider Psub
gInterface.SliderPsub = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "Psub (/10)");
//Creation slider Psub
gInterface.SliderPsub = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "Pression sous-glottique (/10)");
gInterface.SliderPsub->type( FL_HORIZONTAL ) ;
gInterface.SliderPsub->align( FL_ALIGN_TOP ) ;
gInterface.SliderPsub->bounds(1, 500 ) ;
gInterface.SliderPsub->precision( 1 ) ;
gInterface.SliderPsub->callback( SliderPsubCallback, NULL ) ;
//Creation slider fe
y += hWidget + hGap*2;
gInterface.SliderFe = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "Frequence de simulation");
gInterface.SliderFe->type( FL_HORIZONTAL ) ;
gInterface.SliderFe->align( FL_ALIGN_TOP ) ;
gInterface.SliderFe->bounds(1000, 30000 ) ;
gInterface.SliderFe->precision( 1 ) ;
gInterface.SliderFe->callback( SliderFeCB, NULL ) ;
// Creation du bouton Quitter
// Creation du bouton Quitter
gInterface.BoutonQuitter = new Fl_Button(xL, hGroup - 5, lWidget, hWidget, "Quit") ;
gInterface.BoutonQuitter->box(FL_PLASTIC_UP_BOX);
gInterface.BoutonQuitter->callback( BoutonQuitterCB, NULL ) ;
......@@ -99,40 +92,38 @@ void CreerInterface()
y = yGroup + hGap*2; //y : compteur qui permet de placer les positions successives des widgets
//Valeurs pour les x de la corde
gInterface.SliderX3 = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "Psub (/10)");
gInterface.SliderX3 = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "x4 (x10e4)");
gInterface.SliderX3->type( FL_HORIZONTAL ) ;
gInterface.SliderX3->align( FL_ALIGN_TOP ) ;
gInterface.SliderX3->bounds(1, 500 ) ;
gInterface.SliderX3->precision( 1 ) ;
gInterface.SliderX3->callback( SliderX3Callback, NULL ) ;
/* y += hWidget + hGap*3/4;
gInterface.SliderX0 = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "x1");
gInterface.SliderX0->type( FL_HORIZONTAL ) ;
gInterface.SliderX0->align( FL_ALIGN_TOP ) ;
gInterface.SliderX0->bounds(1, 20 ) ;
gInterface.SliderX0->precision( 1 ) ;
gInterface.SliderX0->callback( SliderX0Callback, NULL ) ;
*/
y += hWidget + hGap*3/4;
gInterface.SliderX2 = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "x3 (x10e4)");
gInterface.SliderX2->type( FL_HORIZONTAL ) ;
gInterface.SliderX2->align( FL_ALIGN_TOP ) ;
gInterface.SliderX2->bounds(1, 500 ) ;
gInterface.SliderX2->bounds(1, 501 ) ;
gInterface.SliderX2->precision( 1 ) ;
gInterface.SliderX2->callback( SliderX2Callback, NULL ) ;
y += hWidget + hGap*3/4;
gInterface.SliderX1 = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "x2 (x10e4)");
gInterface.SliderX1->type( FL_HORIZONTAL ) ;
gInterface.SliderX1->align( FL_ALIGN_TOP ) ;
gInterface.SliderX1->bounds(1, 200 ) ;
gInterface.SliderX1->bounds(1, 500 ) ;
gInterface.SliderX1->precision( 1 ) ;
gInterface.SliderX1->callback( SliderX1Callback, NULL ) ;
y += hWidget + hGap*3/4;
gInterface.SliderX0 = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "x1 (x10e4)");
gInterface.SliderX0->type( FL_HORIZONTAL ) ;
gInterface.SliderX0->align( FL_ALIGN_TOP ) ;
gInterface.SliderX0->bounds(-250, 500 ) ;
gInterface.SliderX0->precision( 1 ) ;
gInterface.SliderX0->callback( SliderX0Callback, NULL ) ;
//Valeurs pour le h de la corde :
y += hWidget + hGap*2;
gInterface.SliderH0 = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "h1 h4");
......@@ -142,22 +133,6 @@ void CreerInterface()
gInterface.SliderH0->precision( 1 ) ;
gInterface.SliderH0->callback( SliderH0Callback, NULL ) ;
y += hWidget + hGap*3/4;
gInterface.SliderH1 = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "h2");
gInterface.SliderH1->type( FL_HORIZONTAL ) ;
gInterface.SliderH1->align( FL_ALIGN_TOP ) ;
gInterface.SliderH1->bounds(0.01, 10 ) ;
gInterface.SliderH1->precision( 2 ) ;
gInterface.SliderH1->callback( SliderH1Callback, NULL ) ;
y += hWidget + hGap*3/4;
gInterface.SliderH2 = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "h3");
gInterface.SliderH2->type( FL_HORIZONTAL ) ;
gInterface.SliderH2->align( FL_ALIGN_TOP ) ;
gInterface.SliderH2->bounds(1, 50 ) ;
gInterface.SliderH2->precision( 1 ) ;
gInterface.SliderH2->callback( SliderH1Callback, NULL ) ;
//Valeurs pour m de la corde
y += hWidget + hGap*2;
gInterface.SliderM = new Fl_Value_Slider(xR , y, lWidget, hWidget, "m (x10000)");
......@@ -209,9 +184,9 @@ void CreerInterface()
gInterface.SliderR2->callback( SliderR2Callback, NULL ) ;
gInterface.BoutonReset = new Fl_Button(xR, hGroup - 5, lWidget, hWidget, "Reset") ;
gInterface.BoutonReset->box(FL_PLASTIC_UP_BOX);
gInterface.BoutonReset->callback( BoutonResetCB, NULL ) ;
gInterface.BoutonLocalReset = new Fl_Button(xR, hGroup - 5, lWidget, hWidget, "Reset Corde") ;
gInterface.BoutonLocalReset->box(FL_PLASTIC_UP_BOX);
gInterface.BoutonLocalReset->callback( BoutonLocalResetCB, NULL ) ;
......@@ -221,11 +196,60 @@ void CreerInterface()
Fl_Group *grp2 = new Fl_Group( xGroup, yGroup, lGroup, hGroup ,"Affichage");
{
y = yGroup + hGap*2;
// Creation du bouton d'affichage des ressorts (check button)
gInterface.BoutonRessorts = new Fl_Check_Button(xR, y, lWidget*2+lGap/2, hWidget, "Afficher les ressorts") ;
gInterface.BoutonRessorts->selection_color(FL_RED);
gInterface.BoutonRessorts->callback( BoutonRessortsCB, NULL) ;
// Creation du bouton d'affichage des ressorts (check button)
y += hWidget + hGap*2;
gInterface.BoutonAmort = new Fl_Check_Button(xR, y, lWidget*2+lGap/2, hWidget, "Afficher les amortisseurs") ;
gInterface.BoutonAmort->selection_color(FL_MAGENTA);
gInterface.BoutonAmort->callback( BoutonAmortCB, NULL) ;
// Creation du bouton Polarisation X (check button)
gInterface.BoutonPolarisationX = new Fl_Check_Button(575, 300, 100, 20, "Pola/X") ;
y += hWidget + hGap*2;
gInterface.BoutonPolarisationX = new Fl_Check_Button(xR, y, lWidget*2+lGap/2, hWidget, "Polarisation en X/2") ;
gInterface.BoutonPolarisationX->selection_color(FL_RED);
gInterface.BoutonPolarisationX->box(FL_PLASTIC_UP_BOX);
gInterface.BoutonPolarisationX->callback( BoutonPolarisationXCB, NULL) ;
//Creation d'une groupe de bouton radio
y += hWidget + hGap*5/2;
gInterface.GroupeBoutonsCordes = new Fl_Group( xR, y, lWidget*2+lGap/2, hWidget*4.5, "Option d'affichage des cordes :" ) ;
gInterface.GroupeBoutonsCordes->align( FL_ALIGN_TOP ) ;
gInterface.GroupeBoutonsCordes->begin() ;
y += hWidget/2;
gInterface.BoutonCorde1 = new Fl_Round_Button( xR, y, lWidget*2+lGap/2, hWidget, "Multicouleur") ;
gInterface.BoutonCorde1->type(FL_RADIO_BUTTON) ;
gInterface.BoutonCorde1->callback(BoutonCorde1CB, NULL ) ;
y += hWidget + hGap*2/4;
gInterface.BoutonCorde2 = new Fl_Round_Button( xR, y, lWidget*2+lGap/2, hWidget, "unicouleur") ;
gInterface.BoutonCorde2->type(FL_RADIO_BUTTON) ;
gInterface.BoutonCorde2->callback(BoutonCorde2CB, NULL ) ;
y += hWidget + hGap*2/4;
gInterface.BoutonCorde3 = new Fl_Round_Button( xR, y, lWidget*2+lGap/2, hWidget, "corde pleine") ;
gInterface.BoutonCorde3->type(FL_RADIO_BUTTON) ;
gInterface.BoutonCorde3->callback(BoutonCorde3CB, NULL ) ;
gInterface.GroupeBoutonsCordes->end();
//Creation slider Zoom
y += hWidget + hGap*2;
gInterface.SliderZoom = new Fl_Value_Slider(xR , y, lWidget*2+lGap/2, hWidget, "Zoom");
gInterface.SliderZoom->type( FL_HORIZONTAL ) ;
gInterface.SliderZoom->align( FL_ALIGN_TOP ) ;
gInterface.SliderZoom->bounds(0.1, 2 ) ;
gInterface.SliderZoom->precision( 1 ) ;
gInterface.SliderZoom->callback( SliderZoomCB, NULL ) ;
}
grp2->end();
......
......@@ -8,6 +8,7 @@
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Check_Button.H>
#include <FL/Fl_Round_Button.H>
#include <FL/Fl_Tabs.H>
#include <FL/Fl_Group.H>
//Sliders
......@@ -32,31 +33,34 @@ struct Interface
Fl_Button* BoutonRun ;
Fl_Button* BoutonStop ;
Fl_Button* BoutonReset ;
Fl_Button* BoutonLocalReset;
Fl_Check_Button* BoutonPolarisationX ;
//sliders
Fl_Value_Slider* Slider1;
Fl_Value_Slider* Slider2;
Fl_Value_Slider* SliderK1;
Fl_Value_Slider* SliderK2;
Fl_Value_Slider* SliderKc;
Fl_Value_Slider* SliderX0;
Fl_Value_Slider* SliderX1;
Fl_Value_Slider* SliderX2;
Fl_Value_Slider* SliderX3;
Fl_Value_Slider* SliderM;
Fl_Value_Slider* SliderR1;
Fl_Value_Slider* SliderR2;
Fl_Check_Button* BoutonRessorts ;
Fl_Check_Button* BoutonAmort ;
Fl_Round_Button* BoutonCorde1 ;
Fl_Round_Button* BoutonCorde2 ;
Fl_Round_Button* BoutonCorde3 ;
Fl_Value_Slider* SliderH0;
Fl_Value_Slider* SliderH1;
Fl_Value_Slider* SliderH2;
Fl_Value_Slider* SliderH3;
Fl_Value_Slider* SliderPsub;
//sliders
Fl_Value_Slider* SliderK1;
Fl_Value_Slider* SliderK2;
Fl_Value_Slider* SliderKc;
Fl_Value_Slider* SliderX0;
Fl_Value_Slider* SliderX1;
Fl_Value_Slider* SliderX2;
Fl_Value_Slider* SliderX3;
Fl_Value_Slider* SliderM;
Fl_Value_Slider* SliderR1;
Fl_Value_Slider* SliderR2;
Fl_Value_Slider* SliderH0;
Fl_Value_Slider* SliderPsub;
Fl_Value_Slider* SliderFe;
Fl_Value_Slider* SliderZoom;
//Tabs
Fl_Tabs* Tab1;
Fl_Group* grp0;
Fl_Group* GroupeBoutonsCordes;
} ;
// Declaration des objets de l'interface generale - ne pas supprimer
......
......@@ -22,28 +22,28 @@ void calculAbscisseCordes(double x[], double y[], double a[], double b[]) //x &
for (i = 1; i < 4; i++) {
y[i] = a[i-1]*x[i]+b[i-1];
}
y[4] = a[1]*gDonnees.corde.xs+b[1];
y[4] = a[1]*gDonnees.corde.xs+b[1]; //On ajoute aussi xs au tableau par simplicité
}
double calculEchelle(double hmax, double xmax)
double calculEchelle(double hmax, double xmax) //Calcul une echelle/rapport permettant de passer des dimensions du problème à celle de la zone de dessin
{
return minDouble(L_ZONE - X_ZONE, H_ZONE - Y_ZONE) / maxDouble(hmax, xmax);
}
double calculPente(double x1, double x2, double y1, double y2)
double calculPente(double x1, double x2, double y1, double y2) //Calcul la coefficent directeur d'une droite passant par deux points
{
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) { //u[] et y[] correspondent respectivement aux ordonnées de la corde du haut et celle du bas
int i;
double xDemi = (x[3] + x[0]) / 2; //A commenter si on ne veut pas polariser au milieu de la zone dessin en x
double xDemi = (x[3] + x[0]) / 2;
for (i = 0; i < 4; i ++) {
/*On calcule les positions de y[i] en pixel
On symetrise p/r a l'axe Y pour avoir une representation non retournee
On symetrise p/r a l'axe Y pour avoir une representation non retournee par rapport au modele physique
On polarise au milieu de la zone dessin*/
u[i] = (double) (H_ZONE + Y_ZONE) / 2 - y[i] * echelle;
y[i] = (double) (H_ZONE + Y_ZONE) / 2 + y[i] * echelle;
......@@ -56,16 +56,30 @@ void zoneDessinMultiTranslationCoord(double x[], double y[], double u[], double
x[i] = x[i] * echelle;
}
}
//Cas pour xs:
///Cas pour xs:
u[4] = (double) (H_ZONE + Y_ZONE) / 2 - y[4] * echelle;
y[4] = (double) (H_ZONE + Y_ZONE) / 2 + y[4] * echelle;
if (gDonnees.dessin.isPolaX)
{ //Si vrai: on polarise les x au centre de la zone de dessin : (L_ZONE + X_ZONE) / 2
x[4] = (gDonnees.corde.xs - xDemi)*echelle + (double) (L_ZONE + X_ZONE) / 2;
{ ///Si vrai: on polarise les x au centre de la zone de dessin : (L_ZONE + X_ZONE) / 2
if (gDonnees.corde.xs) {
x[4] = (gDonnees.corde.xs - xDemi)*echelle + (double) (L_ZONE + X_ZONE) / 2;
}
else { //On distingue le cas de où xs vaut 0 pour x[4] reste sur la corde
x[4] = x[1];
u[4] = u[1];
y[4] = y[1];
}
}
else { // sinon, on ne les polarise pas
x[4] = gDonnees.corde.xs * echelle;
else { /// sinon, on ne les polarise pas
if (gDonnees.corde.xs) {
x[4] = gDonnees.corde.xs * echelle;
}
else {
x[4] = x[1];
u[4] = u[1];
y[4] = y[1];
}
}
}
......@@ -73,40 +87,51 @@ void zoneDessinMultiTranslationCoord(double x[], double y[], double u[], double
void zoneDessinDessinerCordes(double x[], double y[]) // x: position des points
{
int i;
if (gDonnees.dessin.isPlein) {
fl_color(FL_GREEN);
fl_polygon(x[0], y[0], x[1], y[1], x[2], y[2], x[3], y[3]);
}
else {
for (i = 0; i < 4; i++) {
///Test pour savoir l'option d'affichage
if (gDonnees.dessin.isMulticouleur) {
switch (i) {
case 0 :
fl_color(FL_CYAN) ;
break ;
case 1 :
fl_color(FL_GREEN) ;
break ;
case 2 :
fl_color(FL_YELLOW) ;
break ;
case 3 :
fl_color(FL_BLUE) ;
break ;
case 4:
fl_color(FL_RED) ;
break ;
}
}
if (gDonnees.dessin.isUnicouleur) {
fl_color(FL_GREEN);
}
for (i = 0; i < 4; i++) {
switch (i) {
case 0 :
fl_color(FL_CYAN) ;
break ;
case 1 :
fl_color(FL_GREEN) ;
break ;
case 2 :
fl_color(FL_YELLOW) ;
break ;
case 3 :
fl_color(FL_BLUE) ;
break ;
case 4:
fl_color(FL_RED) ;
break ;
}
///Dessine des points aux intersections
// fl_pie( x[i] - RAYON, y[i] - RAYON, RAYON * 2, RAYON * 2, 0, 360 ) ;
///Dessine les segments d'une des cordes vocales
if (i > 0) {
fl_line(x[i-1], y[i-1], x[i], y[i]);
if (i > 0) {
fl_line(x[i-1], y[i-1], x[i], y[i]);
}
}
}
fl_color(FL_RED);
fl_pie( x[i] - RAYON, y[i] - RAYON, RAYON * 2, RAYON * 2, 0, 360 ) ;
fl_pie( x[4] - RAYON, y[4] - RAYON, RAYON * 2, RAYON * 2, 0, 360 ) ;
}
void zoneDessinDessinerRessorts(double x[], double y[]) {
int i, j, nbr2dents1, nbr2dents2; // i et j sont des compteurs. nbr2dents : nombre de dents du ressort
int i, j, nbr2dents1; // 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;
xgap = (double) (L_ZONE - X_ZONE)/35*gDonnees.dessin.zoom;
nbr2dents1 = 20;
///Création des ressorts verticaux
for (i = 1; i < 3; i ++) {
......@@ -121,8 +146,14 @@ void zoneDessinDessinerRessorts(double x[], double y[]) {
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);}
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);
......@@ -133,9 +164,9 @@ void zoneDessinDessinerRessorts(double x[], double y[]) {
///création du ressort intermédiaire
double pente = calculPente(x[1], x[2], y[1], y[2]);
double h = (L_ZONE - X_ZONE)/