{"id":1448,"date":"2024-09-10T06:05:49","date_gmt":"2024-09-10T04:05:49","guid":{"rendered":"https:\/\/labopothier.com\/?p=1448"},"modified":"2025-03-26T11:02:59","modified_gmt":"2025-03-26T10:02:59","slug":"activite-python-trace-de-vecteurs-vitesse-sur-python-a-partir-dun-pointage-video","status":"publish","type":"post","link":"https:\/\/labopothier.com\/index.php\/2024\/09\/10\/activite-python-trace-de-vecteurs-vitesse-sur-python-a-partir-dun-pointage-video\/","title":{"rendered":"ACTIVITE PYTHON Trac\u00e9 de vecteurs vitesse sur Python \u00e0 partir d\u2019un pointage vid\u00e9o"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\"><strong>Acquisition et export du tableau de donn\u00e9es<\/strong><\/h3>\n\n\n\n<p><strong>Remarque<\/strong> : Plusieurs m\u00e9thodes sont possibles avec matplotlib. Selon la version de Windows ou MacOS, certaines fonctionnent mieux que d&rsquo;autres. Ces 3 m\u00e9thodes sont <strong>quiver<\/strong>, <strong>annotate <\/strong>ou <strong>arrow<\/strong>. La m\u00e9thode choisie ici est <strong>quiver<\/strong>, les autres ont \u00e9t\u00e9 mises en commentaires. Faire le test en \u00ab\u00a0d\u00e9commentant\u00a0\u00bb les lignes de codes pour les autres m\u00e9thodes.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Avec Avimeca ou Regressi (exemple de chute libre) :<\/strong><\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">Avec Avi Meca :<\/h4>\n\n\n\n<p>Proc\u00e9der au pointage de la s\u00e9quence vid\u00e9o \u00e0 \u00e9tudier.<br>Dans&nbsp;<strong><em>Fichier<\/em><\/strong>,&nbsp;<strong><em>Mesures<\/em><\/strong>,&nbsp;<strong><em>Enregistrer dans un fichier<\/em><\/strong>, choisir le format&nbsp;<strong><em>txt (type de s\u00e9parateur des donn\u00e9es : Tabulation)<\/em><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/pointage_avimeca.png\" alt=\"\" class=\"wp-image-236\"\/><\/figure>\n\n\n\n<p>Il est n\u00e9cessaire de supprimer les trois premi\u00e8res lignes du fichier texte, en modifiant le fichier directement dans le Bloc-Notes<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/Capture-d\u2019\u00e9cran-2020-04-09-\u00e0-10.16.04-1024x371.png\" alt=\"\" class=\"wp-image-240\"\/><\/figure>\n\n\n\n<p>Attention : ce fichier <a href=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/pointage.txt\" target=\"_blank\" rel=\"noreferrer noopener\">pointage.txt <\/a>doit \u00eatre plac\u00e9 dans le m\u00eame dossier que le fichier python \u00e0 ex\u00e9cuter.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Avec Regressi :<\/h4>\n\n\n\n<p>Proc\u00e9der au pointage de la s\u00e9quence vid\u00e9o \u00e0 \u00e9tudier puis basculer sur&nbsp;Regressi.<\/p>\n\n\n\n<p>Dans&nbsp;Fichier,&nbsp;Enregistrer sous, choisir le format&nbsp;txt (texte avec tabulation)<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"152\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-9.png\" alt=\"\" class=\"wp-image-1787\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-9.png 768w, https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-9-300x59.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 36%\"><div class=\"wp-block-media-text__content\">\n<p class=\"has-text-align-center has-normal-font-size\">                                                    Puis cocher&nbsp;Valeurs seules<\/p>\n\n\n\n<p><\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"374\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre2.png\" alt=\"\" class=\"wp-image-1788 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre2.png 698w, https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre2-300x161.png 300w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/figure><\/div>\n\n\n\n<p>Attention : ce fichier <a href=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/pointage.txt\" target=\"_blank\" rel=\"noreferrer noopener\">pointage.txt <\/a>doit \u00eatre plac\u00e9 dans le m\u00eame dossier que le fichier python \u00e0 ex\u00e9cuter.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Ex\u00e9cution du code Python avec r\u00e9cup\u00e9ration des donn\u00e9es<\/strong> : <em>vecteurs_vitesse.py<\/em><\/h4>\n\n\n\n<pre title=\" Trac\u00e9 de vecteurs \u00e0 partir d'un pointage Avimeca ou Regressi\" class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\">\n\nimport matplotlib.pyplot as plt # pour les graphiques\nimport numpy as np # numpy pour l'importation des donnees en format txt\n\n# importation des donnees txt obtenues \u00e0 la suite du pointage \n# (sur AviMeca on a supprim\u00e9 les 3 premieres lignes dans le fichier texte pour garder les valeurs seules)\nlines = open('pointage.txt').readlines() #lecture des lignes du fichier texte\nfor i in range(len(lines)):                  # On remplace les virgules par des points pour les nombres d\u00e9cimaux\n   lines[i]=lines[i].replace(',','.')\n\nopen('data.txt', 'w').writelines(lines) #cr\u00e9ation d'un nouveau fichier texte avec les pr\u00e9c\u00e9dentes modifications\ndata = np.loadtxt('data.txt')# importation du nouveau fichier texte pour r\u00e9cup\u00e9rer les valeurs de t, x et y dans un tableau\n\nt = data[:,0] # selection de la premiere colonne\ny = data[:,2] # selection de la troisieme colonne\nx = [0]*len(y) # Mouvement \u00e0 une dimension : on cr\u00e9e une liste de 0 pour x,de la m\u00eame longueur que la liste y\n\n\n# creation de listes vides pour les composantes des vitesses\nvx = []\nvy = []\n\n# boucle pour calcul des composantes vx et vy et construction de fleches \n# a partir de la methode quiver de la fonction pyplot \n# (on peut aussi utiliser les m\u00e9thodes annotate et arrow)\nfor i in range(0,len(t)-1) :\n    vx.append((x[i+1]-x[i])\/(t[i+1]-t[i]))\n    vy.append((y[i+1]-y[i])\/(t[i+1]-t[i]))\n\n    plt.quiver(x[i],y[i], vx[i], vy[i],color = 'r',width=0.005,scale=50,units='xy',angles='xy')\n    # m\u00e9thode pour tracer des vecteurs\n\n    #plt.annotate('', xy = (x[i]+vx[i-1]\/40, y[i]+vy[i-1]\/40), xytext = (x[i], y[i]), arrowprops = {'color' : 'r','width': 0.5, 'headwidth': 2})\n    # autre m\u00e9thode pour tracer des vecteurs : xytext donne les coordonnees du debut de la fleche, xy donne les coordonnnees de la pointe de la fleche\n    \n    # plt.arrow(x[i],y[i], vx[i]\/40, vy[i]\/40,length_includes_head=True,color = 'r',width=0.0001)\n    # 3\u00e8me m\u00e9thode pour tracer des vecteurs   plt.arrow(x[i],y[i], vx[i]\/20, vy[i]\/20,length_includes_head=True,color = 'r',width=0.005)    \n   \n\n# afficher points avec croix rouges. Inserer texte (titre, nom des axes,\u2026)\nplt.figure(1)\nplt.scatter(x, y, c = 'red', marker = '+')\nplt.suptitle (\" Repr\u00e9sentation de $y=f(x)$ \" )\nplt.title (\" Trac\u00e9 des vecteurs vitesse \" )\nplt.xlabel(\"$x$\")\nplt.ylabel(\"$y$\")\nplt.show()\n<\/code><\/pre>\n\n\n\n<p>Ex\u00e9cuter le script pour obtenir la repr\u00e9sentation graphique de y=f(x) et le trac\u00e9 des vecteurs sur Pyzo (raccourci&nbsp;<strong>ctrl+ E<\/strong>):<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/Figure_1-1024x768.png\" alt=\"\" class=\"wp-image-245\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Avec Latis Pro (exemple de mouvement parabolique):<\/strong><\/h4>\n\n\n\n<p>Proc\u00e9der au pointage de la s\u00e9quence vid\u00e9o \u00e0 \u00e9tudier.<br>Dans&nbsp;<strong>Fichier<\/strong>,&nbsp;<strong>Exportation<\/strong>, ajouter les courbes Mouvement x et Mouvement Y.<\/p>\n\n\n\n<div class=\"wp-block-media-text alignfull has-media-on-the-right alignwide is-stacked-on-mobile\" style=\"grid-template-columns:auto 24%\"><div class=\"wp-block-media-text__content\">\n<p class=\"has-text-align-center has-normal-font-size\">Exporter sous format txt en choisissant comme s\u00e9parateur :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Point&nbsp;<\/strong>pour&nbsp;<strong>D\u00e9cimal<\/strong><\/li>\n\n\n\n<li><strong>Tabulation\u00a0<\/strong>pour\u00a0<strong>Entre les donn\u00e9es<\/strong><\/li>\n<\/ul>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"382\" height=\"471\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-8.png\" alt=\"\" class=\"wp-image-1784 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-8.png 382w, https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-8-243x300.png 243w\" sizes=\"auto, (max-width: 382px) 100vw, 382px\" \/><\/figure><\/div>\n\n\n\n<p>On doit supprimer la premi\u00e8re ligne pour conserver uniquement les valeurs. Il est impossible de le demander dans le script (voir ci-dessous)<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"591\" height=\"158\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-5.png\" alt=\"\" class=\"wp-image-1779\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-5.png 591w, https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-5-300x80.png 300w\" sizes=\"auto, (max-width: 591px) 100vw, 591px\" \/><\/figure>\n\n\n\n<p>Attention : ce fichier <a rel=\"noreferrer noopener\" href=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/parabole_Latis_Pro.txt\" target=\"_blank\">parabole_Latis_Pro.txt<\/a><a rel=\"noreferrer noopener\" href=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/pointage.txt\" target=\"_blank\"> <\/a>doit \u00eatre plac\u00e9 dans le m\u00eame dossier que le fichier python \u00e0 ex\u00e9cuter.<\/p>\n\n\n\n<pre title=\" Trac\u00e9 de vecteurs \u00e0 partir d'un pointage sur Latis Pro\" class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\">\"\"\"\nTrac\u00e9 de vecteurs vitesse \u00e0 partir du fichier txt d'un pointage video avec Latis Pro\non utlise np.loadtxt() de numpy pour r\u00e9cup\u00e9rer les donn\u00e9es mais il faut supprimer la premi\u00e8re ligne du fichier txt, soit \"\u00e0 la main\" soit ici directement dans le programme en cr\u00e9ant un nouveau fichier texte data.txt\n\"\"\"\n\nimport matplotlib.pyplot as plt # pour les graphiques\nimport numpy as np # numpy pour l'importation des donnees en format txt\n\n# importation des donnees txt obtenues apres pointage en supprimant la premiere ligne dans le fichier texte (obtenu apres le pointage du mouvement parabolique sur Latis Pro)\nlines = open('parabole_Latis_Pro.txt').readlines() #on lit les lignes du fichier texte\nopen('data.txt', 'w').writelines(lines[1:]) #cr\u00e9ation d'un nouveau fichier texte sans la premi\u00e8re ligne\ndata = np.loadtxt('data.txt')# importation du nouveau fichier texte pour r\u00e9cup\u00e9rer les valeurs det, x et y dans un tableau\n\nt = data[:,0] # selection de la premiere colonne\nx = data[:,1] # selection de la deuxieme colonne\ny = data[:,3] # selection de la quatrieme colonne\n\n\n\n# creation de listes vides pour les composantes des vitesses et acceleration\nvx = []\nvy = []\n\n\n# boucle pour calcul de vx et vy et construction de fleches  a  partir de la methode pyplot de la fonction pyplot (legendes sans texte)\nfor i in range(0,len(t)-1) :\n    vx.append((x[i+1]-x[i])\/(t[i+1]-t[i]))\n    vy.append((y[i+1]-y[i])\/(t[i+1]-t[i]))\n\n\n    plt.quiver(x[i],y[i], vx[i], vy[i],color = 'r',width=0.005,scale=20,units='xy',angles='xy')\n    #  m\u00e9thode pour tracer des vecteurs\n\n    # plt.annotate('', xy = (x[i]+vx[i-1]\/20, y[i]+vy[i-1]\/20), xytext = (x[i], y[i]), arrowprops = {'color' : 'r','width': 1, 'headwidth': 3})\n    # autre m\u00e9thode pour tracer des vecteurs : xytext donne les coordonnees du debut de la fleche, xy donne les coordonnnees de la pointe de la fleche\n\n    #plt.arrow(x[i],y[i], vx[i]\/20, vy[i]\/20,length_includes_head=True,color = 'r',width=0.005)\n    # 3\u00e8me m\u00e9thode pour tracer des vecteurs\n\n# afficher points avec croix rouges. Inserer texte (titre, nom des axes,\u2026)\nplt.figure(1)\nplt.scatter(x, y, c = 'red', marker = '+')\nplt.suptitle (\" Repr\u00e9sentation de $y=f(x)$  \" )\nplt.title (\" Trac\u00e9 des vecteurs vitesse  \" )\nplt.xlabel(\"$x$\")\nplt.ylabel(\"$y$\")\nplt.show()\n\n\n\n\n\n<\/code><\/pre>\n\n\n\n<p>Ex\u00e9cuter le script pour obtenir la repr\u00e9sentation graphique de y=f(x) et le trac\u00e9 des vecteurs sur Pyzo (raccourci&nbsp;<strong>ctrl+ E<\/strong>):<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"613\" height=\"461\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-6.png\" alt=\"\" class=\"wp-image-1781\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-6.png 613w, https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/Sans-titre-6-300x226.png 300w\" sizes=\"auto, (max-width: 613px) 100vw, 613px\" \/><\/figure>\n\n\n\n<p><strong>Quelques liens utiles :<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pour installer Pyzo et les modules n\u00e9cessaires (matplotlib, numpy,..) :&nbsp;<a href=\"http:\/\/maths.spip.ac- rouen.fr\/IMG\/pdf\/pyzo-miniconda-windows.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/maths.spip.ac- rouen.fr\/IMG\/pdf\/pyzo-miniconda-windows.pdf<\/a><\/li>\n\n\n\n<li>Pour comprendre le langage Python :&nbsp;<a href=\"https:\/\/www.chimsoft.com\/python\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.chimsoft.com\/python<\/a><\/li>\n\n\n\n<li>Cr\u00e9er graphique scientifique avec Python :<a href=\"http:\/\/apprendre-python.com\/page-creer-graphiques-scientifiques-python-apprendre\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;http:\/\/apprendre-python.com\/page-creer-graphiques-scientifiques-python-apprendre<\/a><\/li>\n\n\n\n<li>Pour manipuler un fichier txt avec numpy (s\u00e9lection de colonnes) :&nbsp;<a href=\"https:\/\/www.science- emergence.com\/Articles\/S%C3%A9lectionner-certaines-colonnes-dun-fichier-de- donn%C3%A9es-avec-numpy-de-python\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.science- emergence.com\/Articles\/S%C3%A9lectionner-certaines-colonnes-dun-fichier-de- donn%C3%A9es-avec-numpy-de-python\/<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Acquisition et export du tableau de donn\u00e9es Remarque : Plusieurs m\u00e9thodes sont possibles avec matplotlib. Selon la version de Windows ou MacOS, certaines fonctionnent mieux que d&rsquo;autres. Ces 3 m\u00e9thodes sont quiver, annotate ou arrow. La m\u00e9thode choisie ici est quiver, les autres ont \u00e9t\u00e9 mises en commentaires. Faire le test en \u00ab\u00a0d\u00e9commentant\u00a0\u00bb les lignes [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[7,8],"tags":[],"class_list":["post-1448","post","type-post","status-publish","format-standard","hentry","category-microcontroleurs-et-python","category-python"],"_links":{"self":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/comments?post=1448"}],"version-history":[{"count":7,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1448\/revisions"}],"predecessor-version":[{"id":1789,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1448\/revisions\/1789"}],"wp:attachment":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/media?parent=1448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/categories?post=1448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/tags?post=1448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}