{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Chapitre 9 : Description du mouvement                                           \n",
    "## Exercice 56 p 189 : Saut à ski\n",
    "\n",
    "**Niveau INTERMEDIAIRE**      \n",
    "Le programme suivant permet d'afficher le plan incliné, les positions successives du skieur et les vecteurs vitesse toutes les 2 positions successives."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*Chaque cellule doit être exécutée après avoir été éventuellement complétée selon les consignes à l'aide de la fiche méthode accessible en fin de manuel.*     \n",
    "***Les cellules doivent être éxécutées dans l'ordre les unes après les autres.***"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#!/usr/bin/python\n",
    "# -*- coding: utf-8 -*-\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from math import tan, pi"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "Les deux lignes d'instruction suivantes définissent le plan incliné.  \n",
    "**EXECUTER LA CELLULE SANS LA MODIFIER.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.linspace(0,120,20)   \n",
    "y = tan(-35*pi/180)*x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "**Question 1**  \n",
    "**En utilisant les DONNÉES, compléter le code source fourni afin de proposer un programme permettant de représenter les positions successives du skieur lors d’un saut.**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Demander d'entrer le nombre de positions à représenter et l'affecter à la variable ```N```."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "N = ...............('Nombre de positions à représenter N = '))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Demander d'entrer l'intervalle de temps ∆*t* (en seconde) entre deux positions successives et l'affecter à la variable ```Delta_t```."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Delta_t = ...............('∆t (en s) entre deux positions successives, ∆t = '))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Créer le tableau ```t``` des dates associées aux positions du skieur à l'aide de l'instruction ```np.linspace()```.   \n",
    "Puis créer les tableaux ```xs``` et ```ys``` des coordonnées des positions du skieur à partir du tableau ```t``` des dates."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "t = np.linspace(0,(N-1)*Delta_t,N) # Domaine des dates (en s)\n",
    "\n",
    "xs = ............                  # Domaine des abscisses (en m)\n",
    "ys = ............                  # Domaine des ordonnées (en m)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Afficher les positions successives du skieur dans la fenêtre graphique à partir des tableaux ```xs``` et ```ys```."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib widget\n",
    "\n",
    "...............('Saut à ski')   # Nommer la fenêtre de visualisation\n",
    "...............('Positions successives du skieur') # Donner un titre au graphe\n",
    "...............                 # Nommer l'axe des abscisses\n",
    "...............                 # Nommer l'axe des ordonnées\n",
    "...............                 # Tracer les posisions du skieur: '+' en rouge et reliées\n",
    "plt.plot(x,y,'b-',lw=0.5)       # Tracer le plan incliné en bleu\n",
    "...............                 # Imposer un repère orthonormé\n",
    "...............                 # Afficher la figure"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "**Question 2**   \n",
    "**Exécuter le programme puis, à l’aide des fonctionnalités du logiciel, déterminer le plus précisément possible les coordonnées du point d’impact du skieur sur le plan incliné.**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "**Question 3**   \n",
    "**En déduire le nombre de points marqués par le skieur pour la distance *d* parcourue lors de ce saut.**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "**Question 4**  \n",
    "**Compléter à nouveau le code source pour représenter les vecteurs vitesse du skieur toutes les deux positions successives du skieur.**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```e``` est un facteur d'échelle pour la représentation du vecteur vitesse.   \n",
    "Demander d'entrer la valeur e, comprise entre 0,1 et 0,5, du facteur d'échelle des vecteurs vitesse et l'affecter à la variable ```e```."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "e=float(input('Valeur e du facteur d\\'échelle des vecteurs vitesse (0.1 à 0.5), e = '))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Afficher le vecteur vitesse toutes les deux positions.  \n",
    "*A l'éxécution de la cellule, les vecteurs vitesse s'affichent dans la fenêtre de visualisation ci-dessus.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in range(0,N-1,2):\n",
    "    plt.arrow(............, ............,\n",
    "              e*(...............)/(...............),\n",
    "              e*(...............)/(...............),\n",
    "              width=0.5, color='c', length_includes_head=\"true\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
