2023-03-06 18:01:12 +01:00
function init _explication ( ) {
2023-03-10 17:18:18 +01:00
alpha _ecran = 1
2023-03-10 15:00:08 +01:00
alpha _clignotement = 0.8
color _ecran = "rgb(255,255,255)"
color _texte = "rgb(0,0,0)"
color _clignotement = "rgb(255,0,255)"
epaisseur _clignotement = 6
font _texte = window . innerWidth
ecart _x = 50
l _texte _max = window . innerWidth - W _3D - 2 * ecart _x - 50
2023-03-10 12:17:25 +01:00
2023-03-10 15:00:08 +01:00
// marge du texte
marge _texte _x = 20
marge _texte _y = 100
2023-03-10 12:17:25 +01:00
2023-03-10 15:00:08 +01:00
// deplacement pour ajouter un titre à l'ecran
dy _ecran = 50
2023-03-10 17:18:18 +01:00
dh _ecran = 55
2023-03-07 18:16:30 +01:00
2023-03-10 15:00:08 +01:00
// Position des boutons sur l'écran
w _bouton _suivant = boutons [ "suivant" ] . width * 0.3
h _bouton _suivant = boutons [ "suivant" ] . height * 0.3
2023-03-07 18:16:30 +01:00
2023-03-10 15:00:08 +01:00
temps _attente = 0
2023-03-07 18:16:30 +01:00
2023-03-10 15:00:08 +01:00
ecrans = [
// -1 avant de lancer l'interface
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 0
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 1.1
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
// 1.2,
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 1.3
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 2.1 : Selection 1er vues
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 2.2 : clique sur fleche droite
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 2.3 : clique sur fleche haut
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 2.4 : clique sur fleche haut
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 2.5 : PBL trop haut
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 3.1 : clique sur fleche bas
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 3.2 : clique sur fleche bas
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
2023-03-07 18:16:30 +01:00
// 3.3 : clique sur fleche droite
2023-03-10 15:00:08 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
// 4: Selection de la vue
2023-03-10 17:18:18 +01:00
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
//5 : plus d'interaction
{ 'x' : W _3D + ecart _x , "y" : H _3D * 0.6 - dy _ecran , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
//6.1 : plus d'interaction
{ 'x' : W _3D / 2 - ( window . innerWidth - W _3D - 2 * ecart _x ) / 2 , "y" : H _3D / 2 - ( H _3D * 0.45 + dh _ecran ) / 2 , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
//6.2 :
{ 'x' : W _3D / 2 - ( window . innerWidth - W _3D - 2 * ecart _x ) / 2 , "y" : H _3D / 2 - ( H _3D * 0.45 + dh _ecran ) / 2 , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
//6.3 :
{ 'x' : W _3D / 2 - ( window . innerWidth - W _3D - 2 * ecart _x ) / 2 , "y" : H _3D / 2 - ( H _3D * 0.45 + dh _ecran ) / 2 , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
//6.4 :
{ 'x' : W _3D / 2 - ( window . innerWidth - W _3D - 2 * ecart _x ) / 2 , "y" : H _3D / 2 - ( H _3D * 0.45 + dh _ecran ) / 2 , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
//6.5 :
{ 'x' : W _3D / 2 - ( window . innerWidth - W _3D - 2 * ecart _x ) / 2 , "y" : H _3D / 2 - ( H _3D * 0.45 + dh _ecran ) / 2 , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
//6.6 :
{ 'x' : W _3D / 2 - ( window . innerWidth - W _3D - 2 * ecart _x ) / 2 , "y" : H _3D / 2 - ( H _3D * 0.45 + dh _ecran ) / 2 , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
//6.7 :
{ 'x' : W _3D / 2 - ( window . innerWidth - W _3D - 2 * ecart _x ) / 2 , "y" : H _3D / 2 - ( H _3D * 0.45 + dh _ecran ) / 2 , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran } ,
//7 :
{ 'x' : W _3D / 2 - ( window . innerWidth - W _3D - 2 * ecart _x ) / 2 , "y" : H _3D / 2 - ( H _3D * 0.45 + dh _ecran ) / 2 , "w" : window . innerWidth - W _3D - 2 * ecart _x , "h" : H _3D * 0.45 + dh _ecran , "c" : color _ecran , "a" : alpha _ecran }
2023-03-10 15:00:08 +01:00
]
textes = [
//-1
{ "t" : "This is where the instructions will appear to take control of the interface to select your " + nb _choix _demande + " best viewpoints. Now let's display the interface. (PRESS NEXT BUTTON)" , "x" : ecrans [ 0 ] . x + marge _texte _x , "y" : ecrans [ 0 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 0
{ "t" : "Here is how the interface looks like. (PRESS NEXT BUTTON)" , "x" : ecrans [ 0 ] . x + marge _texte _x , "y" : ecrans [ 0 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 1.1 : ecran 3D
{ "t" : "You have: A screen to view the 3D object. (PRESS NEXT BUTTON)" , "x" : ecrans [ 1 ] . x + marge _texte _x , "y" : ecrans [ 1 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 1.2 : fleche
{ "t" : "You have: Arrows to move the 3D object. (PRESS NEXT BUTTON)" , "x" : ecrans [ 2 ] . x + marge _texte _x , "y" : ecrans [ 2 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 1.3 : bouton
{ "t" : "You have: Buttons to make your selection. (PRESS NEXT BUTTON)" , "x" : ecrans [ 3 ] . x + marge _texte _x , "y" : ecrans [ 3 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 2.1 : Selection 1er vues
{ "t" : "Let's try to select your first viewpoint. To do this, let's move the 3D model. (PRESS NEXT BUTTON) " , "x" : ecrans [ 4 ] . x + marge _texte _x , "y" : ecrans [ 4 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 2.2 : clique sur fleche droite
{ "t" : "Let's try to select your first viewpoint. To do this, let's move the 3D model. (PRESS RIGHT ARROW)" , "x" : ecrans [ 4 ] . x + marge _texte _x , "y" : ecrans [ 4 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 2.3 : clique sur fleche haut
{ "t" : "Let's try to select your first viewpoint. To do this, let's move the 3D model. (PRESS UP ARROW)" , "x" : ecrans [ 4 ] . x + marge _texte _x , "y" : ecrans [ 4 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 2.4 : clique sur fleche haut
{ "t" : "ArrowUp once again. (PRESS UP ARROW)" , "x" : ecrans [ 4 ] . x + marge _texte _x , "y" : ecrans [ 4 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 2.5 : PBL trop haut
{ "t" : "You can't go further. Error messages may appear if you make impossible manipulations. Now let's try again to select our first viewpoint : GO DOWN. (PRESS DOWN ARROW)" , "x" : ecrans [ 4 ] . x + marge _texte _x , "y" : ecrans [ 4 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 3.1 : clique sur fleche bas
{ "t" : "It's better. Once again. (PRESS DOWN ARROW)" , "x" : ecrans [ 4 ] . x + marge _texte _x , "y" : ecrans [ 4 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 3.2 : clique sur fleche bas
{ "t" : "It's better. Go to the right. (PRESS RIGHT ARROW)" , "x" : ecrans [ 4 ] . x + marge _texte _x , "y" : ecrans [ 4 ] . y + marge _texte _y , "f" : 0.010 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 3.3 : clique sur fleche bas
{ "t" : "Let's imagine that you choose this viewpoint. You have to select it with the button. (PRESS SELECT BUTTON)" , "x" : ecrans [ 4 ] . x + marge _texte _x , "y" : ecrans [ 4 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 4 :
{ "t" : "You have chosen your first viewpoint. It is displayed on your right. This one has become gray on the 3D screen. You can no longer select it. (PRESS NEXT BUTTON)" , "x" : ecrans [ 4 ] . x + marge _texte _x , "y" : ecrans [ 4 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
2023-03-10 17:18:18 +01:00
//5
{ "t" : "To go faster, the interaction part with the tutorial interface is finished. Now, you can just look and press the next button when it says here. (PRESS NEXT BUTTON)" , "x" : ecrans [ 4 ] . x + marge _texte _x , "y" : ecrans [ 4 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 6.1
{ "t" : "Let's imagine that you have chosen these " + nb _choix _demande + " viewpoints. (PRESS NEXT BUTTON)" , "x" : ecrans [ 15 ] . x + marge _texte _x , "y" : ecrans [ 15 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 6.2
{ "t" : "With the little arrows, we can switch your selected viewpoints. (PRESS NEXT BUTTON)" , "x" : ecrans [ 15 ] . x + marge _texte _x , "y" : ecrans [ 15 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 6.3
{ "t" : "With the little red cross, we can remove your the selected viewpoint of your choice. (PRESS NEXT BUTTON)" , "x" : ecrans [ 15 ] . x + marge _texte _x , "y" : ecrans [ 15 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 6.4
{ "t" : "With the REMOVE button, we can remove the last selected viewpoint. (PRESS NEXT BUTTON)" , "x" : ecrans [ 15 ] . x + marge _texte _x , "y" : ecrans [ 15 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 6.5
{ "t" : "With the RESET SELECTION button, we can rmove all selected viewpoints. (PRESS NEXT BUTTON)" , "x" : ecrans [ 15 ] . x + marge _texte _x , "y" : ecrans [ 15 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 6.6
{ "t" : "With the RESET STUDY button, we can start from the beginning. (PRESS NEXT BUTTON)" , "x" : ecrans [ 15 ] . x + marge _texte _x , "y" : ecrans [ 15 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 6.7
{ "t" : "When you have chosen your " + nb _choix _demande + " viewpoints, the VALIDATE button appears. You can validate your selection and go to the next mesh. (PRESS NEXT BUTTON)" , "x" : ecrans [ 15 ] . x + marge _texte _x , "y" : ecrans [ 15 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
// 7
{ "t" : "The tutorial is finished, you now know the basic interactions of this interface. (PRESS NEXT BUTTON)" , "x" : ecrans [ 15 ] . x + marge _texte _x , "y" : ecrans [ 15 ] . y + marge _texte _y , "f" : 0.01 , "l" : l _texte _max , "c" : color _texte , "i" : 50 } ,
2023-03-10 15:00:08 +01:00
]
positions _bouton = [
//-1
{ "afficher" : true , "x" : ecrans [ 0 ] . x + ecrans [ 0 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 0 ] . y + ecrans [ 0 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 0
{ "afficher" : true , "x" : ecrans [ 0 ] . x + ecrans [ 0 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 0 ] . y + ecrans [ 0 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 1.1
{ "afficher" : true , "x" : ecrans [ 1 ] . x + ecrans [ 1 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 1 ] . y + ecrans [ 1 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 1.2
{ "afficher" : true , "x" : ecrans [ 2 ] . x + ecrans [ 2 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 2 ] . y + ecrans [ 2 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 1.3
{ "afficher" : true , "x" : ecrans [ 3 ] . x + ecrans [ 3 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 3 ] . y + ecrans [ 3 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 2.1 : Selection 1er vues
{ "afficher" : true , "x" : ecrans [ 4 ] . x + ecrans [ 4 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 4 ] . y + ecrans [ 4 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 2.2 : clique sur fleche droite
{ "afficher" : true , "x" : ecrans [ 5 ] . x + ecrans [ 5 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 5 ] . y + ecrans [ 5 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 2.3 : clique sur fleche haut
{ "afficher" : true , "x" : ecrans [ 6 ] . x + ecrans [ 6 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 6 ] . y + ecrans [ 6 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 2.4 : clique sur fleche haut
{ "afficher" : true , "x" : ecrans [ 7 ] . x + ecrans [ 7 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 7 ] . y + ecrans [ 7 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 2.5 : PBL trop haut
{ "afficher" : true , "x" : ecrans [ 8 ] . x + ecrans [ 8 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 8 ] . y + ecrans [ 8 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 3.1 : clique sur fleche bas
{ "afficher" : true , "x" : ecrans [ 9 ] . x + ecrans [ 9 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 9 ] . y + ecrans [ 9 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 3.2 : clique sur fleche bas
{ "afficher" : true , "x" : ecrans [ 10 ] . x + ecrans [ 10 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 10 ] . y + ecrans [ 10 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 3.3 : clique sur fleche droite
{ "afficher" : true , "x" : ecrans [ 11 ] . x + ecrans [ 11 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 11 ] . y + ecrans [ 11 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 4
2023-03-10 17:18:18 +01:00
{ "afficher" : true , "x" : ecrans [ 12 ] . x + ecrans [ 12 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 12 ] . y + ecrans [ 12 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 5
{ "afficher" : true , "x" : ecrans [ 13 ] . x + ecrans [ 13 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 13 ] . y + ecrans [ 13 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 6.1
{ "afficher" : true , "x" : ecrans [ 15 ] . x + ecrans [ 15 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 15 ] . y + ecrans [ 15 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 6.2
{ "afficher" : true , "x" : ecrans [ 16 ] . x + ecrans [ 16 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 16 ] . y + ecrans [ 16 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 6.3
{ "afficher" : true , "x" : ecrans [ 17 ] . x + ecrans [ 17 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 17 ] . y + ecrans [ 17 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 6.4
{ "afficher" : true , "x" : ecrans [ 18 ] . x + ecrans [ 18 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 18 ] . y + ecrans [ 18 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 6.5
{ "afficher" : true , "x" : ecrans [ 19 ] . x + ecrans [ 19 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 19 ] . y + ecrans [ 19 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 6.6
{ "afficher" : true , "x" : ecrans [ 20 ] . x + ecrans [ 20 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 20 ] . y + ecrans [ 20 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
// 6.7
{ "afficher" : true , "x" : ecrans [ 21 ] . x + ecrans [ 21 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 21 ] . y + ecrans [ 21 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant } ,
//7
{ "afficher" : true , "x" : ecrans [ 22 ] . x + ecrans [ 22 ] . w - w _bouton _suivant - marge _texte _x , "y" : ecrans [ 22 ] . y + ecrans [ 22 ] . h - h _bouton _suivant - marge _texte _x / 2 , "w" : w _bouton _suivant , "h" : h _bouton _suivant }
2023-03-10 15:00:08 +01:00
]
clignotements = [
//-1
{ "type" : "a_cliquer" , "x" : positions _bouton [ 0 ] . x , "y" : positions _bouton [ 0 ] . y , "w" : positions _bouton [ 0 ] . w , "h" : positions _bouton [ 0 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 0
{ "type" : "a_cliquer" , "x" : positions _bouton [ 0 ] . x , "y" : positions _bouton [ 0 ] . y , "w" : positions _bouton [ 0 ] . w , "h" : positions _bouton [ 0 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 1.1 : ecran 3D
[ { "type" : "a_regarder" , "x" : 0 , "y" : h _progress _bar , "w" : W _3D , "h" : H _3D , "c" : color _clignotement , "a" : alpha _clignotement , "t" : 500 } ,
{ "type" : "a_cliquer" , "x" : positions _bouton [ 1 ] . x , "y" : positions _bouton [ 1 ] . y , "w" : positions _bouton [ 1 ] . w , "h" : positions _bouton [ 1 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
] ,
// 1.2 : fleche
[ { "type" : "a_regarder" , "x" : W _3D * 0.2 - b , "y" : H _3D + DY , "w" : b + a + b , "h" : b + a + b , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
{ "type" : "a_cliquer" , "x" : positions _bouton [ 2 ] . x , "y" : positions _bouton [ 2 ] . y , "w" : positions _bouton [ 2 ] . w , "h" : positions _bouton [ 2 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
] ,
// 1.3
[ { "type" : "a_regarder" , "x" : W _3D * pos _bouton , "y" : H _3D + dy * 2 , "w" : w _bouton * 2 + ecart _bouton , "h" : h _bouton * 2 + ecart _bouton , "c" : color _clignotement , "a" : alpha _clignotement , "t" : 500 } ,
{ "type" : "a_cliquer" , "x" : positions _bouton [ 3 ] . x , "y" : positions _bouton [ 3 ] . y , "w" : positions _bouton [ 3 ] . w , "h" : positions _bouton [ 3 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
] ,
// 2.1 : Selection 1er vues
{ "type" : "a_cliquer" , "x" : positions _bouton [ 4 ] . x , "y" : positions _bouton [ 4 ] . y , "w" : positions _bouton [ 4 ] . w , "h" : positions _bouton [ 4 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 2.2 : clique sur fleche droite
{ "type" : "a_cliquer" , "x" : W _3D * 0.2 + a , "y" : H _3D + DY + b , "w" : b , "h" : a , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 2.3 : clique sur fleche haut
{ "type" : "a_cliquer" , "x" : W _3D * 0.2 , "y" : H _3D + DY , "w" : a , "h" : b , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 2.4 : clique sur fleche haut
{ "type" : "a_cliquer" , "x" : W _3D * 0.2 , "y" : H _3D + DY , "w" : a , "h" : b , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 2.5 : PBL trop haut
{ "type" : "a_cliquer" , "x" : W _3D * 0.2 , "y" : H _3D + DY + b + a , "w" : a , "h" : b , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 3.1 : clique sur fleche bas
{ "type" : "a_cliquer" , "x" : W _3D * 0.2 , "y" : H _3D + DY + b + a , "w" : a , "h" : b , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 3.2 : clique sur fleche bas --> next step fleche droite
{ "type" : "a_cliquer" , "x" : W _3D * 0.2 + a , "y" : H _3D + DY + b , "w" : b , "h" : a , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 3.3 : clique sur fleche drioite --> next step bouton pose
{ "type" : "a_cliquer" , "x" : W _3D * pos _bouton , "y" : H _3D + dy * 2 , "w" : w _bouton , "h" : h _bouton , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 4
2023-03-10 17:18:18 +01:00
{ "type" : "a_cliquer" , "x" : positions _bouton [ 12 ] . x , "y" : positions _bouton [ 12 ] . y , "w" : positions _bouton [ 12 ] . w , "h" : positions _bouton [ 12 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 5
{ "type" : "a_cliquer" , "x" : positions _bouton [ 13 ] . x , "y" : positions _bouton [ 13 ] . y , "w" : positions _bouton [ 13 ] . w , "h" : positions _bouton [ 13 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 6.1
{ "type" : "a_cliquer" , "x" : positions _bouton [ 15 ] . x , "y" : positions _bouton [ 15 ] . y , "w" : positions _bouton [ 15 ] . w , "h" : positions _bouton [ 15 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
// 6.2
[ { "type" : "a_regarder" , "x" : W _3D + ( window . innerWidth - W _3D ) / 2.5 - 5 , "y" : ( H _3D / 3.5 ) * 0.6 + 100 , "w" : 20 + 10 , "h" : ( ( H _3D / 3.5 ) * 0.4 + 100 + ( 20 + H _3D / 3.5 ) * 2 + 20 ) - ( ( H _3D / 3.5 ) * 0.6 + 100 ) , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
{ "type" : "a_cliquer" , "x" : positions _bouton [ 16 ] . x , "y" : positions _bouton [ 16 ] . y , "w" : positions _bouton [ 16 ] . w , "h" : positions _bouton [ 16 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente }
] ,
//6.3
[ { "type" : "a_regarder" , "x" : W _3D + ( window . innerWidth - W _3D ) / 2.5 + W _3D / 3.5 + 10 - 5 , "y" : ( H _3D / 3.5 ) * 0.4 + 100 , "w" : 20 + 10 , "h" : ( ( H _3D / 3.5 ) * 0.4 + 100 + ( 20 + H _3D / 3.5 ) * 2 + 20 ) - ( ( H _3D / 3.5 ) * 0.4 + 100 ) , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
{ "type" : "a_cliquer" , "x" : positions _bouton [ 17 ] . x , "y" : positions _bouton [ 17 ] . y , "w" : positions _bouton [ 17 ] . w , "h" : positions _bouton [ 17 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente }
] ,
//6.4 remove
[ { "type" : "a_regarder" , "x" : W _3D * pos _bouton + w _bouton + ecart _bouton , "y" : H _3D + dy * 2 , "w" : w _bouton , "h" : h _bouton , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
{ "type" : "a_cliquer" , "x" : positions _bouton [ 18 ] . x , "y" : positions _bouton [ 18 ] . y , "w" : positions _bouton [ 18 ] . w , "h" : positions _bouton [ 18 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente }
] ,
//6.5 reset selection
[ { "type" : "a_regarder" , "x" : W _3D * pos _bouton + w _bouton / 2 , "y" : H _3D + dy * 2 + h _bouton + ecart _bouton , "w" : w _bouton , "h" : h _bouton , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
{ "type" : "a_cliquer" , "x" : positions _bouton [ 19 ] . x , "y" : positions _bouton [ 19 ] . y , "w" : positions _bouton [ 19 ] . w , "h" : positions _bouton [ 19 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente }
] ,
//6.6 raz
[ { "type" : "a_regarder" , "x" : window . innerWidth - w _bouton - 10 , "y" : window . innerHeight - h _bouton - 10 , "w" : w _bouton , "h" : h _bouton , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
{ "type" : "a_cliquer" , "x" : positions _bouton [ 20 ] . x , "y" : positions _bouton [ 20 ] . y , "w" : positions _bouton [ 20 ] . w , "h" : positions _bouton [ 20 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente }
] ,
//6.6 validate
[ { "type" : "a_regarder" , "x" : - ( 1.2 * w _bouton ) / 4 + W _3D , "y" : H _3D + dy * 2 + h _bouton , "w" : w _bouton * 1.2 , "h" : h _bouton * 1.2 , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
{ "type" : "a_cliquer" , "x" : positions _bouton [ 21 ] . x , "y" : positions _bouton [ 21 ] . y , "w" : positions _bouton [ 21 ] . w , "h" : positions _bouton [ 21 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente }
] ,
// 7. fini
{ "type" : "a_cliquer" , "x" : positions _bouton [ 15 ] . x , "y" : positions _bouton [ 15 ] . y , "w" : positions _bouton [ 15 ] . w , "h" : positions _bouton [ 15 ] . h , "c" : color _clignotement , "a" : alpha _clignotement , "t" : temps _attente } ,
2023-03-10 15:00:08 +01:00
]
conditions _suivant = [
// -1
{ "type" : "bouton" , "x" : positions _bouton [ 0 ] . x , "y" : positions _bouton [ 0 ] . y , "w" : positions _bouton [ 0 ] . w , "h" : positions _bouton [ 0 ] . h } ,
// 0
{ "type" : "bouton" , "x" : positions _bouton [ 1 ] . x , "y" : positions _bouton [ 1 ] . y , "w" : positions _bouton [ 1 ] . w , "h" : positions _bouton [ 1 ] . h } ,
// 1.1
{ "type" : "bouton" , "x" : positions _bouton [ 2 ] . x , "y" : positions _bouton [ 2 ] . y , "w" : positions _bouton [ 2 ] . w , "h" : positions _bouton [ 2 ] . h } ,
// 1.2
{ "type" : "bouton" , "x" : positions _bouton [ 3 ] . x , "y" : positions _bouton [ 3 ] . y , "w" : positions _bouton [ 3 ] . w , "h" : positions _bouton [ 3 ] . h } ,
// 1.3
{ "type" : "bouton" , "x" : positions _bouton [ 4 ] . x , "y" : positions _bouton [ 4 ] . y , "w" : positions _bouton [ 4 ] . w , "h" : positions _bouton [ 4 ] . h } ,
// 2.1 : Selection 1er vues
{ "type" : "bouton" , "x" : positions _bouton [ 5 ] . x , "y" : positions _bouton [ 5 ] . y , "w" : positions _bouton [ 5 ] . w , "h" : positions _bouton [ 5 ] . h } ,
// 2.2 : clique sur fleche droite
{ "type" : "fleche_d" , "x" : clignotements [ 6 ] . x , "y" : clignotements [ 6 ] . y , "w" : clignotements [ 6 ] . w , "h" : clignotements [ 6 ] . h } ,
// 2.3 : clique sur fleche haut
{ "type" : "fleche_h" , "x" : clignotements [ 7 ] . x , "y" : clignotements [ 7 ] . y , "w" : clignotements [ 7 ] . w , "h" : clignotements [ 7 ] . h } ,
// 2.4 : clique sur fleche haut
{ "type" : "fleche_h" , "x" : clignotements [ 8 ] . x , "y" : clignotements [ 8 ] . y , "w" : clignotements [ 8 ] . w , "h" : clignotements [ 8 ] . h } ,
// 2.5 : PBL trop haut
{ "type" : "fleche_b" , "x" : clignotements [ 9 ] . x , "y" : clignotements [ 9 ] . y , "w" : clignotements [ 9 ] . w , "h" : clignotements [ 9 ] . h } ,
// 3.1 : clique sur fleche bas
{ "type" : "fleche_b" , "x" : clignotements [ 10 ] . x , "y" : clignotements [ 10 ] . y , "w" : clignotements [ 10 ] . w , "h" : clignotements [ 10 ] . h } ,
// 3.2 : clique sur fleche bas
{ "type" : "fleche_d" , "x" : clignotements [ 11 ] . x , "y" : clignotements [ 11 ] . y , "w" : clignotements [ 11 ] . w , "h" : clignotements [ 11 ] . h } ,
// 3.3 : clique sur bouton pose
{ "type" : "bouton_pose" , "x" : clignotements [ 12 ] . x , "y" : clignotements [ 12 ] . y , "w" : clignotements [ 12 ] . w , "h" : clignotements [ 12 ] . h } ,
// 4 : clique sur next
2023-03-10 17:18:18 +01:00
{ "type" : "bouton" , "x" : positions _bouton [ 13 ] . x , "y" : positions _bouton [ 13 ] . y , "w" : positions _bouton [ 13 ] . w , "h" : positions _bouton [ 13 ] . h } ,
// 5 : clique sur next
{ "type" : "bouton" , "x" : positions _bouton [ 13 ] . x , "y" : positions _bouton [ 13 ] . y , "w" : positions _bouton [ 13 ] . w , "h" : positions _bouton [ 13 ] . h } ,
// 6.1 : clique sur next
{ "type" : "bouton" , "x" : positions _bouton [ 15 ] . x , "y" : positions _bouton [ 15 ] . y , "w" : positions _bouton [ 15 ] . w , "h" : positions _bouton [ 15 ] . h } ,
// 6.2 : clique sur next
{ "type" : "bouton" , "x" : positions _bouton [ 16 ] . x , "y" : positions _bouton [ 16 ] . y , "w" : positions _bouton [ 16 ] . w , "h" : positions _bouton [ 16 ] . h } ,
// 6.3 : clique sur next
{ "type" : "bouton" , "x" : positions _bouton [ 17 ] . x , "y" : positions _bouton [ 17 ] . y , "w" : positions _bouton [ 17 ] . w , "h" : positions _bouton [ 17 ] . h } ,
// 6.4 : clique sur next
{ "type" : "bouton" , "x" : positions _bouton [ 18 ] . x , "y" : positions _bouton [ 18 ] . y , "w" : positions _bouton [ 18 ] . w , "h" : positions _bouton [ 18 ] . h } ,
// 6.5 : clique sur next
{ "type" : "bouton" , "x" : positions _bouton [ 18 ] . x , "y" : positions _bouton [ 18 ] . y , "w" : positions _bouton [ 18 ] . w , "h" : positions _bouton [ 18 ] . h } ,
// 6.5 : clique sur next
{ "type" : "bouton" , "x" : positions _bouton [ 18 ] . x , "y" : positions _bouton [ 18 ] . y , "w" : positions _bouton [ 18 ] . w , "h" : positions _bouton [ 18 ] . h } ,
// 6.6 : clique sur next
{ "type" : "bouton" , "x" : positions _bouton [ 18 ] . x , "y" : positions _bouton [ 18 ] . y , "w" : positions _bouton [ 18 ] . w , "h" : positions _bouton [ 18 ] . h } ,
// 6.7 : clique sur next
{ "type" : "bouton" , "x" : positions _bouton [ 18 ] . x , "y" : positions _bouton [ 18 ] . y , "w" : positions _bouton [ 18 ] . w , "h" : positions _bouton [ 18 ] . h } ,
// 7 : clique sur next
{ "type" : "bouton" , "x" : positions _bouton [ 18 ] . x , "y" : positions _bouton [ 18 ] . y , "w" : positions _bouton [ 18 ] . w , "h" : positions _bouton [ 18 ] . h }
2023-03-10 15:00:08 +01:00
]
nb _action = ecrans . length
num _action = 0
time _clicke = time _animate
2023-03-06 18:01:12 +01:00
}
2023-03-07 18:16:30 +01:00
function traitement _explications ( idx _i _explication , idx _j _explication ) {
temps _pop = 8000
2023-03-10 17:18:18 +01:00
// Pour déplacer le mesh, il faut initialiser ces deux variables
2023-03-07 18:16:30 +01:00
if ( num _action == 0 ) {
idx _i = idx _i _explication
idx _j = idx _j _explication
2023-03-10 17:18:18 +01:00
}
// rectangle bleu pour cacher l'interface
2023-03-10 15:00:08 +01:00
if ( num _action == 0 ) {
draw _rectangle ( 0 , 0 , window . innerWidth , window . innerHeight , "rgb(3, 26, 33)" , 1 )
}
2023-03-10 17:18:18 +01:00
// Rendre le recap inatif à partir de l'étape 14
if ( num _action <= 14 ) {
afficher _recap ( )
// Affichage texte recap
for ( p = 0 ; p < liste _poses . length ; p ++ ) { affichage _texte _recap ( p ) } }
if ( num _action > 14 ) {
afficher _recap _inactif ( )
for ( p = 0 ; p < liste _poses . length ; p ++ ) { affichage _texte _recap ( p ) } }
// remplir les canvasMins pour l'eemple quand on est a un num_action précis
if ( num _action == 15 ) {
nb _choix _fait = 3
liste _poses = [ [ 'choix1' , 1.5707963267948966 , 2.356194490192345 , 3 , 0 ] , [ 'choix2' , 0.7853981633974483 , 2.356194490192345 , 3 , 1 ] , [ 'choix3' , 0.7853981633974483 , 3.141592653589793 , 4 , 1 ] ]
ctxMins [ 0 ] . drawImage ( imgs [ 'recap1' ] , 0 , 0 , imgs [ 'recap1' ] . width , imgs [ 'recap1' ] . height , 0 , 0 , canvasMins [ 0 ] . width , canvasMins [ 0 ] . height )
ctxMins [ 1 ] . drawImage ( imgs [ 'recap2' ] , 0 , 0 , imgs [ 'recap2' ] . width , imgs [ 'recap2' ] . height , 0 , 0 , canvasMins [ 0 ] . width , canvasMins [ 0 ] . height )
ctxMins [ 2 ] . drawImage ( imgs [ 'recap3' ] , 0 , 0 , imgs [ 'recap3' ] . width , imgs [ 'recap3' ] . height , 0 , 0 , canvasMins [ 0 ] . width , canvasMins [ 0 ] . height )
}
2023-03-10 15:00:08 +01:00
if ( num _action < nb _action ) {
2023-03-07 18:16:30 +01:00
// Données
ecran = ecrans [ num _action ]
texte = textes [ num _action ]
clignotement = clignotements [ num _action ]
position _bouton = positions _bouton [ num _action ]
condition _suivant = conditions _suivant [ num _action ]
2023-03-10 15:00:08 +01:00
// ecran blanc
2023-03-07 18:16:30 +01:00
afficher _ecran ( ecran . x , ecran . y , ecran . w , ecran . h , ecran . c , ecran . a )
print _text ( handle _text ( texte . t , texte . x , texte . y , texte . f * font _texte + "pt Courier" , texte . l , texte . c , texte . i ) )
2023-03-10 12:17:25 +01:00
print _text ( handle _text ( "Guidelines to follow:" , ecran . x + marge _texte _x , ecran . y + 52 , 0.016 * font _texte + "pt Courier" , texte . l , "#EF476F" , texte . i ) )
// survol de tous les boutons
2023-03-10 15:00:08 +01:00
if ( num _action > 0 ) {
2023-03-07 18:16:30 +01:00
survol _bouton ( )
2023-03-10 15:00:08 +01:00
survol _fleche ( ) }
2023-03-07 18:16:30 +01:00
2023-03-10 15:00:08 +01:00
///////// s'il faut afficher le bouton next/previous
2023-03-07 18:16:30 +01:00
if ( position _bouton . afficher ) {
// bouton suivant
ctx . drawImage ( boutons [ 'suivant' ] , position _bouton . x , position _bouton . y , position _bouton . w , position _bouton . h )
if ( is _inside ( xyMouseMove , position _bouton . x , position _bouton . y , position _bouton . w , position _bouton . h ) ) {
2023-03-10 08:57:25 +01:00
//console.log('ttt')
2023-03-07 18:16:30 +01:00
draw _rectangle ( position _bouton . x , position _bouton . y , position _bouton . w , position _bouton . h , "rgb(200, 200, 200)" , 0.6 ) }
// Bouton previous
if ( num _action > 0 ) {
ctx . drawImage ( boutons [ 'avant' ] , position _bouton . x - w _bouton _suivant - marge _texte _x , position _bouton . y , position _bouton . w , position _bouton . h )
if ( is _inside ( xyMouseMove , position _bouton . x - w _bouton _suivant - marge _texte _x , position _bouton . y , position _bouton . w , position _bouton . h ) ) {
2023-03-10 08:57:25 +01:00
//console.log("dedans")
2023-03-07 18:16:30 +01:00
draw _rectangle ( position _bouton . x - w _bouton _suivant - marge _texte _x , position _bouton . y , position _bouton . w , position _bouton . h , "rgb(200, 200, 200)" , 0.6 ) }
}
}
2023-03-10 15:00:08 +01:00
///////// 1 clignotement courant donc taille = 8 car 8 keys
2023-03-10 08:57:25 +01:00
if ( Object . keys ( clignotement ) . length == 8 ) {
2023-03-10 17:18:18 +01:00
if ( time _animate > time _clicke + clignotement . t && clignotement . type == "a_cliquer" ) {
2023-03-10 12:17:25 +01:00
clignotement _contour ( 2000 , clignotement . x , clignotement . y , clignotement . w , clignotement . h , clignotement . c , epaisseur _clignotement )
2023-03-10 08:57:25 +01:00
}
if ( time _animate > time _clicke + clignotement . t && clignotement . type == "a_regarder" ) {
2023-03-10 17:18:18 +01:00
clignotement _rectangle ( 2000 , clignotement . x , clignotement . y , clignotement . w , clignotement . h , "rgb(17, 138, 178)" , 0.8 )
2023-03-10 08:57:25 +01:00
}
// on a plusieurs clignotement
} else {
for ( let p = 0 ; p < clignotement . length ; p ++ ) {
clignotement _p = clignotement [ p ]
// contour
2023-03-10 15:00:08 +01:00
if ( time _animate > time _clicke + clignotement _p . t && num _action != 13 && clignotement _p . type == "a_cliquer" ) {
2023-03-10 12:17:25 +01:00
clignotement _contour ( 2000 , clignotement _p . x , clignotement _p . y , clignotement _p . w , clignotement _p . h , clignotement _p . c , epaisseur _clignotement )
2023-03-10 08:57:25 +01:00
}
// rectangle
if ( time _animate > time _clicke + clignotement _p . t && clignotement _p . type == "a_regarder" ) {
2023-03-10 17:18:18 +01:00
clignotement _rectangle ( 2000 , clignotement _p . x , clignotement _p . y , clignotement _p . w , clignotement _p . h , "rgb(17, 138, 178)" , 0.8 )
2023-03-10 08:57:25 +01:00
}
}
}
2023-03-07 18:16:30 +01:00
2023-03-10 15:00:08 +01:00
///////// si on clique sur NEXT
2023-03-07 18:16:30 +01:00
if ( condition _suivant . type == "bouton" && clicked && click _inside ( xyMouseDown , condition _suivant . x , condition _suivant . y , condition _suivant . w , condition _suivant . h ) ) {
2023-03-10 17:37:58 +01:00
//console.log("next")
action _suivante ( )
2023-03-07 18:16:30 +01:00
}
2023-03-10 15:00:08 +01:00
//////// Si on clique sur PREVIOUS
2023-03-07 18:16:30 +01:00
//if (condition_suivant.type =="bouton" && num_action >0 && clicked && click_inside(xyMouseDown, condition_suivant.x- w_bouton_suivant - marge_texte_x, condition_suivant.y, condition_suivant.w, condition_suivant.h)){
if ( num _action > 0 && clicked && click _inside ( xyMouseDown , position _bouton . x - w _bouton _suivant - marge _texte _x , position _bouton . y , position _bouton . w , position _bouton . h ) ) {
2023-03-10 17:37:58 +01:00
//console.log("previous")
2023-03-07 18:16:30 +01:00
action _previous _explication ( )
}
// Si on clique sur Fleche droite
if ( condition _suivant . type == "fleche_d" && num _action > 0 && clicked && click _inside ( xyMouseDown , condition _suivant . x , condition _suivant . y , condition _suivant . w , condition _suivant . h ) ) {
2023-03-10 17:37:58 +01:00
//console.log("fleche_d")
2023-03-07 18:16:30 +01:00
action _droite _explication ( )
}
// Si on clique sur Fleche Haut
if ( condition _suivant . type == "fleche_h" && num _action > 0 && clicked && click _inside ( xyMouseDown , condition _suivant . x , condition _suivant . y , condition _suivant . w , condition _suivant . h ) ) {
2023-03-10 17:37:58 +01:00
//console.log("fleche_h")
2023-03-07 18:16:30 +01:00
action _haut _explication ( )
}
// Si on clique sur Fleche bas
if ( condition _suivant . type == "fleche_b" && num _action > 0 && clicked && click _inside ( xyMouseDown , condition _suivant . x , condition _suivant . y , condition _suivant . w , condition _suivant . h ) ) {
2023-03-10 17:37:58 +01:00
//console.log("fleche_b")
2023-03-07 18:16:30 +01:00
texte _temporaire = { }
action _bas _explication ( )
}
2023-03-10 15:00:08 +01:00
// Si on clique sur select
2023-03-07 18:16:30 +01:00
if ( condition _suivant . type == "bouton_pose" && num _action > 0 && clicked && click _inside ( xyMouseDown , condition _suivant . x , condition _suivant . y , condition _suivant . w , condition _suivant . h ) ) {
2023-03-10 17:37:58 +01:00
//console.log("bouton_pose")
2023-03-07 18:16:30 +01:00
action _bouton _pose ( )
action _suivante ( )
}
2023-03-10 15:00:08 +01:00
}
2023-03-07 18:16:30 +01:00
// FIN du tuto
if ( num _action == nb _action ) {
action _fin _explication ( )
}
2023-03-10 15:00:08 +01:00
}
function commencer _etude ( ) {
draw _rectangle ( 0 , 0 , canvas . width , canvas . height , "rgb(3, 26, 33)" , 1 ) // ou + clair 4, 38, 48
ctx . strokeStyle = "rgb(255, 255, 255)" // Pour que le contour soit rouge
ctx . fillStyle = "rgb(255, 255, 255)" // Pour que l'intérieur soit bleu
texte = "Are you ready to start the study?"
font = "40pt Courier"
ctx . font = font
largeur = ctx . measureText ( texte ) . width
ctx . fillText ( texte , ( window . innerWidth / 2 ) - ( largeur / 2 ) , 100 )
// affichager le bouton commencer
afficher _bouton _commencer _explication ( )
// si on appuie
if ( clicked && click _inside ( xyMouseDown , x _bouton _commencer , y _bouton _commencer , w _bouton _commencer , h _bouton _commencer ) ) {
action _bouton _commencer _explication ( )
}
2023-03-07 18:16:30 +01:00
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function action _fin _explication ( ) {
2023-03-10 15:00:08 +01:00
console . log ( "explications finies" )
2023-03-07 18:16:30 +01:00
choix _courant = { }
liste _poses = [ ]
nb _choix _fait = 0
2023-03-10 15:00:08 +01:00
for ( let i = 0 ; i < nb _choix _demande ; i ++ ) {
ctxMins [ i ] . clearRect ( 0 , 0 , canvasMins [ i ] . width , canvasMins [ i ] . height )
}
2023-03-07 18:16:30 +01:00
page _explication = false
2023-03-10 15:00:08 +01:00
page _explication _bis = true
interactions . push ( { "time" : new Date ( ) . getTime ( ) , "type" : "Fin explication" } )
2023-03-07 18:16:30 +01:00
}
function action _previous _explication ( ) {
2023-03-10 15:00:08 +01:00
if ( ( num _action == 7 ) || ( num _action == 12 ) ) { action _fleche _gauche ( ) ; update _mesh ( idx _i , idx _j ) }
if ( ( num _action == 8 ) ) { action _fleche _bas ( ) ; update _mesh ( idx _i , idx _j ) }
if ( ( num _action == 10 ) || ( num _action == 11 ) ) { action _fleche _haut ( ) ; update _mesh ( idx _i , idx _j ) }
if ( num _action == 13 ) { action _bouton _retirer ( ) }
2023-03-07 18:16:30 +01:00
action _precedente ( )
2023-03-06 16:02:20 +01:00
}
2023-03-07 18:16:30 +01:00
function action _haut _explication ( ) {
action _fleche _haut ( )
update _mesh ( idx _i , idx _j )
action _suivante ( )
}
function action _droite _explication ( ) {
action _fleche _droite ( )
update _mesh ( idx _i , idx _j )
action _suivante ( )
}
function action _bas _explication ( ) {
action _fleche _bas ( )
update _mesh ( idx _i , idx _j )
action _suivante ( )
}
function action _suivante ( ) {
num _action = num _action + 1
2023-03-10 08:57:25 +01:00
time _clicke = time _animate
2023-03-07 18:16:30 +01:00
}
function action _precedente ( ) {
num _action = num _action - 1
2023-03-10 08:57:25 +01:00
time _clicke = time _animate
2023-03-07 18:16:30 +01:00
}
function update _mesh ( I , J ) {
theta = 2 * Math . PI * ( ( 2 / 8 ) * ( J == 0 ) + ( 1 / 8 ) * ( J == 1 ) + ( - 1 / 8 ) * ( J == 3 ) + ( - 2 / 8 ) * ( J == 4 ) )
delta = 2 * Math . PI * ( I / 8 )
//camera.position.set(R*Math.cos(theta)*Math.cos(delta), R*Math.sin(theta)*Math.cos(delta), R*Math.sin(delta)) // repère wiki
camera . position . set ( R * Math . cos ( delta ) * Math . cos ( theta ) , R * Math . sin ( theta ) , R * Math . sin ( delta ) * Math . cos ( theta ) ) // repère JS
camera . lookAt ( 0 , 0 , 0 )
}
function action _clavier _explication ( event ) {
switch ( event . key ) {
// selectionner pose
case ' ' :
2023-03-10 15:00:08 +01:00
if ( num _action == 12 ) {
2023-03-10 17:37:58 +01:00
//console.log("pose clavier")
2023-03-07 18:16:30 +01:00
action _bouton _pose ( )
action _suivante ( ) }
break ;
// valider
2023-03-10 15:00:08 +01:00
case 'Enter' :
if ( num _action == nb _action && page _explication ) {
2023-03-07 18:16:30 +01:00
action _fin _explication ( )
2023-03-10 15:00:08 +01:00
}
if ( page _explication _bis ) {
action _bouton _commencer _explication ( )
}
if ( num _action < nb _action && condition _suivant . type == "bouton" ) {
action _suivante ( ) }
2023-03-07 18:16:30 +01:00
break ;
case 'Backspace' :
if ( num _action > 0 ) {
2023-03-10 15:00:08 +01:00
if ( num _action == 7 ) { action _fleche _gauche ( ) ; update _mesh ( idx _i , idx _j ) }
if ( ( num _action == 8 ) ) { action _fleche _bas ( ) ; update _mesh ( idx _i , idx _j ) }
2023-03-10 17:37:58 +01:00
//console.log("previous clavier")
2023-03-07 18:16:30 +01:00
action _precedente ( ) }
break ;
2023-03-10 17:18:18 +01:00
2023-03-07 18:16:30 +01:00
case 'ArrowRight' :
if ( condition _suivant . type == "fleche_d" ) {
2023-03-10 17:37:58 +01:00
//console.log("fleche_d clavier")
2023-03-10 15:00:08 +01:00
action _droite _explication ( )
2023-03-07 18:16:30 +01:00
}
break
case 'ArrowUp' :
if ( condition _suivant . type == "fleche_h" ) {
2023-03-10 17:37:58 +01:00
//console.log("fleche_h clavier")
2023-03-10 15:00:08 +01:00
action _haut _explication ( )
2023-03-07 18:16:30 +01:00
}
break
case 'ArrowDown' :
if ( condition _suivant . type == "fleche_b" ) {
2023-03-10 17:37:58 +01:00
//console.log("fleche_b clavier")
2023-03-10 15:00:08 +01:00
action _bas _explication ( )
2023-03-07 18:16:30 +01:00
}
break
}
}
function survol _bouton _explication ( ) {
if ( is _inside ( xyMouseMove , W _3D * pos _bouton , H _3D + dy * 2 , w _bouton , h _bouton ) ) { draw _rectangle ( W _3D * pos _bouton , H _3D + dy * 2 , w _bouton , h _bouton , "rgb(200, 200, 200)" , 0.6 ) }
2023-03-06 16:02:20 +01:00
}
2023-03-07 18:16:30 +01:00
2023-03-10 15:00:08 +01:00
function afficher _bouton _commencer _explication ( ) {
w _bouton _commencer = scale _bouton _commencer * boutons [ "commencer_choix" ] . width
h _bouton _commencer = scale _bouton _commencer * boutons [ "commencer_choix" ] . height
x _bouton _commencer = ( window . innerWidth / 2 ) - ( w _bouton _commencer / 2 )
y _bouton _commencer = ( window . innerHeight / 2 ) - ( h _bouton _commencer / 2 )
// Bouton commencer
ctx . drawImage ( boutons [ "commencer_choix" ] , x _bouton _commencer , y _bouton _commencer , w _bouton _commencer , h _bouton _commencer )
// Survol
if ( xyMouseMove . x >= x _bouton _commencer && xyMouseMove . x <= x _bouton _commencer + w _bouton _commencer && xyMouseMove . y > y _bouton _commencer && xyMouseMove . y < y _bouton _commencer + h _bouton _commencer ) {
draw _rectangle ( x _bouton _commencer , y _bouton _commencer , w _bouton _commencer , h _bouton _commencer , "rgb(200, 200, 200)" , 0.6 )
}
}
function action _bouton _commencer _explication ( ) {
page _explication _bis = false
page _vues = true
2023-03-10 17:18:18 +01:00
interactions . push ( { "time" : new Date ( ) . getTime ( ) , "type" : "Début étude" } )
2023-03-10 15:00:08 +01:00
}
2023-03-10 17:18:18 +01:00
function afficher _recap _inactif ( ) {
w _recap = window . innerWidth - W _3D
// texte du haut
//print_text(handle_text("Selected Viewpoints:", W_3D +(window.innerWidth-W_3D)/4, h_progress_bar + ecart_recap, "24pt Courier", 500))
// fleche swap haut
x _fleche _h = W _3D + w _recap / 2.5
w _fleche _h = 20
h _fleche _h = 20
// fleche swap bas
x _fleche _b = W _3D + w _recap / 2.5
w _fleche _b = 20
h _fleche _b = 20
// croix
x _croix = W _3D + w _recap / 2.5 + W _3D / 3.5 + 10
w _croix = 20
h _croix = 20
// pour chaque recap
for ( let i = 0 ; i < canvasMins . length ; i ++ ) {
// Draw les images des contextes
y _image = 100 + ( 20 + H _3D / 3.5 ) * i
ctx . drawImage ( canvasMins [ i ] , W _3D + w _recap / 2 , y _image , H _3D / 3.5 , H _3D / 3.5 )
//Fleche pour Switch haut
if ( nb _choix _fait > 1 && i > 0 && i < nb _choix _fait ) {
y _fleche _h = ( H _3D / 3.5 ) * 0.4 + y _image
ctx . drawImage ( imgs [ "haut" ] , x _fleche _h , y _fleche _h , w _fleche _h , h _fleche _h )
}
// Fleche pour Switch bas
if ( nb _choix _fait > 1 && i < nb _choix _fait - 1 ) {
y _fleche _b = ( H _3D / 3.5 ) * 0.6 + y _image
ctx . drawImage ( imgs [ "bas" ] , x _fleche _b , y _fleche _b , w _fleche _b , h _fleche _b )
}
// Croix
if ( i < nb _choix _fait ) {
// croix pour annuler
y _croix = ( H _3D / 3.5 ) * 0.4 + y _image
ctx . drawImage ( imgs [ "croix" ] , x _croix , y _croix , w _croix , h _croix )
}
}
}