inscription ok

This commit is contained in:
mpelissi 2023-03-04 16:49:50 +01:00
parent bcedd08dc8
commit 2382fa8043
22 changed files with 1140 additions and 1556 deletions

View File

@ -15,23 +15,28 @@
</head>
<body>
<div class = "canvas">
<canvas id="canvas" width="1920" height="1080">
Votre navigateur ne supporte pas les canvas, essayez-en un autre.
</canvas>
</div>
<body>
<div class = "canvas">
<canvas id="canvas" width="1920" height="1080">
Votre navigateur ne supporte pas les canvas, essayez-en un autre.
</canvas>
</div>
<script src="/static/three.js"></script>
<script src="/static/LoaderSupport.js"></script>
<script src="/static/OBJLoader2.js"></script>
<script src="/static/OrbitControls.js"></script>
<script src="/static/fonctions_utiles.js"></script>
<script src="/static/fonctions_choix_vues.js"></script>
<script src="/static/fonctions_tuto.js"></script>
<script src="/static/fonctions_inscription.js"></script>
<script src="/static/fonctions_analyse.js"></script>
<script src="/static/fonctions_fin.js"></script>
<script src="/static/interface3D.js"></script>
</body>
</html>

View File

@ -0,0 +1,17 @@
{
"Analyse": {},
"Interactions": [
{
"time": 1677933160714,
"type": "start"
},
{
"time": 1677933160753,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (2, 3)"
},
{
"time": 1677933160753,
"type": "Affichage Mesh random : dragon en theta, delta : (-0.7853981633974483, 1.5707963267948966)"
}
]
}

View File

@ -0,0 +1,17 @@
{
"Analyse": {},
"Interactions": [
{
"time": 1677933050608,
"type": "start"
},
{
"time": 1677933050631,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (3, 0)"
},
{
"time": 1677933050631,
"type": "Affichage Mesh random : dragon en theta, delta : (1.5707963267948966, 2.356194490192345)"
}
]
}

View File

@ -0,0 +1,17 @@
{
"Analyse": {},
"Interactions": [
{
"time": 1677933035767,
"type": "start"
},
{
"time": 1677933035927,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (2, 0)"
},
{
"time": 1677933035927,
"type": "Affichage Mesh random : dragon en theta, delta : (1.5707963267948966, 1.5707963267948966)"
}
]
}

View File

@ -0,0 +1,114 @@
{
"tache_N1": {
"obj_file": "dragon_update_user_study.obj",
"mesh": "dragon",
"position_init_idx_i": 4,
"position_init_idx_j": 4,
"theta_init": -1.5707963267948966,
"delta_init": 3.141592653589793,
"choix_poses": [
[
"choix1",
-1.5707963267948966,
2.356194490192345,
3,
4
],
[
"choix2",
-1.5707963267948966,
1.5707963267948966,
2,
4
],
[
"choix3",
-1.5707963267948966,
0.7853981633974483,
1,
4
]
]
},
"Analyse": {
"analyse_N1": {
"mesh": "dragon",
"idx": [
0
],
"mots": [
"1. De face"
]
}
},
"Interactions": [
{
"time": 1677933651027,
"type": "start"
},
{
"time": 1677933651516,
"type": "bouton commencerclavier"
},
{
"time": 1677933651551,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (4, 4)"
},
{
"time": 1677933651551,
"type": "Affichage Mesh random : dragon en theta, delta : (-1.5707963267948966, 3.141592653589793)"
},
{
"time": 1677933652003,
"type": "fleche droite"
},
{
"time": 1677933652114,
"type": "bouton pose n°1"
},
{
"time": 1677933652211,
"type": "fleche droite"
},
{
"time": 1677933652306,
"type": "bouton pose n°2"
},
{
"time": 1677933652404,
"type": "fleche droite"
},
{
"time": 1677933652490,
"type": "bouton pose n°3"
},
{
"time": 1677933652611,
"type": "fleche droite"
},
{
"time": 1677933652955,
"type": "bouton valider"
},
{
"time": 1677933652955,
"type": "fin des choix."
},
{
"time": 1677933652962,
"type": "Début analyse n°1"
},
{
"time": 1677933654098,
"type": "ajout check sur : analyse n°1, mot 1. De face"
},
{
"time": 1677933654571,
"type": "Bouton valider analyse."
},
{
"time": 1677933654579,
"type": "Fin analyse"
}
]
}

View File

@ -0,0 +1,174 @@
{
"identite": {
"Firstname": "",
"Name": "",
"Age:": ""
},
"tache_N1": {
"obj_file": "dragon_update_user_study.obj",
"mesh": "dragon",
"position_init_idx_i": 2,
"position_init_idx_j": 2,
"theta_init": 0,
"delta_init": 1.5707963267948966,
"choix_poses": [
[
"choix1",
0,
1.5707963267948966,
2,
2
],
[
"choix2",
0,
0.7853981633974483,
1,
2
],
[
"choix3",
0,
0,
0,
2
]
]
},
"tache_N2": {
"obj_file": "camel_update_user_study_normed.obj",
"mesh": "camel",
"position_init_idx_i": 5,
"position_init_idx_j": 2,
"theta_init": 0,
"delta_init": 3.9269908169872414,
"choix_poses": [
[
"choix1",
0,
3.9269908169872414,
5,
2
],
[
"choix2",
0,
3.141592653589793,
4,
2
],
[
"choix3",
0,
2.356194490192345,
3,
2
]
]
},
"Analyse": {
"analyse_N1": {
"mesh": "dragon",
"idx": [
0
],
"mots": [
"1. De face"
]
}
},
"Interactions": [
{
"time": 1677942867337,
"type": "start"
},
{
"time": 1677942868455,
"type": "bouton commencerclavier"
},
{
"time": 1677942868519,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (2, 2)"
},
{
"time": 1677942868519,
"type": "Affichage Mesh random : dragon en theta, delta : (0, 1.5707963267948966)"
},
{
"time": 1677942869968,
"type": "bouton pose n°1"
},
{
"time": 1677942870097,
"type": "fleche droite"
},
{
"time": 1677942870223,
"type": "bouton pose n°2"
},
{
"time": 1677942870287,
"type": "fleche droite"
},
{
"time": 1677942870407,
"type": "bouton pose n°3"
},
{
"time": 1677942870731,
"type": "bouton valider"
},
{
"time": 1677942870769,
"type": "Affichage Mesh random : camel en idx_i, idx_j : (5, 2)"
},
{
"time": 1677942870769,
"type": "Affichage Mesh random : camel en theta, delta : (0, 3.9269908169872414)"
},
{
"time": 1677942871471,
"type": "bouton pose n°1"
},
{
"time": 1677942871553,
"type": "fleche droite"
},
{
"time": 1677942871655,
"type": "bouton pose n°2"
},
{
"time": 1677942871718,
"type": "fleche droite"
},
{
"time": 1677942871832,
"type": "bouton pose n°3"
},
{
"time": 1677942872039,
"type": "bouton valider"
},
{
"time": 1677942872039,
"type": "fin des choix."
},
{
"time": 1677942872043,
"type": "Début analyse n°1"
},
{
"time": 1677942872471,
"type": "ajout check sur : analyse n°1, mot 1. De face"
},
{
"time": 1677942872664,
"type": "Bouton valider analyse."
},
{
"time": 1677942872677,
"type": "Fin analyse"
}
]
}

View File

@ -0,0 +1,198 @@
{
"identite": {
"Firstname": "marie",
"Name": "peliss",
"Age:": "12"
},
"tache_N1": {
"obj_file": "dragon_update_user_study.obj",
"mesh": "dragon",
"position_init_idx_i": 4,
"position_init_idx_j": 1,
"theta_init": 0.7853981633974483,
"delta_init": 3.141592653589793,
"choix_poses": [
[
"choix1",
0.7853981633974483,
3.141592653589793,
4,
1
],
[
"choix2",
0.7853981633974483,
2.356194490192345,
3,
1
],
[
"choix3",
0.7853981633974483,
1.5707963267948966,
2,
1
]
]
},
"tache_N2": {
"obj_file": "camel_update_user_study_normed.obj",
"mesh": "camel",
"position_init_idx_i": 5,
"position_init_idx_j": 4,
"theta_init": -1.5707963267948966,
"delta_init": 3.9269908169872414,
"choix_poses": [
[
"choix1",
-1.5707963267948966,
3.9269908169872414,
5,
4
],
[
"choix2",
-1.5707963267948966,
3.141592653589793,
4,
4
],
[
"choix3",
-1.5707963267948966,
2.356194490192345,
3,
4
]
]
},
"Analyse": {
"analyse_N1": {
"mesh": "dragon",
"idx": [
0
],
"mots": [
"1. De face"
]
}
},
"Interactions": [
{
"time": 1677942897472,
"type": "start"
},
{
"time": 1677942901527,
"type": "bouton commencerclavier"
},
{
"time": 1677942901586,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (4, 1)"
},
{
"time": 1677942901586,
"type": "Affichage Mesh random : dragon en theta, delta : (0.7853981633974483, 3.141592653589793)"
},
{
"time": 1677942903561,
"type": "bouton pose n°1"
},
{
"time": 1677942903639,
"type": "fleche droite"
},
{
"time": 1677942903735,
"type": "bouton pose n°2"
},
{
"time": 1677942903817,
"type": "fleche droite"
},
{
"time": 1677942903910,
"type": "bouton pose n°3"
},
{
"time": 1677942904048,
"type": "fleche droite"
},
{
"time": 1677942904080,
"type": "bouton pose n°4"
},
{
"time": 1677942904080,
"type": "Affichage error 3 déjà fait"
},
{
"time": 1677942904527,
"type": "bouton pose n°4"
},
{
"time": 1677942904527,
"type": "Affichage error 3 déjà fait"
},
{
"time": 1677942905622,
"type": "bouton valider"
},
{
"time": 1677942905651,
"type": "Affichage Mesh random : camel en idx_i, idx_j : (5, 4)"
},
{
"time": 1677942905651,
"type": "Affichage Mesh random : camel en theta, delta : (-1.5707963267948966, 3.9269908169872414)"
},
{
"time": 1677942905895,
"type": "bouton pose n°1"
},
{
"time": 1677942906559,
"type": "fleche droite"
},
{
"time": 1677942906638,
"type": "bouton pose n°2"
},
{
"time": 1677942906734,
"type": "fleche droite"
},
{
"time": 1677942906814,
"type": "bouton pose n°3"
},
{
"time": 1677942906947,
"type": "fleche droite"
},
{
"time": 1677942907530,
"type": "bouton valider"
},
{
"time": 1677942907530,
"type": "fin des choix."
},
{
"time": 1677942907542,
"type": "Début analyse n°1"
},
{
"time": 1677942908262,
"type": "ajout check sur : analyse n°1, mot 1. De face"
},
{
"time": 1677942908471,
"type": "Bouton valider analyse."
},
{
"time": 1677942908475,
"type": "Fin analyse"
}
]
}

View File

@ -1,282 +0,0 @@
{
"tache_N1": {
"obj_file": "dragon_update_user_study.obj",
"mesh": "dragon",
"position_init_idx_i": 5,
"position_init_idx_j": 3,
"theta_init": -0.7853981633974483,
"delta_init": 3.9269908169872414,
"choix_poses": [
[
"choix1",
-0.7853981633974483,
3.9269908169872414,
5,
3
],
[
"choix2",
-0.7853981633974483,
3.141592653589793,
4,
3
],
[
"choix3",
-0.7853981633974483,
2.356194490192345,
3,
3
]
]
},
"tache_N2": {
"obj_file": "camel_update_user_study_normed.obj",
"mesh": "camel",
"position_init_idx_i": 2,
"position_init_idx_j": 0,
"theta_init": 1.5707963267948966,
"delta_init": 1.5707963267948966,
"choix_poses": [
[
"choix1",
1.5707963267948966,
1.5707963267948966,
2,
0
],
[
"choix2",
1.5707963267948966,
0.7853981633974483,
1,
0
],
[
"choix3",
1.5707963267948966,
0,
0,
0
]
]
},
"tache_N3": {
"obj_file": "gorgoile_update_user_study_centered_normed.obj",
"mesh": "gorgoile",
"position_init_idx_i": 1,
"position_init_idx_j": 4,
"theta_init": -1.5707963267948966,
"delta_init": 0.7853981633974483,
"choix_poses": [
[
"choix1",
-1.5707963267948966,
0.7853981633974483,
1,
4
],
[
"choix2",
-1.5707963267948966,
0,
0,
4
],
[
"choix3",
-1.5707963267948966,
5.497787143782138,
7,
4
]
]
},
"Analyse": {
"analyse_N1": {
"mesh": "dragon",
"idx": [
0
],
"mots": [
"1. De face"
]
},
"analyse_N2": {
"mesh": "camel",
"idx": [
0
],
"mots": [
"1. De face"
]
},
"analyse_N3": {
"mesh": "gorgoile",
"idx": [
0
],
"mots": [
"1. De face"
]
}
},
"Interactions": [
{
"time": 1677871014699,
"type": "start"
},
{
"time": 1677871014724,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (5, 3)"
},
{
"time": 1677871014724,
"type": "Affichage Mesh random : dragon en theta, delta : (-0.7853981633974483, 3.9269908169872414)"
},
{
"time": 1677871015384,
"type": "bouton commencerclavier"
},
{
"time": 1677871016519,
"type": "bouton pose n°1"
},
{
"time": 1677871016598,
"type": "fleche droite"
},
{
"time": 1677871016710,
"type": "bouton pose n°2"
},
{
"time": 1677871016814,
"type": "fleche droite"
},
{
"time": 1677871016902,
"type": "bouton pose n°3"
},
{
"time": 1677871017030,
"type": "fleche droite"
},
{
"time": 1677871017894,
"type": "bouton valider"
},
{
"time": 1677871017945,
"type": "Affichage Mesh random : camel en idx_i, idx_j : (2, 0)"
},
{
"time": 1677871017945,
"type": "Affichage Mesh random : camel en theta, delta : (1.5707963267948966, 1.5707963267948966)"
},
{
"time": 1677871018438,
"type": "bouton pose n°1"
},
{
"time": 1677871018542,
"type": "fleche droite"
},
{
"time": 1677871018646,
"type": "bouton pose n°2"
},
{
"time": 1677871018726,
"type": "fleche droite"
},
{
"time": 1677871018806,
"type": "bouton pose n°3"
},
{
"time": 1677871018998,
"type": "fleche droite"
},
{
"time": 1677871019486,
"type": "bouton valider"
},
{
"time": 1677871019526,
"type": "Affichage Mesh random : gorgoile en idx_i, idx_j : (1, 4)"
},
{
"time": 1677871019526,
"type": "Affichage Mesh random : gorgoile en theta, delta : (-1.5707963267948966, 0.7853981633974483)"
},
{
"time": 1677871019926,
"type": "bouton pose n°1"
},
{
"time": 1677871020030,
"type": "fleche droite"
},
{
"time": 1677871020150,
"type": "bouton pose n°2"
},
{
"time": 1677871020246,
"type": "fleche droite"
},
{
"time": 1677871020334,
"type": "bouton pose n°3"
},
{
"time": 1677871020950,
"type": "bouton valider"
},
{
"time": 1677871020950,
"type": "fin des choix."
},
{
"time": 1677871020951,
"type": "Début analyse n°1"
},
{
"time": 1677871023750,
"type": "ajout check sur : analyse n°1, mot 1. De face"
},
{
"time": 1677871024262,
"type": "Bouton valider analyse."
},
{
"time": 1677871024262,
"type": "Début analyse n°2"
},
{
"time": 1677871024735,
"type": "ajout check sur : analyse n°2, mot 1. De face"
},
{
"time": 1677871025006,
"type": "Bouton valider analyse."
},
{
"time": 1677871025006,
"type": "Début analyse n°3"
},
{
"time": 1677871025358,
"type": "ajout check sur : analyse n°3, mot 1. De face"
},
{
"time": 1677871025678,
"type": "Bouton valider analyse."
},
{
"time": 1677871025684,
"type": "Fin analyse"
}
]
}

View File

@ -1,674 +0,0 @@
{
"tache_N1": {
"obj_file": "dragon_update_user_study.obj",
"mesh": "dragon",
"position_init_idx_i": 5,
"position_init_idx_j": 1,
"theta_init": 0.7853981633974483,
"delta_init": 3.9269908169872414,
"choix_poses": [
[
"choix1",
0.7853981633974483,
2.356194490192345,
3,
1
],
[
"choix3",
0.7853981633974483,
0.7853981633974483,
1,
1
],
[
"choix3",
0.7853981633974483,
0,
0,
1
]
]
},
"tache_N2": {
"obj_file": "camel_update_user_study_normed.obj",
"mesh": "camel",
"position_init_idx_i": 7,
"position_init_idx_j": 2,
"theta_init": 0,
"delta_init": 5.497787143782138,
"choix_poses": [
[
"choix1",
0,
5.497787143782138,
7,
2
],
[
"choix2",
0,
4.71238898038469,
6,
2
],
[
"choix3",
0,
0,
0,
2
]
]
},
"tache_N3": {
"obj_file": "gorgoile_update_user_study_centered_normed.obj",
"mesh": "gorgoile",
"position_init_idx_i": 3,
"position_init_idx_j": 0,
"theta_init": 1.5707963267948966,
"delta_init": 2.356194490192345,
"choix_poses": [
[
"choix1",
1.5707963267948966,
2.356194490192345,
3,
0
],
[
"choix2",
1.5707963267948966,
1.5707963267948966,
2,
0
],
[
"choix3",
1.5707963267948966,
0.7853981633974483,
1,
0
]
]
},
"Analyse": {
"analyse_N1": {
"mesh": "dragon",
"idx": [
1
],
"mots": [
"2. De profil"
]
},
"analyse_N2": {
"mesh": "camel",
"idx": [
1
],
"mots": [
"2. De profil"
]
},
"analyse_N3": {
"mesh": "gorgoile",
"idx": [
2
],
"mots": [
"3. Debout"
]
}
},
"Interactions": [
{
"time": 1677869301854,
"type": "start"
},
{
"time": 1677869301901,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (5, 1)"
},
{
"time": 1677869301902,
"type": "Affichage Mesh random : dragon en theta, delta : (0.7853981633974483, 3.9269908169872414)"
},
{
"time": 1677869337042,
"type": "bouton commencerclavier"
},
{
"time": 1677869344042,
"type": "fleche haut"
},
{
"time": 1677869344234,
"type": "fleche haut"
},
{
"time": 1677869344234,
"type": "Affichage error à cause de fleche haut"
},
{
"time": 1677869344506,
"type": "fleche bas"
},
{
"time": 1677869344826,
"type": "fleche bas"
},
{
"time": 1677869345050,
"type": "fleche bas"
},
{
"time": 1677869345226,
"type": "fleche gauche"
},
{
"time": 1677869345450,
"type": "fleche gauche"
},
{
"time": 1677869345690,
"type": "fleche haut"
},
{
"time": 1677869346026,
"type": "fleche bas"
},
{
"time": 1677869346282,
"type": "fleche droite"
},
{
"time": 1677869346538,
"type": "fleche bas"
},
{
"time": 1677869347018,
"type": "fleche haut"
},
{
"time": 1677869347178,
"type": "fleche haut"
},
{
"time": 1677869347386,
"type": "fleche gauche"
},
{
"time": 1677869347546,
"type": "fleche gauche"
},
{
"time": 1677869347706,
"type": "fleche gauche"
},
{
"time": 1677869347850,
"type": "fleche gauche"
},
{
"time": 1677869348002,
"type": "fleche gauche"
},
{
"time": 1677869348098,
"type": "fleche droite"
},
{
"time": 1677869348258,
"type": "fleche bas"
},
{
"time": 1677869348434,
"type": "fleche bas"
},
{
"time": 1677869348578,
"type": "fleche bas"
},
{
"time": 1677869348578,
"type": "Affichage error à cause de fleche bas"
},
{
"time": 1677869349162,
"type": "fleche bas"
},
{
"time": 1677869349162,
"type": "Affichage error à cause de fleche bas"
},
{
"time": 1677869349466,
"type": "fleche bas"
},
{
"time": 1677869349466,
"type": "Affichage error à cause de fleche bas"
},
{
"time": 1677869349738,
"type": "fleche bas"
},
{
"time": 1677869349738,
"type": "Affichage error à cause de fleche bas"
},
{
"time": 1677869350042,
"type": "fleche bas"
},
{
"time": 1677869350042,
"type": "Affichage error à cause de fleche bas"
},
{
"time": 1677869350298,
"type": "fleche bas"
},
{
"time": 1677869350298,
"type": "Affichage error à cause de fleche bas"
},
{
"time": 1677869350674,
"type": "fleche haut"
},
{
"time": 1677869350850,
"type": "fleche haut"
},
{
"time": 1677869351010,
"type": "fleche haut"
},
{
"time": 1677869351154,
"type": "fleche haut"
},
{
"time": 1677869351426,
"type": "fleche haut"
},
{
"time": 1677869351426,
"type": "Affichage error à cause de fleche haut"
},
{
"time": 1677869351634,
"type": "fleche haut"
},
{
"time": 1677869351634,
"type": "Affichage error à cause de fleche haut"
},
{
"time": 1677869352394,
"type": "fleche bas"
},
{
"time": 1677869352586,
"type": "fleche bas"
},
{
"time": 1677869353162,
"type": "fleche gauche"
},
{
"time": 1677869353386,
"type": "fleche haut"
},
{
"time": 1677869356386,
"type": "bouton pose n°1"
},
{
"time": 1677869358378,
"type": "fleche droite"
},
{
"time": 1677869358826,
"type": "fleche gauche"
},
{
"time": 1677869359490,
"type": "bouton pose n°2"
},
{
"time": 1677869359490,
"type": "Affichage error pose déjà sélectionnée"
},
{
"time": 1677869359714,
"type": "bouton pose n°2"
},
{
"time": 1677869359714,
"type": "Affichage error pose déjà sélectionnée"
},
{
"time": 1677869361146,
"type": "fleche droite"
},
{
"time": 1677869361450,
"type": "bouton pose n°2"
},
{
"time": 1677869362522,
"type": "fleche droite"
},
{
"time": 1677869362730,
"type": "bouton pose n°3"
},
{
"time": 1677869364500,
"type": "fleche switch bas de la pose n°2"
},
{
"time": 1677869365334,
"type": "fleche switch haut de la pose n°3"
},
{
"time": 1677869366034,
"type": "fleche switch haut de la pose n°2"
},
{
"time": 1677869367101,
"type": "suppression de la pose n°1"
},
{
"time": 1677869368610,
"type": "fleche droite"
},
{
"time": 1677869368722,
"type": "bouton pose n°3"
},
{
"time": 1677869370986,
"type": "bouton valider"
},
{
"time": 1677869371040,
"type": "Affichage Mesh random : camel en idx_i, idx_j : (7, 2)"
},
{
"time": 1677869371040,
"type": "Affichage Mesh random : camel en theta, delta : (0, 5.497787143782138)"
},
{
"time": 1677869373650,
"type": "bouton pose n°1"
},
{
"time": 1677869373730,
"type": "fleche droite"
},
{
"time": 1677869373842,
"type": "bouton pose n°2"
},
{
"time": 1677869373922,
"type": "fleche droite"
},
{
"time": 1677869374018,
"type": "bouton pose n°3"
},
{
"time": 1677869374114,
"type": "fleche droite"
},
{
"time": 1677869377517,
"type": "fleche switch haut de la pose n°2"
},
{
"time": 1677869379783,
"type": "bouton renitialiser"
},
{
"time": 1677869381362,
"type": "fleche droite"
},
{
"time": 1677869381530,
"type": "fleche droite"
},
{
"time": 1677869381658,
"type": "fleche droite"
},
{
"time": 1677869381946,
"type": "bouton pose n°1"
},
{
"time": 1677869382410,
"type": "fleche droite"
},
{
"time": 1677869382730,
"type": "fleche droite"
},
{
"time": 1677869383533,
"type": "bouton retirer"
},
{
"time": 1677869384498,
"type": "bouton pose n°1"
},
{
"time": 1677869384626,
"type": "fleche droite"
},
{
"time": 1677869384818,
"type": "bouton pose n°2"
},
{
"time": 1677869385154,
"type": "fleche gauche"
},
{
"time": 1677869385298,
"type": "fleche gauche"
},
{
"time": 1677869385634,
"type": "bouton pose n°3"
},
{
"time": 1677869385746,
"type": "fleche gauche"
},
{
"time": 1677869386394,
"type": "bouton pose n°4"
},
{
"time": 1677869386394,
"type": "Affichage error 3 déjà fait"
},
{
"time": 1677869388730,
"type": "bouton pose n°4"
},
{
"time": 1677869388730,
"type": "Affichage error 3 déjà fait"
},
{
"time": 1677869389162,
"type": "bouton pose n°4"
},
{
"time": 1677869389162,
"type": "Affichage error 3 déjà fait"
},
{
"time": 1677869389506,
"type": "bouton pose n°4"
},
{
"time": 1677869389506,
"type": "Affichage error 3 déjà fait"
},
{
"time": 1677869389794,
"type": "bouton pose n°4"
},
{
"time": 1677869389794,
"type": "Affichage error 3 déjà fait"
},
{
"time": 1677869391658,
"type": "bouton pose n°4"
},
{
"time": 1677869391658,
"type": "Affichage error 3 déjà fait"
},
{
"time": 1677869392432,
"type": "bouton raz"
},
{
"time": 1677869398116,
"type": "bouton raz croix"
},
{
"time": 1677869403965,
"type": "bouton valider"
},
{
"time": 1677869404011,
"type": "Affichage Mesh random : gorgoile en idx_i, idx_j : (3, 0)"
},
{
"time": 1677869404011,
"type": "Affichage Mesh random : gorgoile en theta, delta : (1.5707963267948966, 2.356194490192345)"
},
{
"time": 1677869412986,
"type": "bouton pose n°1"
},
{
"time": 1677869413138,
"type": "fleche droite"
},
{
"time": 1677869413250,
"type": "bouton pose n°2"
},
{
"time": 1677869413378,
"type": "fleche droite"
},
{
"time": 1677869414146,
"type": "bouton pose n°3"
},
{
"time": 1677869414386,
"type": "fleche droite"
},
{
"time": 1677869415314,
"type": "bouton valider"
},
{
"time": 1677869415314,
"type": "fin des choix."
},
{
"time": 1677869415315,
"type": "Début analyse n°1"
},
{
"time": 1677869457626,
"type": "ajout check sur : analyse n°1, mot 1. De face"
},
{
"time": 1677869458106,
"type": "retrait check sur : analyse n°1, mot 1. De face"
},
{
"time": 1677869458426,
"type": "ajout check sur : analyse n°1, mot 2. De profil"
},
{
"time": 1677869458642,
"type": "ajout check sur : analyse n°1, mot 3. Debout"
},
{
"time": 1677869458930,
"type": "retrait check sur : analyse n°1, mot 2. De profil"
},
{
"time": 1677869459090,
"type": "ajout check sur : analyse n°1, mot 1. De face"
},
{
"time": 1677869459746,
"type": "retrait check sur : analyse n°1, mot 1. De face"
},
{
"time": 1677869460082,
"type": "ajout check sur : analyse n°1, mot 2. De profil"
},
{
"time": 1677869460434,
"type": "retrait check sur : analyse n°1, mot 3. Debout"
},
{
"time": 1677869460890,
"type": "retrait check sur : analyse n°1, mot 2. De profil"
},
{
"time": 1677869461882,
"type": "ajout check sur : analyse n°1, mot 2. De profil"
},
{
"time": 1677869465322,
"type": "Bouton valider analyse."
},
{
"time": 1677869465322,
"type": "Début analyse n°2"
},
{
"time": 1677869466658,
"type": "ajout check sur : analyse n°2, mot 2. De profil"
},
{
"time": 1677869467249,
"type": "Bouton valider analyse."
},
{
"time": 1677869467249,
"type": "Début analyse n°3"
},
{
"time": 1677869481386,
"type": "ajout check sur : analyse n°3, mot 3. Debout"
},
{
"time": 1677869482193,
"type": "Bouton valider analyse."
},
{
"time": 1677869482196,
"type": "Fin analyse"
}
]
}

View File

@ -1,95 +0,0 @@
{
"tache_N1": {
"obj_file": "dragon_update_user_study.obj",
"mesh": "dragon",
"position_init_idx_i": 7,
"position_init_idx_j": 1,
"theta_init": 0.7853981633974483,
"delta_init": 5.497787143782138,
"choix_poses": [
[
"choix1",
0.7853981633974483,
4.71238898038469,
6,
1
],
[
"choix2",
0.7853981633974483,
3.9269908169872414,
5,
1
],
[
"choix3",
0.7853981633974483,
3.141592653589793,
4,
1
]
]
},
"tache_N2": {
"obj_file": "camel_update_user_study_normed.obj",
"mesh": "camel",
"position_init_idx_i": 6,
"position_init_idx_j": 3,
"theta_init": -0.7853981633974483,
"delta_init": 4.71238898038469,
"choix_poses": [
[
"choix1",
-0.7853981633974483,
4.71238898038469,
6,
3
],
[
"choix2",
-0.7853981633974483,
3.9269908169872414,
5,
3
],
[
"choix3",
-0.7853981633974483,
3.141592653589793,
4,
3
]
]
},
"tache_N3": {
"obj_file": "gorgoile_update_user_study_centered_normed.obj",
"mesh": "gorgoile",
"position_init_idx_i": 7,
"position_init_idx_j": 1,
"theta_init": 0.7853981633974483,
"delta_init": 5.497787143782138,
"choix_poses": [
[
"choix1",
0.7853981633974483,
5.497787143782138,
7,
1
],
[
"choix2",
0.7853981633974483,
4.71238898038469,
6,
1
],
[
"choix3",
0.7853981633974483,
3.9269908169872414,
5,
1
]
]
}
}

View File

@ -0,0 +1,173 @@
{
"tache_N1": {
"obj_file": "dragon_update_user_study.obj",
"mesh": "dragon",
"position_init_idx_i": 2,
"position_init_idx_j": 4,
"theta_init": -1.5707963267948966,
"delta_init": 1.5707963267948966,
"choix_poses": [
[
"choix1",
-1.5707963267948966,
0.7853981633974483,
1,
4
],
[
"choix2",
-1.5707963267948966,
0,
0,
4
],
[
"choix3",
-1.5707963267948966,
5.497787143782138,
7,
4
]
]
},
"tache_N2": {
"obj_file": "camel_update_user_study_normed.obj",
"mesh": "camel",
"position_init_idx_i": 3,
"position_init_idx_j": 1,
"theta_init": 0.7853981633974483,
"delta_init": 2.356194490192345,
"choix_poses": [
[
"choix1",
0.7853981633974483,
2.356194490192345,
3,
1
],
[
"choix2",
0.7853981633974483,
1.5707963267948966,
2,
1
],
[
"choix3",
0.7853981633974483,
0.7853981633974483,
1,
1
]
]
},
"Analyse": {
"analyse_N1": {
"mesh": "dragon",
"idx": [
0
],
"mots": [
"1. De face"
]
}
},
"Interactions": [
{
"time": 1677933673225,
"type": "start"
},
{
"time": 1677933673756,
"type": "bouton commencerclavier"
},
{
"time": 1677933673807,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (2, 4)"
},
{
"time": 1677933673807,
"type": "Affichage Mesh random : dragon en theta, delta : (-1.5707963267948966, 1.5707963267948966)"
},
{
"time": 1677933673900,
"type": "fleche droite"
},
{
"time": 1677933674149,
"type": "bouton pose n°1"
},
{
"time": 1677933674259,
"type": "fleche droite"
},
{
"time": 1677933674370,
"type": "bouton pose n°2"
},
{
"time": 1677933674490,
"type": "fleche droite"
},
{
"time": 1677933674644,
"type": "bouton pose n°3"
},
{
"time": 1677933675090,
"type": "bouton valider"
},
{
"time": 1677933675109,
"type": "Affichage Mesh random : camel en idx_i, idx_j : (3, 1)"
},
{
"time": 1677933675109,
"type": "Affichage Mesh random : camel en theta, delta : (0.7853981633974483, 2.356194490192345)"
},
{
"time": 1677933675787,
"type": "bouton pose n°1"
},
{
"time": 1677933675899,
"type": "fleche droite"
},
{
"time": 1677933675995,
"type": "bouton pose n°2"
},
{
"time": 1677933676099,
"type": "fleche droite"
},
{
"time": 1677933676186,
"type": "bouton pose n°3"
},
{
"time": 1677933676538,
"type": "bouton valider"
},
{
"time": 1677933676538,
"type": "fin des choix."
},
{
"time": 1677933676544,
"type": "Début analyse n°1"
},
{
"time": 1677933676970,
"type": "ajout check sur : analyse n°1, mot 1. De face"
},
{
"time": 1677933677194,
"type": "Bouton valider analyse."
},
{
"time": 1677933677194,
"type": "Fin analyse"
}
]
}

View File

@ -1,302 +0,0 @@
{
"tache_N1": {
"obj_file": "dragon_update_user_study.obj",
"mesh": "dragon",
"position_init_idx_i": 6,
"position_init_idx_j": 4,
"theta_init": -1.5707963267948966,
"delta_init": 4.71238898038469,
"choix_poses": [
[
"choix1",
-1.5707963267948966,
3.9269908169872414,
5,
4
],
[
"choix3",
-1.5707963267948966,
2.356194490192345,
3,
4
],
[
"choix2",
-1.5707963267948966,
3.141592653589793,
4,
4
]
]
},
"tache_N2": {
"obj_file": "camel_update_user_study_normed.obj",
"mesh": "camel",
"position_init_idx_i": 1,
"position_init_idx_j": 3,
"theta_init": -0.7853981633974483,
"delta_init": 0.7853981633974483,
"choix_poses": [
[
"choix1",
-0.7853981633974483,
0.7853981633974483,
1,
3
],
[
"choix2",
-0.7853981633974483,
0,
0,
3
],
[
"choix3",
-0.7853981633974483,
5.497787143782138,
7,
3
]
]
},
"tache_N3": {
"obj_file": "gorgoile_update_user_study_centered_normed.obj",
"mesh": "gorgoile",
"position_init_idx_i": 2,
"position_init_idx_j": 1,
"theta_init": 0.7853981633974483,
"delta_init": 1.5707963267948966,
"choix_poses": [
[
"choix1",
0.7853981633974483,
1.5707963267948966,
2,
1
],
[
"choix3",
0.7853981633974483,
0,
0,
1
],
[
"choix3",
0.7853981633974483,
5.497787143782138,
7,
1
]
]
},
"Analyse": {
"analyse_N1": {
"mesh": "dragon",
"idx": [
0
],
"mots": [
"1. De face"
]
},
"analyse_N2": {
"mesh": "camel",
"idx": [
1
],
"mots": [
"2. De profil"
]
},
"analyse_N3": {
"mesh": "gorgoile",
"idx": [
2
],
"mots": [
"3. Debout"
]
}
},
"Interactions": [
{
"time": 1677838666856,
"type": "start"
},
{
"time": 1677838666879,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (6, 4)"
},
{
"time": 1677838666879,
"type": "Affichage Mesh random : dragon en theta, delta : (-1.5707963267948966, 4.71238898038469)"
},
{
"time": 1677838667858,
"type": "bouton commencerclavier"
},
{
"time": 1677838668905,
"type": "fleche droite"
},
{
"time": 1677838669074,
"type": "bouton pose n°1"
},
{
"time": 1677838669233,
"type": "fleche droite"
},
{
"time": 1677838669350,
"type": "bouton pose n°2"
},
{
"time": 1677838669826,
"type": "fleche droite"
},
{
"time": 1677838670273,
"type": "bouton pose n°3"
},
{
"time": 1677838679013,
"type": "fleche switch bas de la pose n°2"
},
{
"time": 1677838680695,
"type": "bouton valider"
},
{
"time": 1677838680718,
"type": "Affichage Mesh random : camel en idx_i, idx_j : (1, 3)"
},
{
"time": 1677838680718,
"type": "Affichage Mesh random : camel en theta, delta : (-0.7853981633974483, 0.7853981633974483)"
},
{
"time": 1677838681793,
"type": "bouton pose n°1"
},
{
"time": 1677838681906,
"type": "fleche droite"
},
{
"time": 1677838682049,
"type": "bouton pose n°2"
},
{
"time": 1677838682153,
"type": "fleche droite"
},
{
"time": 1677838682258,
"type": "bouton pose n°3"
},
{
"time": 1677838682858,
"type": "bouton valider"
},
{
"time": 1677838682883,
"type": "Affichage Mesh random : gorgoile en idx_i, idx_j : (2, 1)"
},
{
"time": 1677838682883,
"type": "Affichage Mesh random : gorgoile en theta, delta : (0.7853981633974483, 1.5707963267948966)"
},
{
"time": 1677838684417,
"type": "bouton pose n°1"
},
{
"time": 1677838684594,
"type": "fleche droite"
},
{
"time": 1677838684737,
"type": "bouton pose n°2"
},
{
"time": 1677838685642,
"type": "fleche droite"
},
{
"time": 1677838686474,
"type": "bouton pose n°3"
},
{
"time": 1677838688278,
"type": "suppression de la pose n°2"
},
{
"time": 1677838689177,
"type": "bouton pose n°3"
},
{
"time": 1677838689177,
"type": "Affichage error pose déjà sélectionnée"
},
{
"time": 1677838689289,
"type": "fleche droite"
},
{
"time": 1677838689450,
"type": "bouton pose n°3"
},
{
"time": 1677838716760,
"type": "bouton valider"
},
{
"time": 1677838716760,
"type": "fin des choix."
},
{
"time": 1677838716761,
"type": "Début analyse n°1"
},
{
"time": 1677838718112,
"type": "ajout check sur : analyse n°1, mot 1. De face"
},
{
"time": 1677838718641,
"type": "Bouton valider analyse."
},
{
"time": 1677838718641,
"type": "Début analyse n°2"
},
{
"time": 1677838719650,
"type": "ajout check sur : analyse n°2, mot 2. De profil"
},
{
"time": 1677838720057,
"type": "Bouton valider analyse."
},
{
"time": 1677838720057,
"type": "Début analyse n°3"
},
{
"time": 1677838720729,
"type": "ajout check sur : analyse n°3, mot 3. Debout"
},
{
"time": 1677838721384,
"type": "Bouton valider analyse."
},
{
"time": 1677838721393,
"type": "Fin analyse"
}
]
}

View File

@ -0,0 +1,17 @@
{
"Analyse": {},
"Interactions": [
{
"time": 1677933175395,
"type": "start"
},
{
"time": 1677933175421,
"type": "Affichage Mesh random : dragon en idx_i, idx_j : (1, 1)"
},
{
"time": 1677933175421,
"type": "Affichage Mesh random : dragon en theta, delta : (0.7853981633974483, 0.7853981633974483)"
}
]
}

View File

@ -32,7 +32,7 @@ async function main() {
file.write(JSON.stringify(req.body, undefined, 4));
// Envoi de la réponse pour terminer la requête.
res.send('Ok');
res.send('Enregistrement terminé.');
});
// Création du dossier où les données seront stockées.

View File

@ -12,7 +12,7 @@ function init_variable_analyse(){
// Analayse des choix avec les checkboxs
keywords = ["1. De face", "2. De profil", "3. Debout", "4. Eyes contact", "5. toto"]
nb_analyse_demande = 3
nb_analyse_demande = 1//3
w_valider = w_bouton*1.2
h_valider = h_bouton*1.2

View File

@ -31,55 +31,6 @@ function init_variable_fonction(dict_boutons, dict_imgs ){
}
function new_image(src) {
img = new Image()
img.src = src
return img
}
function getMousePos(c, event) {
var rect = c.getBoundingClientRect()
return {
x: event.clientX - rect.left,
y: event.clientY - rect.top
}
}
function is_inside(xyMove, x, y, w, h) {
return (xyMove.x > x && xyMove.x < x+w && xyMove.y > y && xyMove.y < y +h)
}
function click_inside(xyClick, x, y, w, h) {
return (xyClick.x > x && xyClick.x < x+w && xyClick.y > y && xyClick.y < y +h)
}
function draw_rectangle(originex, originey, largeur, hauteur, couleur, alpha){
ctx.beginPath()
ctx.moveTo(originex, originey)
ctx.lineTo(originex+largeur, originey)
ctx.lineTo(originex+largeur, originey+hauteur)
ctx.lineTo(originex, originey+hauteur)
ctx.lineTo(originex, originey)
ctx.fillStyle = couleur
ctx.globalAlpha = alpha
ctx.fill()
ctx.globalAlpha = 1
}
function draw_contour(originex, originey, largeur, hauteur, couleur, alpha=1){
ctx.beginPath()
ctx.moveTo(originex, originey)
ctx.lineTo(originex+largeur, originey)
ctx.lineTo(originex+largeur, originey+hauteur)
ctx.lineTo(originex, originey+hauteur)
ctx.lineTo(originex, originey)
ctx.lineWidth = 5
ctx.strokeStyle = couleur
ctx.globalAlpha = alpha
ctx.stroke()
ctx.lineWidth = 1
}
function bloquer_pose(L_poses){
for (p=0; p<L_poses.length; p++){
idx_i_p = L_poses[p][3]
@ -91,20 +42,6 @@ function bloquer_pose(L_poses){
}
}
function progress_bar(N_tache, N_mesh){
if (N_tache<=N_mesh){
// background
draw_rectangle(x_progress_bar, y_progress_bar, w_progress_bar, h_progress_bar, "rgb(255,255,255)", 1)
// bar
w_bar = ((N_tache-1)/N_mesh)*w_progress_bar
draw_rectangle(x_progress_bar, y_progress_bar, w_bar, h_progress_bar, "rgb(17, 138, 178)", 1)
// // numero de tache
// 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
// ctx.font = "18pt Courier";
// ctx.fillText((N_tache)+"/"+(N_mesh), x_progress_bar+w_progress_bar+10, h_progress_bar)
}
}
function pose_deja_choisie(L_poses, i_choix, j_choix){
deja_choisie = false
@ -118,71 +55,6 @@ function pose_deja_choisie(L_poses, i_choix, j_choix){
}
}
function print_text(dialogue) {
s = dialogue.texte
for (let i = 0; i < s.length; i++) {
if (s[i].lettre !== undefined) {
ctx.strokeStyle = s[i].stroke
ctx.fillStyle = s[i].fill
ctx.strokeText(s[i].lettre, s[i].x, s[i].y)
ctx.fillText(s[i].lettre, s[i].x, s[i].y)
}
}
}
function handle_text(dialogue, x_start, y_start, font, l_max, color="#FFFFFF") {
let s = dialogue
let x = 0
let y = y_start
let mot = ""
let img_to_print = ""
let lettres = s.split("")
let message = []
let current_fill = color
ctx.textAlign = "left"
ctx.font = font
while (lettres.length > 0) {
l = lettres.splice(0, 1)[0]
if (l === " ") {
if (x >= l_max) {
x = 0
y += 40
for (let i = 0; i < mot.length; i++) {
message[message.length-mot.length+i].x = x_start+x
message[message.length-mot.length+i].y = y
x += ctx.measureText(message[message.length-mot.length+i].lettre).width
}
}
message.push({"lettre": " ", "x": x_start+x, "y": y, "fill": current_fill, "stroke": current_fill})
x += ctx.measureText(" ").width
mot = ""
} else {
mot += l
message.push({"lettre": l, "x": x_start+x, "y": y, "fill": current_fill, "stroke": current_fill})
x += ctx.measureText(l).width
}
}
if (x >= l_max) {
x = 0
y += 40
for (let i = 0; i < mot.length; i++) {
message[message.length-mot.length+i].x = x_start+x
message[message.length-mot.length+i].y = y
x += ctx.measureText(message[message.length-mot.length+i].lettre).width
}
}
return {"texte": message}
}
///////////////////////////////////////////////////////////////

35
static/fonctions_fin.js Normal file
View File

@ -0,0 +1,35 @@
function affichage_texte_fin(M_fin, E_termine){
ctx.strokeStyle = "rgb(255, 255, 255)"
ctx.fillStyle = "rgb(255, 255, 255)"
//Message de remerciement
texte = "Done, thx you :)"
font = "100pt Courier"
ctx.font = font
largeur = ctx.measureText(texte).width
print_text(handle_text(texte, (window.innerWidth/2)-(largeur/2), 150, font, window.innerWidth, 1000, color="#FFFFFF"))
// Texte WAIT
texte = "Please a moment"
font = "70pt Courier"
ctx.font = font
largeur = ctx.measureText(texte).width
print_text(handle_text(texte, (window.innerWidth/2)-(largeur/2), 350, font, window.innerWidth, 1000, color="#FFFFFF"))
ctx.strokeStyle = "rgb(239, 71, 111)"
ctx.fillStyle = "rgb(239, 71, 111)"
texte = " WAIT "
largeur = ctx.measureText(texte).width
print_text(handle_text(texte, (window.innerWidth/2)-(largeur/2), 350, font, window.innerWidth, 1000))
// Texte d'envoie
ctx.strokeStyle = "rgb(255, 255, 255)"
ctx.fillStyle = "rgb(255, 255, 255)"
if (!E_termine){
print_text(handle_text(M_fin, (window.innerWidth/2)-450, innerHeight/2 +100, "26pt Courier", 1000))
}
else {
print_text(handle_text(M_fin, (window.innerWidth/2)-450, innerHeight/2 +200, "26pt Courier", 1000))
}
}

View File

@ -0,0 +1,183 @@
scale_bouton_commencer = 0.6
function affichage_inscription(){
// Texte
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 ??????"
font = "58pt Courier"
ctx.font = font
largeur = ctx.measureText(texte).width
ctx.fillText(texte, (window.innerWidth/2)- (largeur/2), 100)
// Pour les zones de textes
ctx.strokeStyle = "rgb(255, 255, 255)"
ctx.fillStyle = "rgb(255, 255, 255)"
ctx.font = "28pt Courier"
ctx.fillText("Firstname:", x_texte_zone, parseInt(document.getElementById("Firstname").style.top) -10)
ctx.fillText("Name:", x_texte_zone, parseInt(document.getElementById("Name").style.top) - 10)
ctx.fillText("Age:", x_texte_zone, parseInt(document.getElementById("Age").style.top) - 10)
ctx.fillText("Sexe:", parseInt(document.getElementById("SexeM").style.left), parseInt(document.getElementById("SexeM").style.top) - 10)
ctx.fillText("Sexe:", parseInt(document.getElementById("SexeM").style.left), parseInt(document.getElementById("SexeM").style.top) - 10)
ctx.font = "24pt Courier"
ctx.fillText("Male", parseInt(document.getElementById("SexeM").style.left)+40, parseInt(document.getElementById("SexeM").style.top)+34)
ctx.fillText("Female", parseInt(document.getElementById("SexeF").style.left)+40, parseInt(document.getElementById("SexeM").style.top)+34)
}
function afficher_bouton_commencer(){
w_bouton_commencer = scale_bouton_commencer*boutons["commencer"].width
h_bouton_commencer = scale_bouton_commencer*boutons["commencer"].height
x_bouton_commencer = (window.innerWidth/2)-(w_bouton_commencer/2)
y_bouton_commencer = innerHeight*0.75
// Bouton commencer
ctx.drawImage(boutons["commencer"], 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(s){
page_inscription = false
page_vues = true
interactions.push({"time": new Date().getTime(), "type": "bouton commencer"+s})
}
function traitement_inscription(){
affichage_inscription()
if (champs_remplis_correctment()){
afficher_bouton_commencer()
if (clicked && click_inside(xyMouseDown, x_bouton_commencer, y_bouton_commencer , w_bouton_commencer, h_bouton_commencer)){
// on passe aux choix
action_bouton_commencer("titi")
}
}
}
//////////////////////////////////////////////////////////////
/// CHAMPS INSCRIPTION
function champs_remplis_correctment(){
firstname_ok = false
name_ok = false
age_ok = false
sexe_ok = false
if (document.getElementById("Firstname").value.length >0){firstname_ok = true}
if (document.getElementById("Name").value.length >0){name_ok = true}
if (document.getElementById("Age").value.length >0){age_ok = true}
if (document.getElementById("SexeM").checked || document.getElementById("SexeF").checked){ sexe_ok= true}
return firstname_ok && name_ok && age_ok && sexe_ok
}
function afficher_champs_inscription() {
w_text_zone = 30
h_text_zone = 42
nb_caract_min = 1
nb_caract_max = 30
x_texte_zone = (window.innerWidth/3)
y_texte_zone = 200
ecart_texte_zone = 160
// Zone de texte : Firstname
var input = document.createElement('input');
input.type = 'text';
input.id = 'Firstname';
input.minLength = nb_caract_min
input.maxLength = nb_caract_max
input.size = w_text_zone
input.style.position = 'fixed';
input.style.left = x_texte_zone+'px';
input.style.top = y_texte_zone+'px';
input.style.textAlign = 'left'
input.style.height = h_text_zone
input.style.font = "24pt Courier"
document.body.appendChild(input);
input.focus();
// Zone de texte : Name
var input2 = document.createElement('input');
input2.type = 'text';
input2.id = 'Name';
input2.minLength = nb_caract_min
input2.maxLength = nb_caract_max
input2.size = w_text_zone
// style
input2.style.position = 'fixed';
input2.style.left = x_texte_zone+'px';
input2.style.top = ecart_texte_zone+y_texte_zone+'px';
input2.style.textAlign = 'left'
input2.style.height = h_text_zone
input2.style.font = "24pt Courier"
document.body.appendChild(input2);
input2.focus();
// Zone de texte : Age
var input3 = document.createElement('input');
input3.type = 'number';
input3.id = 'Age';
input3.min = 1
input3.max = 99
input3.size = w_text_zone
// style
input3.style.position = 'fixed';
input3.style.left = x_texte_zone+'px';
input3.style.top = 2*ecart_texte_zone + y_texte_zone+'px';
input3.style.textAlign = 'left'
input3.style.height = h_text_zone
input3.style.font = "24pt Courier"
document.body.appendChild(input3);
input3.focus();
// Zone de texte : Sexe
var input4 = document.createElement('input');
input4.type = 'radio';
input4.id = 'SexeM';
input4.name = "sexe"
//input4.size = w_text_zone
// style
input4.style.position = 'fixed';
input4.style.left = x_texte_zone + 250;
input4.style.top = 2*ecart_texte_zone + y_texte_zone+'px';
input4.style.height = h_text_zone
document.body.appendChild(input4);
input4.focus();
var input5 = document.createElement('input');
input5.type = 'radio';
input5.id = 'SexeF';
input5.name = "sexe"
//input4.size = w_text_zone
// style
input5.style.position = 'fixed';
input5.style.left = x_texte_zone + 400;
input5.style.top = 2*ecart_texte_zone + y_texte_zone+'px';
input5.style.height = h_text_zone
document.body.appendChild(input5);
input5.focus();
}
function gestion_donnees_personnelles(){
// Sauvegarde des infos
if (document.getElementById("SexeM").checked){sexe = "M"}
else if (document.getElementById("SexeF").checked){sexe = "F"}
else {sexe='None'}
choix['identite'] = {"Firstname":document.getElementById("Firstname").value,
"Name": document.getElementById("Name").value,
"Age": document.getElementById("Age").value,
"Sexe": sexe}
document.getElementById("Firstname").style.display = 'none'
document.getElementById("Name").style.display = 'none'
document.getElementById("Age").style.display = 'none'
document.getElementById("SexeM").style.display = 'none'
document.getElementById("SexeF").style.display = 'none'
}

View File

@ -1,38 +0,0 @@
scale_bouton_commencer = 0.6
function affichage_tuto(){
w_bouton_commencer = scale_bouton_commencer*boutons["commencer"].width
h_bouton_commencer = scale_bouton_commencer*boutons["commencer"].height
// Texte
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
ctx.font = "bold 58pt Courier";
ctx.fillText("Are you ready ??????", (window.innerWidth/2)-450, innerHeight/2 -100)
// Bouton commencer
ctx.drawImage(boutons["commencer"], (window.innerWidth/2)-(w_bouton_commencer/2), innerHeight/2, w_bouton_commencer, h_bouton_commencer)
}
function survol_commencer(){
if(xyMouseMove.x >= (window.innerWidth/2)-(w_bouton_commencer/2) && xyMouseMove.x <= (window.innerWidth/2)-(w_bouton_commencer/2) + w_bouton_commencer && xyMouseMove.y > innerHeight/2 && xyMouseMove.y < innerHeight/2 + h_bouton_commencer){
draw_rectangle((window.innerWidth/2)-(w_bouton_commencer/2), innerHeight/2, w_bouton_commencer, h_bouton_commencer, "rgb(200, 200, 200)", 0.6)
}
}
function action_bouton_commencer(s){
page_tuto = false
page_vues = true
interactions.push({"time": new Date().getTime(), "type": "bouton commencer"+s})
}
function traitement_tuto(){
affichage_tuto()
survol_commencer()
if (clicked && click_inside(xyMouseDown, (window.innerWidth/2)-(w_bouton_commencer/2), innerHeight/2, w_bouton_commencer, h_bouton_commencer)){
// on passe aux choix
action_bouton_commencer("titi")
}
}

130
static/fonctions_utiles.js Normal file
View File

@ -0,0 +1,130 @@
function new_image(src) {
img = new Image()
img.src = src
return img
}
function getMousePos(c, event) {
var rect = c.getBoundingClientRect()
return {
x: event.clientX - rect.left,
y: event.clientY - rect.top
}
}
function is_inside(xyMove, x, y, w, h) {
return (xyMove.x > x && xyMove.x < x+w && xyMove.y > y && xyMove.y < y +h)
}
function click_inside(xyClick, x, y, w, h) {
return (xyClick.x > x && xyClick.x < x+w && xyClick.y > y && xyClick.y < y +h)
}
function draw_rectangle(originex, originey, largeur, hauteur, couleur, alpha){
ctx.beginPath()
ctx.moveTo(originex, originey)
ctx.lineTo(originex+largeur, originey)
ctx.lineTo(originex+largeur, originey+hauteur)
ctx.lineTo(originex, originey+hauteur)
ctx.lineTo(originex, originey)
ctx.fillStyle = couleur
ctx.globalAlpha = alpha
ctx.fill()
ctx.globalAlpha = 1
}
function draw_contour(originex, originey, largeur, hauteur, couleur, alpha=1){
ctx.beginPath()
ctx.moveTo(originex, originey)
ctx.lineTo(originex+largeur, originey)
ctx.lineTo(originex+largeur, originey+hauteur)
ctx.lineTo(originex, originey+hauteur)
ctx.lineTo(originex, originey)
ctx.lineWidth = 5
ctx.strokeStyle = couleur
ctx.globalAlpha = alpha
ctx.stroke()
ctx.lineWidth = 1
}
function print_text(dialogue) {
s = dialogue.texte
for (let i = 0; i < s.length; i++) {
if (s[i].lettre !== undefined) {
ctx.strokeStyle = s[i].stroke
ctx.fillStyle = s[i].fill
ctx.strokeText(s[i].lettre, s[i].x, s[i].y)
ctx.fillText(s[i].lettre, s[i].x, s[i].y)
}
}
}
function handle_text(dialogue, x_start, y_start, font, l_max, color="#FFFFFF") {
let s = dialogue
let x = 0
let y = y_start
let mot = ""
let img_to_print = ""
let lettres = s.split("")
let message = []
let current_fill = color
ctx.textAlign = "left"
ctx.font = font
while (lettres.length > 0) {
l = lettres.splice(0, 1)[0]
if (l === " ") {
if (x >= l_max) {
x = 0
y += 40
for (let i = 0; i < mot.length; i++) {
message[message.length-mot.length+i].x = x_start+x
message[message.length-mot.length+i].y = y
x += ctx.measureText(message[message.length-mot.length+i].lettre).width
}
}
message.push({"lettre": " ", "x": x_start+x, "y": y, "fill": current_fill, "stroke": current_fill})
x += ctx.measureText(" ").width
mot = ""
} else {
mot += l
message.push({"lettre": l, "x": x_start+x, "y": y, "fill": current_fill, "stroke": current_fill})
x += ctx.measureText(l).width
}
}
if (x >= l_max) {
x = 0
y += 40
for (let i = 0; i < mot.length; i++) {
message[message.length-mot.length+i].x = x_start+x
message[message.length-mot.length+i].y = y
x += ctx.measureText(message[message.length-mot.length+i].lettre).width
}
}
return {"texte": message}
}
function progress_bar(N_tache, N_mesh){
if (N_tache<=N_mesh){
// background
draw_rectangle(x_progress_bar, y_progress_bar, w_progress_bar, h_progress_bar, "rgb(255,255,255)", 1)
// bar
w_bar = ((N_tache-1)/N_mesh)*w_progress_bar
draw_rectangle(x_progress_bar, y_progress_bar, w_bar, h_progress_bar, "rgb(17, 138, 178)", 1)
// // numero de tache
// 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
// ctx.font = "18pt Courier";
// ctx.fillText((N_tache)+"/"+(N_mesh), x_progress_bar+w_progress_bar+10, h_progress_bar)
}
}

View File

@ -4,7 +4,13 @@
// initialisation des variables
init_variable(true)
// initialisation du canvas : load des images
setUp_3D(indice_mesh)
//setUp_3D(indice_mesh)
canvas = document.getElementById("canvas")
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
ctx = canvas.getContext("2d")
init_data()
//init_clavier()
// action
@ -42,7 +48,7 @@ function init_variable(premier_appel){
indice_mesh = 0 // indice du premier mesh à visionner
mesh_courant = "nope" // nom des mesh
// nombre de mesh a visionner AU TOTAL
nb_mesh = 3
nb_mesh = 2 //3
// Choix des N poses demandé pour les mesh courant
choix_courant = {}
@ -74,7 +80,7 @@ function init_variable(premier_appel){
R = 2.5
// Enchainement des pages
page_tuto = true // true
page_inscription = true // true
page_vues = false // false
page_analyse = false
@ -83,10 +89,14 @@ function init_variable(premier_appel){
all_canvasMins = {}
// pour initialiser les claviers à chaque page
premier_tour_page_tuto = true
premier_tour_page_inscription = true
premier_tour_page_vues = true
premier_tour_page_analyse = true
// message de fin
message_fin = "> Sending data in progress ..."
envoie_termine = false
}
////////////////////////////////////////
@ -213,15 +223,17 @@ function setUp_3D(idx_mesh){
////////////////////////////////////////
// CLAVIER
function action_clavier_tuto(event){
function action_clavier_inscription(event){
switch (event.key){
// selectionner pose
case ' ' :
action_bouton_commencer('clavier')
if (champs_remplis_correctment()){
action_bouton_commencer('clavier')}
break;
// valider
case 'Enter':
action_bouton_commencer('clavier')
if (champs_remplis_correctment()){
action_bouton_commencer('clavier')}
break;
}
}
@ -294,8 +306,8 @@ function action_clavier_analyse(event){
function init_clavier_tuto(){
document.addEventListener("keydown", action_clavier_tuto)
function init_clavier_inscription(){
document.addEventListener("keydown", action_clavier_inscription)
}
function init_clavier_vues(){
@ -351,21 +363,27 @@ function animate() {
// Temps à chaque animate
time_animate = new Date().getTime()
// page tuto
if (page_tuto){
if (premier_tour_page_tuto){
init_clavier_tuto()
premier_tour_page_tuto=false}
traitement_tuto()
// page inscription
if (page_inscription){
if (premier_tour_page_inscription){
init_clavier_inscription()
afficher_champs_inscription()
premier_tour_page_inscription=false}
traitement_inscription()
}
// page de choix
if (page_vues && num_tache <= nb_mesh){
// on enlève les touches du clavier associé à la page tuto
document.removeEventListener("keydown", action_clavier_tuto)
// on enlève les touches du clavier associé à la page inscription
document.removeEventListener("keydown", action_clavier_inscription)
//init touche clavier
if(premier_tour_page_vues){
//gestion des données personnelle de l'utilisateur
gestion_donnees_personnelles()
// init clavier pour les vues
init_clavier_vues()
// affichage ecran 3D
setUp_3D(indice_mesh)
premier_tour_page_vues = false
}
// Variable pour les fonctions
@ -403,7 +421,7 @@ function animate() {
which_clicked_fleche = -1
which_clicked_bouton = -1
}
// page analyse
if (page_analyse){
// on enlève les touches du clavier associé à la page vues
document.removeEventListener("keydown", action_clavier_vues)
@ -415,18 +433,14 @@ function animate() {
init_variable_analyse()
traitement_fin()
}
// page finale
if (!page_tuto && !page_vues && !page_analyse){
// page fin
if (!page_inscription && !page_vues && !page_analyse){
// on enlève les touches du clavier associé à la page vues
document.removeEventListener("keydown", action_clavier_analyse)
ctx.clearRect(0, 0, window.innerWidth, window.innerHeight)
draw_rectangle(0,0,canvas.width, canvas.height, "rgb(3, 26, 33)", 1)
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
ctx.font = "bold 58pt Courier";
ctx.fillText("Done, thx you :)", (window.innerWidth/2)-450, innerHeight/2 -100)
console.log('Fin interface3DD')
// Texte
affichage_texte_fin(message_fin, envoie_termine)
// ECRITURE DES RESULTATS
choix['Analyse'] = checkbox_clicked
choix['Interactions'] = interactions
@ -441,12 +455,19 @@ function animate() {
// Si la requête est terminée, et que la réponse n'est pas une erreur.
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
console.log(xhr.responseText);
message_fin = "> It's done."
//print_text(handle_text(message_fin, (window.innerWidth/2)-450, innerHeight/2+150 , "26pt Courier", 1000))
envoie_termine = true
affichage_texte_fin(message_fin, envoie_termine)
return;
}
}
// Envoi de la requête vers le serveur, avec les données.
xhr.send(JSON.stringify(choix));
return;
return
}
// Boucle sur animate

View File

@ -16,3 +16,5 @@ body {
background-color: #CCC;
position: relative
}