Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
projetS6_Groupe4
4projetCordesVocales
Commits
4bb40576
Commit
4bb40576
authored
Mar 28, 2021
by
Alexandre De Fonvillars
Browse files
modif
parent
34a255e1
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
48 additions
and
40 deletions
+48
-40
u2-dessin.cpp
u2-dessin.cpp
+41
-39
u2-dessin.h
u2-dessin.h
+2
-1
u4-fonctions.cpp
u4-fonctions.cpp
+5
-0
No files found.
u2-dessin.cpp
View file @
4bb40576
...
...
@@ -25,19 +25,17 @@ void calculAbscisseCordes(double x[], double y[], double a[], double b[]) //x &
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
)
{
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
)
{
int
i
;
...
...
@@ -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
)
;
}
void
zoneDessinDessinerRessorts
(
double
x
[],
double
y
[],
double
a
[],
double
b
[])
{
int
i
;
double
xdraw
,
ydraw
,
xgap
;
void
zoneDessinDessinerRessorts
(
double
x
[],
double
y
[])
{
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
++
)
{
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_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
();
}
}
// 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
double
x
[
5
]
=
{
1.5
,
2
,
4
,
5
,
4
};
double
y1
[
5
];
double
y2
[
5
];
///création du ressort intermédiaire
double
pente
=
calculPente
(
x
[
1
],
x
[
2
],
y
[
1
],
y
[
2
]);
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
};
double
b
[
3
]
=
{
13
,
1.5
,
-
13.5
};
fl_begin_complex_polygon
();
fl_line
(
x
[
1
],
y
[
1
],
xdraw
,
ydraw
);
fl_line
(
xdraw
,
ydraw
,
xdraw
+
xgap
,
)
double
echelle
=
calculEchelle
(
8
,
5
);
calculAbscisseCordes
(
x
,
y1
,
a
,
b
);
zoneDessinMultiTranslationCoord
(
x
,
y1
,
y2
,
echelle
);
zoneDessinDessinerCordes
(
x
,
y1
);
zoneDessinDessinerCordes
(
x
,
y2
);
fl_end_complex_polygon
();
}
// DessinerZone à partir des données du pb
...
...
@@ -155,14 +163,8 @@ void ZoneDessinDessinerCBpb( Fl_Widget* widget, void* data )
zoneDessinDessinerCordes
(
x
,
yHaut
);
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
);
}
u2-dessin.h
View file @
4bb40576
...
...
@@ -3,10 +3,11 @@
#ifndef _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
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
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
[]);
...
...
u4-fonctions.cpp
View file @
4bb40576
...
...
@@ -179,6 +179,11 @@ double calculPsub()
{
P_sub
=
gDonnees
.
Psub
;
}
else
{
P_sub
=
P_supra
;
}
return
P_sub
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment