{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Kinematics of particle\n", "\n", "> Marcos Duarte, Renato Naville Watanabe \n", "> [Laboratory of Biomechanics and Motor Control](http://pesquisa.ufabc.edu.br/bmclab) \n", "> Federal University of ABC, Brazil" ] }, { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

Contents

\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Python setup" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-09-25T18:15:19.249287Z", "start_time": "2020-09-25T18:15:18.785440Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import seaborn as sns\n", "sns.set_context(\"notebook\", font_scale=1.2, rc={\"lines.linewidth\": 2, \"lines.markersize\": 10})" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "## Biomechanics & Mechanics\n", "\n", "**A good knowledge of Mechanics is a necessary condition, although not sufficient!, to master Biomechanics**\n", "\n", "For this reason, we will review principles of Classical Mechanics in the context of Biomechanics. \n", "\n", "The book [*Introduction to Statics and Dynamics*](http://ruina.tam.cornell.edu/Book/index.html) , written by Andy Ruina and Rudra Pratap, is an excellent reference (a rigorous and yet didactic presentation of Mechanics for undergraduate students) on Classical Mechanics and we will use this book as the main reference on Mechanics and Mathematics for this brief review. The preface and first chapter of the book are a good read on how someone should study Mechanics. You should read them!\n", "\n", "As we argued in the notebook [Biomechanics](http://nbviewer.jupyter.org/github/demotu/BMC/blob/master/notebooks/Biomechanics.ipynb), we will start with a branch of Classical Mechanics that is simpler to measure its related quantities on biological systems, the Kinematics. \n", "\n", "There are some relevant cases in the study of human movement where modeling the human body or one of its segments as a particle might be all we need to explore the phenomenon. The concept of kinematics of a particle, for instance, can be applied to study the performance in the 100-m race; to describe spatial and temporal characteristics of a movement pattern, and to conjecture about how voluntary movements are planned (the minimum jerk hypothesis). \n", "\n", "Now, let's review the concept of kinematics of a particle and later apply to the study of human movement." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "## Kinematics\n", "\n", "**Kinematics** is the branch of Classical Mechanics that describes the motion of objects without consideration of the causes of motion ([Wikipedia](http://en.wikipedia.org/wiki/Kinematics)). \n", "\n", "Kinematics of a particle is the description of the motion when the object is considered a particle. \n", "\n", "A particle as a physical object does not exist in nature; it is a simplification to understand the motion of a body or it is a conceptual definition such as the center of mass of a system of objects." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Vectors in Kinematics\n", "\n", "Some mechanical quantities in Kinematics (position and its derivatives) are represented as vectors and others, such as time and distance, are scalars. \n", "A vector in Mechanics is a physical quantity with magnitude, direction, and satisfies some elementary vector arithmetic, whereas a scalar is a physical quantity that is fully expressed by a magnitude (a number) only. \n", "\n", "For a review about scalars and vectors, see chapter 1 of [Ruina and Rudra's book](http://ruina.tam.cornell.edu/Book/index.html). \n", "\n", " For how to use Python to work with scalars and vectors, see the notebook [Scalar and Vector](http://nbviewer.jupyter.org/github/BMCLab/BMC/blob/master/notebooks/ScalarVector.ipynb)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Position\n", "\n", "Consider a point in the three-dimensional Euclidean space described in a Cartesian coordinate system (see the notebook [Frame of reference](http://nbviewer.jupyter.org/github/demotu/BMC/blob/master/notebooks/ReferenceFrame.ipynb) for an introduction on coordinate systems in Mechanics and Biomechanics): \n", "
\n", "
Figure. Representation of a point $\\mathbf{P}$ and its position vector $\\overrightarrow{\\mathbf{r}}$ in a Cartesian coordinate system. The versors $\\hat{\\mathbf{i}},\\, \\hat{\\mathbf{j}},\\, \\hat{\\mathbf{k}}\\,$ form a basis for this coordinate system and are usually represented in the color sequence RGB (red, green, blue) for easier visualization.
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The position of this point in space can be represented as a triple of values each representing the coordinate at each axis of the Cartesian coordinate system following the $ \\mathbf{X, Y, Z} $ convention order (which is omitted):\n", "\n", "\n", "\\begin{equation}\n", "(x,\\, y,\\, z)\n", "\\label{eq_xyz}\n", "\\end{equation}\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The position of a particle in space can also be represented by a vector in the Cartesian coordinate system, with the origin of the vector at the origin of the coordinate system and the tip of the vector at the point position:\n", "\n", "\n", "\\begin{equation}\n", "\\overrightarrow{\\mathbf{r}}(t) = x\\,\\hat{\\mathbf{i}} + y\\,\\hat{\\mathbf{j}} + z\\,\\hat{\\mathbf{k}}\n", "\\label{eq_rxyz}\n", "\\end{equation} \n", "\n", "\n", "Where $\\hat{\\mathbf{i}},\\, \\hat{\\mathbf{j}},\\, \\hat{\\mathbf{k}}\\,$ are unit vectors in the directions of the axes $ \\mathbf{X, Y, Z} $. \n", "\n", "For a review on vectors, see the notebook [Scalar and vector](http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/ScalarVector.ipynb)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "With this new notation, the coordinates of a point representing the position of a particle that vary with time would be expressed by the following position vector $\\overrightarrow{\\mathbf{r}}(t)$: \n", "\n", "\n", "\\begin{equation}\n", "\\overrightarrow{\\mathbf{r}}(t) = x(t)\\,\\hat{\\mathbf{i}} + y(t)\\,\\hat{\\mathbf{j}} + z(t)\\,\\hat{\\mathbf{k}}\n", "\\label{eq_rxyzijk}\n", "\\end{equation}\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "A vector can also be represented in matrix form:\n", "\n", "\n", "\\begin{equation}\n", "\\overrightarrow{\\mathbf{r}}(t) = \\begin{bmatrix} x(t) \\\\y(t) \\\\z(t) \\end{bmatrix}\n", "\\label{eq_rxyzmatrix}\n", "\\end{equation}\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "And the unit vectors in each Cartesian coordinate in matrix form are given by:\n", "\n", "\n", "\\begin{equation}\n", "\\hat{\\mathbf{i}} = \\begin{bmatrix}1\\\\0\\\\0 \\end{bmatrix},\\; \\hat{\\mathbf{j}} = \\begin{bmatrix}0\\\\1\\\\0 \\end{bmatrix},\\; \\hat{\\mathbf{k}} = \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\end{bmatrix}\n", "\\label{eq_ijk}\n", "\\end{equation}\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Basis\n", "\n", "In [linear algebra](http://en.wikipedia.org/wiki/Linear_algebra), a set of unit linearly independent vectors as the three vectors above (orthogonal in the Euclidean space) that can represent any vector via [linear combination](http://en.wikipedia.org/wiki/Linear_combination) is called a basis. A basis is the foundation of creating a reference frame and we will study how to do that other time. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Displacement\n", "\n", "The shortest distance between two positions of a particle. \n", "\n", "As the difference between two vectors, displacement is also a vector quantity.\n", "\n", "\n", "\\begin{equation}\n", "\\mathbf{\\overrightarrow{d}} = \\mathbf{\\overrightarrow{r}_2} - \\mathbf{\\overrightarrow{r}_1}\n", "\\label{eq_distance}\n", "\\end{equation}\n", "\n", "\n", "
Figure. Representation of the displacement vector $\\mathbf{\\overrightarrow{d}}$ between two positions $\\mathbf{\\overrightarrow{r}_1}$ and $\\mathbf{\\overrightarrow{r}_2}$.
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Velocity\n", "\n", "Velocity is the rate (with respect to time) of change of the position of a particle. \n", "\n", "The average velocity between two instants is:\n", "\n", "\n", "\\begin{equation}\n", "\\overrightarrow{\\mathbf{v}}(t) = \\frac{\\overrightarrow{\\mathbf{r}}(t_2)-\\overrightarrow{\\mathbf{r}}(t_1)}{t_2-t_1} = \\frac{\\Delta \\overrightarrow{\\mathbf{r}}}{\\Delta t}\n", "\\label{eq_velocity}\n", "\\end{equation}\n", " \n", "\n", "The instantaneous velocity of the particle is obtained when $\\Delta t$ approaches to zero, which from calculus is the first-order [derivative](http://en.wikipedia.org/wiki/Derivative) of the position vector:\n", "\n", "\n", "\\begin{equation}\n", "\\overrightarrow{\\mathbf{v}}(t) = \\lim_{\\Delta t \\to 0} \\frac{\\Delta \\overrightarrow{\\mathbf{r}}}{\\Delta t} = \\lim_{\\Delta t \\to 0} \\frac{\\overrightarrow{\\mathbf{r}}(t+\\Delta t)-\\overrightarrow{\\mathbf{r}}(t)}{\\Delta t} = \\frac{\\mathrm{d}\\overrightarrow{\\mathbf{r}}}{dt}\n", "\\label{eq_velocityderiv}\n", "\\end{equation}\n", " \n", "\n", "For the movement of a particle described with respect to an [inertial Frame of reference](http://nbviewer.jupyter.org/github/demotu/BMC/blob/master/notebooks/ReferenceFrame.ipynb), the derivative of a vector is obtained by differentiating each vector component of the Cartesian coordinates (since the base versors $\\hat{\\mathbf{i}}, \\hat{\\mathbf{j}}, \\hat{\\mathbf{k}}$ are constant): \n", "\n", "\n", "\\begin{equation}\n", "\\overrightarrow{\\mathbf{v}}(t) = \\frac{\\mathrm{d}\\overrightarrow{\\mathbf{r}}(t)}{dt} = \\frac{\\mathrm{d}x(t)}{\\mathrm{d}t}\\hat{\\mathbf{i}} + \\frac{\\mathrm{d}y(t)}{\\mathrm{d}t}\\hat{\\mathbf{j}} + \\frac{\\mathrm{d}z(t)}{\\mathrm{d}t}\\hat{\\mathbf{k}}\n", "\\label{eq_velocityderiv2}\n", "\\end{equation}\n", "\n", "\n", "Or in matrix form (and using the Newton's notation for differentiation):\n", "\n", "\n", "\\begin{equation} \n", "\\overrightarrow{\\mathbf{v}}(t) = \\begin{bmatrix}\n", "\\dot x(t) \\\\\n", "\\dot y(t) \\\\\n", "\\dot z(t)\n", "\\end{bmatrix}\n", "\\label{eq_velocityderiv3}\n", "\\end{equation}\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Acceleration \n", "\n", "Acceleration is the rate (with respect to time) of change of the velocity of a particle, which can also be given by the second-order rate of change of the position.\n", "\n", "The average acceleration between two instants is:\n", "\n", "\n", "\\begin{equation}\n", "\\overrightarrow{\\mathbf{a}}(t) = \\frac{\\overrightarrow{\\mathbf{v}}(t_2)-\\overrightarrow{\\mathbf{v}}(t_1)}{t_2-t_1} = \\frac{\\Delta \\overrightarrow{\\mathbf{v}}}{\\Delta t}\n", "\\label{eq_acc}\n", "\\end{equation}\n", "\n", "\n", "Likewise, instantaneous acceleration is the first-order derivative of the velocity or the second-order derivative of the position vector: \n", "\n", "\n", "\\begin{equation} \n", "\\overrightarrow{\\mathbf{a}}(t) = \\frac{\\mathrm{d}\\overrightarrow{\\mathbf{v}}(t)}{\\mathrm{d}t} = \\frac{\\mathrm{d}^2\\overrightarrow{\\mathbf{r}}(t)}{\\mathrm{d}t^2} = \\frac{\\mathrm{d}^2x(t)}{\\mathrm{d}t^2}\\hat{\\mathbf{i}} + \\frac{\\mathrm{d}^2y(t)}{\\mathrm{d}t^2}\\hat{\\mathbf{j}} + \\frac{\\mathrm{d}^2z(t)}{\\mathrm{d}t^2}\\hat{\\mathbf{k}}\n", "\\label{eq_accderiv}\n", "\\end{equation}\n", "\n", "\n", "And in matrix form:\n", "\n", "\n", "\\begin{equation} \n", "\\mathbf{a}(t) = \\begin{bmatrix}\n", "\\ddot x(t) \\\\\n", "\\ddot y(t) \\\\\n", "\\ddot z(t)\n", "\\end{bmatrix}\n", "\\label{eq_accderiv2}\n", "\\end{equation}\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "For curiosity, see [Notation for differentiation](https://en.wikipedia.org/wiki/Notation_for_differentiation) on the origin of the different notations for differentiation.\n", "\n", "When the base versors change in time, for instance when the basis is attached to a rotating frame or reference, the components of the vector’s derivative is not the derivatives of its components; we will also have to consider the derivative of the basis with respect to time." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## The antiderivative\n", "\n", "As the acceleration is the derivative of the velocity which is the derivative of position, the inverse mathematical operation is the [antiderivative](http://en.wikipedia.org/wiki/Antiderivative) (or integral):\n", "\n", "\n", "\\begin{equation} \n", "\\begin{array}{l l}\n", "\\mathbf{r}(t) = \\mathbf{r}_0 + \\int \\mathbf{v}(t) \\:\\mathrm{d}t \\\\\n", "\\mathbf{v}(t) = \\mathbf{v}_0 + \\int \\mathbf{a}(t) \\:\\mathrm{d}t \n", "\\end{array}\n", "\\label{eq_antiderivative}\n", "\\end{equation}\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "**This part of the kinematics is presented in chapter 12, pages 605-620, of the [Ruina and Rudra's book](http://ruina.tam.cornell.edu/Book/index.html).** " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Some cases of motion of a particle\n", "\n", "To deduce some trivial cases of motion of a particle (at rest, at constant speed, and at constant acceleration), we can start from the equation for its position and differentiate it to obtain expressions for the velocity and acceleration or the inverse approach, start with the equation for acceleration, and then integrate it to obtain the velocity and position of the particle. Both approachs are valid in Mechanics. For the present case, it probaly makes more sense to start with the expression for acceleration.\n", "\n", "#### Particle at rest\n", "\n", "\n", "\\begin{equation} \n", "\\begin{array}{l l}\n", "\\overrightarrow{\\mathbf{a}}(t) = 0 \\\\\n", "\\overrightarrow{\\mathbf{v}}(t) = 0 \\\\\n", "\\overrightarrow{\\mathbf{r}}(t) = \\overrightarrow{\\mathbf{r}}_0\n", "\\end{array}\n", "\\label{eq_rest}\n", "\\end{equation}\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Particle at constant speed\n", "\n", "\n", "\\begin{equation} \n", "\\begin{array}{l l}\n", "\\overrightarrow{\\mathbf{a}}(t) = 0 \\\\\n", "\\overrightarrow{\\mathbf{v}}(t) = \\overrightarrow{\\mathbf{v}}_0 \\\\\n", "\\overrightarrow{\\mathbf{r}}(t) = \\overrightarrow{\\mathbf{r}}_0 + \\overrightarrow{\\mathbf{v}}_0t\n", "\\end{array}\n", "\\label{eq_constantspeed}\n", "\\end{equation}\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Particle at constant acceleration\n", "\n", "\n", "\\begin{equation} \n", "\\begin{array}{l l}\n", "\\overrightarrow{\\mathbf{a}}(t) = \\overrightarrow{\\mathbf{a}}_0 \\\\\n", "\\overrightarrow{\\mathbf{v}}(t) = \\overrightarrow{\\mathbf{v}}_0 + \\overrightarrow{\\mathbf{a}}_0t \\\\\n", "\\overrightarrow{\\mathbf{r}}(t) = \\overrightarrow{\\mathbf{r}}_0 + \\overrightarrow{\\mathbf{v}}_0t + \n", "\\frac{1}{2}\\overrightarrow{\\mathbf{a}}_0 t^2 \n", "\\end{array}\n", "\\label{eq_constantacceleration}\n", "\\end{equation}\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Visual representation of these cases" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2020-09-25T18:15:19.991805Z", "start_time": "2020-09-25T18:15:19.250306Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1MAAAHiCAYAAAANsZZlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACB40lEQVR4nO3deXxU5dn/8c+VhLBDQHaCIIo7CrK4K+6IdWnFvSrWanF5Klr7uDxtqVbp3h+tG+64a91tRa1WEXAFBRRwQwGBgKxhhxBy/f44J3EymUkmk0lmMvm+X695kTnnnnOuM8vFXHPf5z7m7oiIiIiIiEjt5KQ7ABERERERkcZIxZSIiIiIiEgSVEyJiIiIiIgkQcWUiIiIiIhIElRMiYiIiIiIJEHFlIiIiIiISBJUTImIxGBmbmaT07j/UWEMoxJsP9nMdK2LKGY2LHwef5vuWGrLzAab2etmtio8hlnpjimTmFmf8HmZWIdtTAy30Sd1kYlIU6JiSkQygpnlmtklZva2ma0xs+1mtsLMPjGz+8zslHTHKJknFV+oM5GZtQNeBoYCTwI3ARPSGlQapPtHDRGRmuSlOwARETPLBf4NDAeKCb5ELgE6ArsC5wJ7Ai+lKcTG4AKgVbqDyEAfAnsBq9IdSC0NBboA/+fu49IdTIZaSvDarkt3ICLSdKmYEpFMcA5BITUbONLdK305MrNWwIHpCKyxcPdv0x1DJnL3zcDn6Y4jCT3Cf4vSGkUGc/ftNM7XVkSyiIb5iUgmOCT8d2J0IQXBF2J3fyvWA83sLDP7bzg0cKuZLTSzJ8xscESb9mb2SzN708yWmFmJma00s5fM7KBEgzSzHmb2GzN7x8yWh9spMrPHzWyvGO0rhqCZ2e5m9lQ4dLHMzIYlut+obXYws6nhNm6IWF7lnKnI84XMbICZvWxmxWa2ORxOeUjVPYCZ5ZnZ5Wb2vpmtD9vPNLMrzSwnqm3kMe5qZs+Y2Woz22Bm/zGzfcN2nc3sHjNbFr5O083sqLo8x+F5UAvCuxeGcZTfRkU/BzH21dHMbjWzOeExrjOz2Wb2BzNrHdGubxj7fDPbEr7XPjWzCWa2U7UvWOX9HWNmr0a8V78M99U++vkEHgoXPRh9TNVsPz98jSaZ2SIz2xbu6w0zOzHROMNt/Tbc5zAzuzB8/beE798HzKxbjMcMMrO/h89h+TF+ZWZ/NbMOMdpXnBdoZsPD9/C6iGXl7+cjo17b30Y+VxZjiKeZtTKz68xsRvhe3Ghmn5nZP8ysa4LPwYHh+7n8fbjYzO42sx41P1pEmgr1TIlIJlgd/rt7og8wMwMeBC4kGML1HLASKASOAr4AZoTN9wJuBaYQDCFcC+wMnAKcaGYnu/urCez2COB64C3gWWAj0A8YCZxiZoe6++wYj9sV+AD4EngMaAmsT/RYy5nZzsCrwG7ABe7+aIIPHQz8L/AecB/BsZ8O/NfMBrj7FxH7aAb8CziB4Dl8HNhK8JzeRtBDeH6MffQhOMbPgInh/R8Ck83s4DDu9cBTBMM3zwZeMbPdo3rVavMcTwYKgKsIejVfiNjOrOqeEDPbJdxHb+Aj4C6CHxh3B64mOD9pk5l1B6YD7YBJYUwtgF3C5+F2vn//Vre/n4X72AQ8DawAhgHXASeHx1VMMMz1JmAAcCrwYsSxVHtMBM/r34F3gdcJPg/dgZOBSWZ2ibvfV1OsUa4Gjid43V4FDgMuAoaZ2YHuvjKi7SUEr/nbwBtALnAAcA3B5+xAd98QYx8jCXqmXyF43vuEx3oTMBZYRPCeKje5uoDDwu0tYH+C9/ADQAnB5/AnBLniuxq2cRFwL7CNYHjxYoL34U8JXq+D1BssIgC4u2666aZbWm/AQIIvO2XAI8CPgN41POZSwAnOiWkftS4X6B5xvz3QKcY2CgmGUX0WY50Dk6OWdQHaxmi7P8GX/leilvcJt+PAuFo+J6PCx42K2EcRwfkhx8ZoPzlI6ZWWDYvY/6iodT8Ll98Ztfy34fLbgNyo5/T+cN2pcY7x/6K29etw+RqCL8k5EevOD9f9vxQ9xxPjPI/lz8Fvo5a/Ey6/IcZjOgEtwr//J2x3VYx2rYGWCbyWvQm+lK8H9oxad2e4/Xuqe/0TfM80BwpjLG8PzAlfhxrjjXoflAADo9b9v3Dd/TGOMzfGti4O218X5xjLgOFx4qjyOazptSf4AcAJC+SodW2JyBcERZoDfSKW7R4e93ygZ9TjjwZ2AM8n+rropptu2X3TMD8RSTt3nwn8mODX4h8T/Pq/0ILhYs+b2ckxHvY/4b8/86ihge6+w92XRdxf5+5VJiBw9yXAM8CeYa9PTXGu8Bi/rHvQU/ImcFTYsxPtO4Jf2ZNiZscCU8O7R7j7G7XcxDvuPjFq2QNAKcFEB+X7yQGuBJYDV7v7jvJ14d+/IPjieV6MfSwE/hC1rHyoWnPgl+5eFrHu8XD/AyIfUIfnOGFmNohgaOks4I8x9rXK3bdGLd4So90md6+yPIYfA/nA7e4efY7P/wEbgPPNrHkC24rL3beF7+no5esIXu8OwJBabvaR8PMZ6bcERf25kTG7+6LI90yEBwgKyRPi7ONFT6xnuEZm1gU4C1gGXBv1nsPdN0TnixguA5oRFNBLox7/JkFP1clm1jYVMYtI46ZhfiKSEdz9n2b2PMFwssMIeqsOA04DTjOzhwl+pffwfJZ9ge9ifNGLycwOJRgOdjBB70d+VJOeQI3DdszsJGA0wdC5TlTNo50IvshFmu3u2xKJM4aRBMOs5hP8ep/M0KIZ0QvcfbuZfUfwBbvc7sBOwFfAr4KRlFVsIRg2GW1WjC/S5ZMnfBldILn7jnD/hdEbSvI5ro3y8+Rei/6yHcNLwDjgDjM7AXiNoFdrnrsnel2vA8J/34xe4e5rzWwmwfDGPQmGKybNzPYBfhlurzvBkMRIPWu5ybejF7j7OguueXUkwXthVrjvZgQ9nmcDexP0iEX+aBtv3x/WMqbqDAn3OcXdNyW5jYPDf480s1jFZxeCntrdCYaIikgTpmJKRDKGB7Nz/Se8lU+ZfjrBL9sXAM8TnBdTED5kaZWNxGBmPyTogdpKcC7J1wTnrpQRDAM7kqD3pKbt/JzgnJS14Xa+BTYT9NacRjAULdZ2licSZxwHE/xK/j7BeRvJKI6zvJTgS2G58skU+hGcqxJPmxjLYk0cUhoWZPF6AkoJjq1CHZ7j2igI/63x/ePui8xsKEFvzHCCIagAi83sL+7+jwT2Vz7BRLwCsHx5QZz1CbFgMpU3Cf5v/y9BIbie4H0+gOAcrNo+d/HOLSp/T7ePWPYUwTlT3xCc67WcYHgjwJhq9l2Xz0e0gvDfhHJDHOWfg1/W0C7W50BEmhgVUyKSscKejn+aWX/gVwTnK7zA98VBor+y/47gHIjB7v5Z5Aozu5ugmKqWmeURDNVbDhwQOYwwXH9wzAcGEu3BiOVGYATBSf85ZvaTBHpTklVe9Dzv7j+qtmU9qONzXBvF4b8JvX/C98xZYXz7A8cSDDP9u5ltcvf7a9hE+fPaDZgbY333qHbJ+hXB5CZHufvkyBUWzPx4ahLbjDfzXflsfuvC7Q8mKKTeAEaEP4yU7zuHYAKUeOry+YhWHP5b2x64SOWvQ3t3r/VEMSLStOicKRFpDMqHiBkE56oQnFDf1cwGJvD43QiGZUUXUjkEQwkT0YngV+93Y3zJb8P3Q7lSbRvBUL+nCWYufDT8Ul8fPif4MnpQXc9LSlIyz3H50MLcGOvieT/89wSLmuq9Ou5e6u4fufsfCa6NBkFvWU3Kh6IOi15hZgUEvUZbCWZCrIvdgDXRhVSoxh8M4qjyOAumch9A5Zh3C/99KbKQCg0lKPKSUUbtXtsPw8ccYRHT29dS+fvj8CQfLyJNiIopEUk7MzvHzI6L9cXWguvZXBLenRKxqnx41d0WcZ2e8DE54ZTW5RYC/SKvDxNOrT6W4NyORKwgGG42KPxiX76dZgTD0joluJ1aC7+cngM8Gv77VH0UO+5eSjCLX3fgH2ZW5QuwmXU3s0Sfs9pK5jleS9CzUeMEIuXc/SOC6cMHEExNXomZ7WRmLcK/h8a5LlH5ss0J7PJRYDvwP2a2W9S63xFMu/5oHc6rK7cQ6Ghm+0UuNLOLiT/5Q03Oj/GDxW8Jhvc9ERHzwvDfYVH77gLckeS+IZh2vleijT2Yqv1JgvfwX6Jzipm1ic4XMdxO8Hr9PzOrcrkGC67npUJLRAAN8xORzHAgweQQy81sGt9fiHUX4CSCX7VfJDjvqdx9BL1KFwBfmdmLBNfV6UEwHPABgi99EEzlPAGYaWbPEnxROpSgkPoXwXV4quXuZWb2D4JrIH0a7i+fYMKMjgTXtalyEdpUCSdsuJCgN+CnwHNmNjIFX8Cj/Y5gKNtoghnL3iQ4/6QLwblUhxLMQDcvxftN6jl2941m9gFwuJk9RnAtrx0EPSSfVLO7HxNMJz/OzE4P/zaCYzyeYDKIhcC5wBVm9jbBJCBrCa5XdDJBr+H4BI5roZmNISgqPjazfxK8V48kOCfuc2IUdUkYT1A0TQv3sY5gEo/DCD47I5PY5ivAO+H2loXbOozgubk+ot10gok5fmRm7wLTCArOEwmu9VREcv4LnG1m/yKY7KGUYHKJKdU85kqCCWpGE1wP6zWCYb67EDw/p1DNtarc/XMz+wlBDplrZq8SvK+aERTthxO8fnsmeUwikkVUTIlIJvgrwQxyxwL7EXzhaUHwq/Rkgmm0H4+cPS38+0Iz+w/BNafOJDjBfRnBNOIvRbS928y2EZwEfyHBjHRTCc5DOp0EiqnQrwm+RP2UYNaydQSTJPyKOkx9nqiw2LiUoKC6EnjJzE5LcHruRPex3cxOIyg2RgE/IDjRfiVBkftrggsP15dknuPzCQrm4QQ9dwYsAeIWU+6+wMwOIDiX5zSC53MrQZHwV4JeMoAnCN5XhxAMM2xJUFw+CfzV3eckclDufqeZzQeuJXjPtSKYUOTPBNcgK05kOzXs49XwMgK/IpgefAfBsLejgL4kV0z9P4KJX8aE29xIcG2mG929/DkqL/ZPAW4hOMfv5wTP033hsmSL76sIeh6PCbebQ/A+iFtMhTMkHhIR86UEz8ViggKpxljc/VEzm01wOYCjCArsTQRF4TMEk22IiGCJz+wqIiIiTYGZ/ZZgGGyVySxEROR7OmdKREREREQkCSqmREREREREkqBiSkREREREJAk6Z0pERERERCQJ6pkSERERERFJgoopERERERGRJKiYEhERERERSYKKKRERERERkSSomBIREREREUmCiikREREREZEkqJgSERERERFJgoopERERERGRJKiYEhERERERSYKKKRERERERkSSomBIREREREUmCiikREREREZEkqJgSERERERFJgoopERERERGRJKiYEhERaaLMbLCZuZn1SXcsIpI4M+sTfnYHpzGGiWb273TtP1OomJJGKd1JRAlEmrp0fwZrw8wmm9ntjW3bIg1Jn+n633ZjZWbDwvdGp6hVVwE/TkdMmSQv3QGINDQza+bu29Mdh4iIiEi6mFm+u5ck+3h3X5fKeBor9UxJRjKz4WY21czWmtkaM3vNzPaKaLIg/Hd6+GvJ5DjbKf+l7Rwze9PMtgA/C9ddZGbzzGyrmX1pZlebWU7EY38WLt9qZivDGPLM7LfAhcBJ4bbdzIbVw9Mgkjap+gyG2+phZo+Z2Woz22xms8zsqIj1PzOz+WZWEv57SdTj3cwuNbOnzWyTmX1jZj+OavMbM1tkZtvMbLmZPRwunwgcCVwR8XntY2a5Zna/mS0wsy1m9pWZ/W9UDphoZv82s6vMbGn4XDxoZq2q23ac5+AIM3vfzDaa2Toz+8DM9g3XjQqXnxyRc94ys75R2zjZzD4K1y8ws1vNLD9ifb6Z/dHMloTP03QzOyHG6/p5uI2pwO7xXjfJLvpMp/wzXdPzmcjzdFKYC7aEbf5lZi3CdTV+nmPEtLeZvWxmG8xshZk9YWbdYhz/dWa2BFgSLv9xuP3yxz1tZj3DdX2At8JNrAyfk4mR24vYfnMzG29m34U55n0zOyxifXkP1zHhcW82sxlmdkB1x5Xx3F033TLuBpwe3voB+wH/BOYD+eH6IYADJwDdgI5xttMnbLcQGAnsAhQClwDLIpadDCwHrgwfNxgoBc4DegP7A1cT9Oa2AZ4CXg/33a08Lt10y5ZbCj+DrYGvgHeAI4BdgR8BR4XrfwhsB64k+GL/P+H9kyO24QT/6f8Y2A34PVAC9I6IdT1wErBz+Pkt/yy3B94FHoj4vOYCzYCbw+PoA5wJFAMXR+x3IrAOuBfYCzg+bHNDdduO8RzkAWuBv4THvydwLrBXuH5UeMwzgEOBgcAUYDZgYZsTwmO8KNzGUcAXwF8i9vMY8H74PPcNn9MSYP9wfS9gK3BbGMOZ4fPqQJ90v+d0q9+bPtOp+0wn+HzW9DwNJ/iecQuwd7iNa4FW4fqaPs99wudxcHi/O7AK+GN4bPsB/wI+BHIijn9DuO19gf7h8p8AI8L9DCUonqaE63LDuD2MsxvQPmJ7/454Tv5O8N3qpDCGe4GNQPdw/bBwOx8S5LA9gdeAzwhzXWO8pT0A3XRL5BYmpR3AYeH9SkmkmseVt/tF1PJvgfOjlo0B5oV//yhMuG3jbLdSAtFNt2y/1eEzeEn4n3enOOvfAR6IWjYRmBZx34HfR9zPAzYDPw7vX0NQWDSLs4/JwO0JHOMfgDei4lgM5EUsuzeqTY3bBjqGx3BknPWjwvWHRizrHT7fx4b3pwC/jnrcaeEXFSP4olYG7BzV5gXgzvDvccCXkV9agF+hYqpJ3vSZrlhW6890gs9nIs/Tk3HWJfJ5rvR6ERSS/41q3yFsMzTi+FcCzWs4lj3DxxWG94eF9ztFtZtI+F0oPP4S4IKI9bnA18AtUds5IaLNoZH7aow3DfOTjGRmu5rZ42b2tZmtB74jGJa6c5KbnBGx7c4Ev9DebcHQmo1mtpEg6e4aNnsdWAQsCLvoLzSztkkfkEgjk8LP4EDgE3dfFWf9XgRfKiJNI/gFNNIn5X+4eynBF4Iu4aKngRYEn9f7zewMM2teU2BmNjocYrIyzAFXU/X45oX7K1cUsd+EuPsagi8dr4VDcK4xs15RzcoIfq0tf8yicF/lz8Mg4P+ictbjBF9gugEHEBRV86LanMT3eW0v4H0Pv8GE3qvNsUjjpc90hTp/psN91fR81vQ8DQT+G2ddIp/naIOAI6LaLw7XRT5mjrtvizqWA8zsRQuGVW7g++9MtXlv7ErQO1jx2rv7DoIcE/e1J3j+IYnXIFNoAgrJVP8ClhKc37SUoCt8HpBf3YOqsSni7/IfEUYTdOdX4e4bwjG8RwDHATcA48xsiLsXxXqMSJZJ1WfQEmjjCSyLnjTGCT/L7r7YzPYAjgGOBf4KjDWzA919EzGY2VnAeIJhNe8SDCm6gmCIUkL7rQ13v8jMxhMM7TkFuNXMTnP31xLcRA5wE8GXzGgrw/VOMMQpOuYt4b+JvBaSvfSZrmG/tVTT81mXz1sin+dYj3mZ4PijfRfxd6Xnz8xaEwy1ewM4H1gBdAKmUrv3Rvnx1va1L1/XaDt4Gm3gkr3MbCeCX7bGufsb7v4Z0JbKxX/57DO5td2+u39HkPh2dff50beIdqXu/qa730Aw9rg18IOI/dd63yKNQYo/gx8D+1nVKXXLfQYcFrXsMIIvJQlz963u/rK7X03wBWQfguEj5bFGx3kY8IG73+7uH4ef/Xi/+FYn4Vzg7rPd/Y/uPoxgKNGFEatzwrgBMLOdgR4Ezw8Ez+OesXJW+Cv7TIIvM91irF8abmMecKCZRX7JO6jWRyyNjj7TtVLjZzrB57Om52kmQbEYb11Nn+doHxM8R4tiPGZDNYezJ0HxdKO7T3H3z6naS5TIe2N+2C5ywolc4GBq+do3NuqZkky0luAkykvMbDHQE/gzwa8+5VYQ/DpzgpktBLZ67abo/C1wm5kVA5MIuqYPAHq6++/N7AcESXgKsIbgRMm2fP/FZiFwYvjL2WpgnWu6dckeqfwMPg5cD7xgZjcQnHTeH9jg7m+F233azD4C/kPQc3MewXmLCTGzUQT/n31AcA7RWQS/fH4VNlkIDA1npdpI8Jn+EhhlZicSfAk4m2AWr7WJ7jfett29LCq+XQh+vX6J4IecvgQ/0NwV0awUGG9mVxE8r/8PmEvwazEE50P828wWEZzoXkpwAvlQd/9fd//SzB4DJprZLwi+WHUkOEfhG3d/DpgA/CLcz50Er8PoWh6vNE76TCeuyrajP9Mk9nzW9DzdCvzLzOaHbY1gQoy7E/w8R7uD4Dytp8zsjwQ91n0JJuL4RTUF1bfANuBKM7uDoEj8XVSbRQQ9SCeZ2b+ALe6+MbKBu28ys7uAP5jZKoLZIa8GugJ3xtl3dkj3SVu66RbrBhwNzCGYeWoOwexCG4FREW1+SpAEdgCT42ynD3FOqAXOIUhQWwkS4zTg7HDdYQSz2awm+M9lDnBRxGM7E/wnsSHc/rB0P2e66ZbKW6o+g2G7QoIZMIsJTjKfGfmZIfhCP5/gy9J84JKoxzswMmrZQuDa8O/TCMblFxMMYZkO/CCi7e7h+s3htvoQDF+5P/zsF4d//wZYGPG4iURNNEPwQ8yc6rYd4/i7As8RFFLbwufsT4Qn1xNMQLEROJXgy+I24G1gt6jtHE8w9GYzwRCmGYQznIXrm4XxfUPwC/FyggJuUESbkwhO7N9KcG7DefHi1i27bvpMp+4zXYvns6bn6RTgo/Azvyr8vLYI11X7eSbG9xuCmQWfCZ+DLeFn/Ta+n2GwyvGHy88imChiK8G5mycQ9d0G+DXBTH1lwMRY2wOaEwy1/C48pvcJJ+QI1w8jaiKLWMfR2G7lU66KiIhIGoS/wt/u7m3SHYuIiNSOzpkSERERERFJQtqLKTN7wIKrLc+JWNbRzF634OrVr5tZhziPHW5mX1hwde3rGy5qERERERFp6tJeTBGMtxwetex6gguP9SOYg79KoRTOEHIHcCLB/PXnmFn0PPYiIiIZzd0naoifiEjjlPbZ/Nx9SjhjSqRTCU5SA3iIYArZ66LaDAXmu/s3AGb2ZPi4KtMvmlkBUBC1OJ9glpOvCE60FJHskgt0B6Z71AUKY1GeEGmSlCdEpCbV5om0F1NxdHX3ZQDuvszMYl0VuSffX9kZgiknD4yzvTHA2JRGKCKNxeEEMzXWZAzKEyJNlfKEiNQkZp7I1GIqEbGuLB1vasLxBMMJI/UGJk+dOpXCwsIUhiUimWDJkiUcfvjhEEzlmojxKE+INCnKEyL15/6P7+eWKbdUWX7efudx07CbyM1J6HrnaVdTnsjUYuo7M+se9kp1J7iQXLQlQK+I+4VAUayNuXsxwRz/FcovAF9YWEifPn3qHrGIZKqEht0oT4g0acoTIimyo2wHv/jPL/j7p3+HqCnkxh09jusPu77ic9PIxMwTmTABRSwvAReGf18IvBijzXSgn5ntYmb5BFe6fqmB4hMRERERkQibt2/mjKfP4O8f/L3S8rycPCaeOpEbDr+hsRZScaW9mDKzJwiuNL2HmS0xs4uBPwDHmdlXwHHhfcysh5lNAnD3UuBK4DXgM+Cf7j43HccgIiIiItKUrdi0gmMePobnP3++0vK2+W2ZdO4kLhxwYZxHNm5pH+bn7ufEWXVMjLZFwIiI+5OASfUUmoiIiIiI1OCLVV8w4vERfLP2m0rLe7TtwcvnvsyAbgPSE1gDSHsxJSIiIiIijdOURVM47cnTWLt1baXl+3bZl0nnTqJX+15xHpkdVExVo7i4mOXLl1NSUpLuUJqsNm3a0KdPH3Jy0j4iVSQm5QkByM/Pp1u3bhQUFKQ7FMlAyhPSmFX3XeyR2Y9w8UsXs71se6Xlx/Y9lmfOeIb2Ldo3VJhpo2IqjuLiYoqKiujduzetWrXKupPlGoOysjK+/fZbVqxYQbdu3dIdjkgVyhMC4O5s3ryZRYsWAaigkkqUJ6Qxi/ddzN256e2buOntm6o85qIBF3H3D+6mWW6zhgw1bfRzfxzLly+nd+/etG7dWokvTXJycujevTtr1qxJdygiMSlPCARTY7du3ZrevXuzfPnydIcjGUZ5QhqzWN/FtpZu5bznzotZSP3uqN9x/yn3N5lCCtQzFVdJSQmtWrVKdxhNXn5+PqWlpekOQyQm5QmJ1KpVKw3jkiqUJ6Sxi/wutmLTCk578jTeW/Je5Ta5+Uw8dSLn9I83r1z2UjFVDf2ClH56DSTT6T0q5fRekHj03pDGrPz9++l3n3LyEyezaN2iSus7terEC2e9wKE7H5qO8NJOxZSIiIiIiMS1vWw7wx4YxsaSjZWW79lpT14+92X6duibpsjST8WUiIiIiIhU4e5s2r6Jzds3Vymkju17LE+f8TQFLQrSE1yG0AQUIiIiIiJSibtTvK2Y9dvWV1l32eDLmHTupCZfSIGKqSZl7dq1dO3ala+//rradiNHjuRvf/tbA0UlIplEeUJEJHOccsopdOjQgZEjRzbofneU7WD1ltVs2b6l0vIcy+Efw//BHSPuaFIz9lVHxVQTMm7cOEaMGMGuu+5aafm1117L8OHDK+6PHTuWW265hXXr1qU8hilTpnDKKafQs2dPzIyJEyemfB8ikrymlCd+//vfM2TIENq1a0fnzp05+eSTmTNnTpV20ccuItJQrr76ah5++OGUb3fx4sUMGzaMvffem/3335/nnnuuYt32HdtZtXkVJTsqz07avnl7Jp07if858H80qUoEFVNNxPr167nvvvu4+OKLq6ybPn06Q4cOrbjfv39/+vbty6OPPpryODZu3Mi+++7L3//+d1q2bJny7YtI8rIhT4waNYrf/va3CbWdPHkyl19+Oe+++y5vvvkmeXl5HHvssVWubRd97CIiDeWoo46ibdu2Kd9uXl4e48ePZ968ebz++utcddVVbN68mS3bt7Bq8yp2+I5K7XMsh/d/+j4n7HZCymNp7DQBRYLspvRW4D7WE267ZMkSevXqxRNPPME999zDu+++y80330xOTg6HHvr9tJXbt2+ndevWbN++nSlTpvC73/2Ovffem7lz53LKKafwxBNPcMUVV6T0OEaMGMGIESOA4EuPSDZRnkiNhsoTr732WqX7jzzyCO3bt+edd97h5JNPrvbYRZqytWvXsueee/Luu+9W6cWONHLkSA455BCuueaaBoxOEtG9e3e6d+8OQJcuXejQoQMLli6gQ7cOVdrm5+bTplkb9uy0Z0OH2SioZyoLzZo1C4A//vGPXHvttcydO5fFixczaNCgSt2yubm5vPdecNG1Dz74gGXLljFt2jQAhg4dyocffsiWLVuqbH/cuHG0adOm2tvUqVPr/0BFJGnKE1Vt2LCBsrIyOnQIvkxUd+wiTZmGA2fmcOBx48ZhZlx55ZWVltcU24fTP2RryVYKuhZUWde6WWt2armThvVVQz1TWWj27Nm0aNGCp59+mt122w0IxsaW/wJRLicnh2XLltG2bVuGDBlS6YPSo0cPtm/fTlFRUZVkOXr0aM4888xqY+jZs2eKjkZE6oPyRFVXXXUVAwYM4OCDDwaqP3aRpqp8OPC//vWvKuumT5/OkUceWXE/cjhwqnuwy4cDX3DBBVxwwQW1euyoUaPo06dPQkOCy4cDDxkyBHfnN7/5Dcceeyzz5s2jY8eOFe2ijz1V+0/U+++/z7333st+++1XZV11sS1fsZwfn/9j/nz7n6vkuPbN29M6v3XKYsxWKqay0KxZsxgxYkTFFySALVu20LVr1yptZ86cyf7771/lA1R+nkKsX5w7duxYKYGISOOTLXli3LhxjBs3ruL+tm3bMDP+8pe/VCx75ZVXOPzww6vdzjXXXMO0adOYNm0aubm5FcvjHbtIU6DhwI1jOPC6des477zzuP/++7n55psrltcUW/HGYk774Wlcec2VDDlwSMXj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7bUMHz68UruxY8dyyy23sG7dupTHcOedd7LLLrvQokULBg0axNSpU1O+DxFJXrrzxO9//3uGDBlCu3bt6Ny5MyeffDJz5sxJ6T5EpG6aYp4YN24cZsaVV15ZZV2sY89mmzbBffcF13o68ECYOBG2bo3ddu+94fbbg3Om7r4bBgxoyEjrj4qpBJml95ZKmzdv5r777uPiiy+utHz69OkMHTq00rL+/fvTt29fHn300ZTG8NRTT3HVVVdx4403MnPmTA455BBOPPFEvv3225TuR6QhKU+kNk9MnjyZyy+/nHfffZc333yTvLw8jj32WNasWZPS/Yg0JOWJzMoTo0aN4re//W3C+3v//fe599572W+//WKuj3Xs2eizz+Cqq4JeqEsuCS62G0uzZnD22fD22zBnDlxxBbRv37Cx1jt3b5I3oA/gCxYs8Fhmz55d6X7QgZm+W2107tzZb7vttkrLPvvsM2/WrJnPnDnTn376ae/YsaOXlZW5u3tJSYk3a9bMgYrb3nvvXfHYm266yQ899NDaBVGDoUOH+k9/+tNKy3bbbTe//vrrq31c9OsiEs+CBQvK3899XHmiisaQJ6Jt2LDBc3Jy/KWXXqq2nfKEJEp5onrZnCfKXXjhhT527NiE2hYXF3vfvn39v//9rx955JF+xRVXVKyr6djjaUz5qqTE/amn3IcNq/l91ru3+7hx7suXpzvquqspT6hnKgv179+fefPmVVp2/fXXc/bZZzNgwACmTp3KoEGDKi4Wl5uby3vvvQfABx98wLJly5g2bVrFY4cOHcqHH37Ili1bquxr3LhxtGnTptpb9PC9kpISPvroI44//vhKy48//njefffdlDwHIlK9TM8TsWzYsIGysjI6ZMpl70WynPJEZZdeeikjR47k6KOPrrKupmNvzL79Fn71K+jVC846CyZPjt3ODE46Cf79b/j6a7jhBujatUFDTQvN5peF+vfvz6xZsyruv/vuu7z66qt88cUXACxatIjuEVc/y8nJYdmyZbRt25YhQ4ZUuSJ3jx492L59O0VFRZXGRAOMHj2aM888s9p4evbsWen+qlWr2LFjB12jPmFdu3bljZqu4CYiKZHpeSKWq666igEDBnDwwQfX2FZE6k554nv33nsv8+fP55FHHom5vqZjb2zKyuD114Npzf/97+B+PJ06BRfWvfRS2GWXhosx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DwCnnHIKTzzxRGqexwh/+9vfGDVqFJdccgl77bUXt912G927d+euu+5K+b5EGoTyRGqexwjKE5J1lCdS8zxGWbduHeeddx73338/HTp0qJd9iMSiYipLlZaWctdddzF37lyeeOIJXn/9dcaPHw/A1KlTGTRoUKWL4Obm5vLee+8B8MEHH7Bs2TKmTZsGwNChQ/nwww8rkmekcePG0aZNm2pvsYbklJSU8NFHH3H88cdXWn788cfz7rvvpuppEJFqKE+ISE0yPU+Uu/TSSxk5ciRHH310Co9epGZ56Q5A6sdvf/vbir979+7NSSedxOeffw7AokWL6N69e6X2OTk5LFu2jLZt2zJkyJBKibFHjx5s376doqKiKmOiR48ezZlnnlltLD179qyybNWqVezYsYOuXbtWWt61a1feeOONhI5RROpGeUJEapLpeQLg3nvvZf78+TzyyCO1OTSRlFAxlYUWL17Mn//8Z9566y2WLl1KSUkJ27Zt43//938B2LJlS5UvJwAzZ85k//33r5T4AFq2bFnxuGgdO3akY8eOSccavS93r7JMRFJPeUJEatIY8sQXX3zBjTfeyNSpU8nPz6/140XqSsP8EuWe3luCVq9ezZAhQ1i+fDl/+ctfmDp1KjNmzKBFixYMGDAAgE6dOrF27doqj501axYDBw6ssnzNmjUAdO7cucq6ZLvlO3XqRG5uLsuXL6+0fMWKFTETs0ijoDyhPCFSE+WJlOaJ9957j1WrVrHvvvuSl5dHXl4eb7/9NnfeeSd5eXls27Yt4WMWSYZ6prLMyy+/zNatW3nqqacqfhF66KGH2LhxY0XyGzhwIBMnTqzy2NmzZ3PiiSdWWT5nzhx69OgR88tLst3y+fn5DBo0iNdff50zzjijYvnrr7/O6aefXu32RKRulCdEpCaNJU+cdtppDB48uNKyiy66iH79+nHjjTeqt0rqnYqpLLPTTjuxceNGXnjhBfr3788rr7zCuHHjaNu2LbvtthsAJ5xwAtdddx2rV69mp512qnhsaWkpn3/+OUVFRbRq1YqCggIgOME08loRkeoyfOeaa67h/PPPZ+jQoRx66KFMmDCBoqIiRo8endT2RCQxyhMiUpPGkicKCgoqtl+udevWdOzYkX333bfW2xOprYSH+ZnZj5K4tazP4KWqESNG8LOf/YwLL7yQQw45hK+++orz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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t = np.arange(0, 2.0, 0.02)\n", "r0 = 1; v0 = 2; a0 = 4\n", "\n", "plt.rc('axes', labelsize=14, titlesize=14) \n", "plt.rc('xtick', labelsize=10)\n", "plt.rc('ytick', labelsize=10) \n", "f, axarr = plt.subplots(3, 3, sharex = True, sharey = True, figsize=(14,7))\n", "plt.suptitle('Scalar kinematics of a particle', fontsize=20);\n", "\n", "tones = np.ones(np.size(t))\n", "\n", "axarr[0, 0].set_title('at rest', fontsize=14);\n", "axarr[0, 0].plot(t, r0*tones, 'g', linewidth=4, label='$r(t)=1$')\n", "axarr[1, 0].plot(t, 0*tones, 'b', linewidth=4, label='$v(t)=0$')\n", "axarr[2, 0].plot(t, 0*tones, 'r', linewidth=4, label='$a(t)=0$')\n", "axarr[0, 0].set_ylabel('r(t) [m]')\n", "axarr[1, 0].set_ylabel('v(t) [m/s]')\n", "axarr[2, 0].set_ylabel('a(t) [m/s$^2$]')\n", "\n", "axarr[0, 1].set_title('at constant speed');\n", "axarr[0, 1].plot(t, r0*tones+v0*t, 'g', linewidth=4, label='$r(t)=1+2t$')\n", "axarr[1, 1].plot(t, v0*tones, 'b', linewidth=4, label='$v(t)=2$')\n", "axarr[2, 1].plot(t, 0*tones, 'r', linewidth=4, label='$a(t)=0$')\n", "\n", "axarr[0, 2].set_title('at constant acceleration');\n", "axarr[0, 2].plot(t, r0*tones+v0*t+1/2.*a0*t**2,'g', linewidth=4,\n", " label='$r(t)=1+2t+\\\\frac{1}{2}4t^2$')\n", "axarr[1, 2].plot(t, v0*tones+a0*t, 'b', linewidth=4,\n", " label='$v(t)=2+4t$')\n", "axarr[2, 2].plot(t, a0*tones, 'r', linewidth=4,\n", " label='$a(t)=4$')\n", "\n", "for i in range(3): \n", " axarr[2, i].set_xlabel('Time [s]');\n", " for j in range(3):\n", " axarr[i,j].set_ylim((-.2, 10))\n", " axarr[i,j].legend(loc = 'upper left', frameon=True, framealpha = 0.9, fontsize=14)\n", " \n", "plt.subplots_adjust(hspace=0.09, wspace=0.07)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "## Symbolic programming\n", "\n", "We can use [Sympy](http://www.sympy.org/en/index.html), a Python library for symbolic mathematics, to deduce the expressions for the cases of motion of a particle we just visualized. \n", "Let's show how to integrate with Sympy for the case of particle with constant acceleration:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2020-09-25T18:15:20.393798Z", "start_time": "2020-09-25T18:15:19.992957Z" }, "jupyter": { "outputs_hidden": true }, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "from sympy import Symbol, integrate, init_printing\n", "init_printing(use_latex='mathjax')\n", "\n", "t = Symbol('t', real=True, positive=True)\n", "g = Symbol('g', real=True, positive=True)\n", "v0 = Symbol('v0', real=True, positive=True, constant = True)\n", "r0 = Symbol('r0', real=True, positive=True, constant = True)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2020-09-25T18:15:20.403296Z", "start_time": "2020-09-25T18:15:20.394843Z" }, "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle g t + v_{0}$" ], "text/plain": [ "g⋅t + v₀" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v = integrate(g, t) + v0 # a constant has to be added\n", "v" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2020-09-25T18:15:20.411271Z", "start_time": "2020-09-25T18:15:20.404110Z" }, "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{g t^{2}}{2} + r_{0} + t v_{0}$" ], "text/plain": [ " 2 \n", "g⋅t \n", "──── + r₀ + t⋅v₀\n", " 2 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = integrate(v, t) + r0 # a constant has to be added\n", "r" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Kinematics of human movement" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "### Kinematics of the 100-m race\n", "\n", "An example where the analysis of some aspects of the human body movement can be reduced to the analysis of a particle is the study of the Biomechanics of the 100-m race. \n", "\n", "A technical report with the kinematic data for the 100-m world record by Usain Bolt can be downloaded from the [website for Research Projects](http://www.iaaf.org/development/research) from the International Association of Athletics Federations. \n", "[Here is a direct link for that report](http://www.iaaf.org/download/download?filename=76ade5f9-75a0-4fda-b9bf-1b30be6f60d2.pdf&urlSlug=1-biomechanics-report-wc-berlin-2009-sprint). In particular, the following table shows the data for the three medalists in that race: \n", "
\n", "
\"partial
Figure. Data from the three medalists of the 100-m dash in Berlin, 2009 (IAAF report).
\n", "\n", "The column **RT** in the table above refers to the reaction time of each athlete. The IAAF has a very strict rule about reaction time: any athlete with a reaction time less than 100 ms is disqualified from the competition! See the website [Reaction Times and Sprint False Starts](http://condellpark.com/kd/reactiontime.htm) for a discussion about this rule.\n", "\n", "You can measure your own reaction time in a simple way visiting this website: [http://www.humanbenchmark.com/tests/reactiontime](http://www.humanbenchmark.com/tests/reactiontime).\n", "\n", "The article [A Kinematics Analysis Of Three Best 100 M Performances Ever](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3661886/) by Krzysztof and Mero presents a detailed kinematic analysis of 100-m races. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Further reading\n", "\n", " - Read the preface and first chapter of the [Ruina and Rudra's book](http://ruina.tam.cornell.edu/Book/index.html) about how someone should study Mechanics. \n", " - See the notebook [Spatial and temporal characteristics](http://nbviewer.jupyter.org/github/demotu/BMC/blob/master/notebooks/SpatialTemporalCharacteristcs.ipynb) about how the simple measurement of spatial and temporal kinematic variables can be very useful to describe the human gait. \n", " - See the notebook [The minimum jerk hypothesis](http://nbviewer.jupyter.org/github/demotu/BMC/blob/master/notebooks/MinimumJerkHypothesis.ipynb) about the conjecture that movements are performed (organized) with the smoothest trajectory possible." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Video lectures on the Internet\n", "\n", " - Khan Academy: [One-dimensional motion](https://www.khanacademy.org/science/ap-physics-1/ap-one-dimensional-motion) \n", " - [Powers of 10, Units, Dimensions, Uncertainties, Scaling Arguments](https://youtu.be/GtOGurrUPmQ) \n", " - [1D Kinematics - Speed, Velocity, Acceleration](https://youtu.be/q9IWoQ199_o) " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Problems\n", "\n", "1. Answer the 12 questions of the [Khan Academy's test on one-dimensional motion](https://www.khanacademy.org/science/ap-physics-1/ap-one-dimensional-motion/test/ap-one-dimensional-motion-unit-test?modal=1). \n", "\n", "2. Consider the data for the three medalists of the 100-m dash in Berlin, 2009, shown previously. \n", " a. Calculate the average velocity and acceleration. \n", " b. Plot the graphs for the displacement, velocity, and acceleration versus time. \n", " c. Plot the graphs velocity and acceleration versus partial distance (every 20m). \n", " d. Calculate the average velocity and average acceleration and the instants and values of the peak velocity and peak acceleration. \n", "\n", "3. The article \"Biomechanical Analysis of the Sprint and Hurdles Events at the 2009 IAAF World Championships in Athletics\" by Graubner and Nixdorf lists the 10-m split times for the three medalists of the 100-m dash in Berlin, 2009: \n", "
\n", "
\"partial
\n", "\n", " a. Repeat the same calculations performed in problem 2 and compare the results. \n", "\n", "4. A body attached to a spring has its position (in cm) described by the equation $x(t) = 2\\sin(4\\pi t + \\pi/4)$. \n", " a. Calculate the equation for the body velocity and acceleration. \n", " b. Plot the position, velocity, and acceleration in the interval [0, 1] s. \n", " \n", "5. There are some nice free software that can be used for the kinematic analysis of human motion. Some of them are: [Kinovea](http://www.kinovea.org/), [Tracker](http://www.cabrillo.edu/~dbrown/tracker/), and [SkillSpector](http://video4coach.com/index.php?option=com_content&task=view&id=13&Itemid=45). Visit their websites and explore these software to understand in which biomechanical applications they could be used. \n", "\n", "6. From Ruina and Rudra's book, solve the problems **12.1.1** to **12.1.14**. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## References\n", "\n", "- Graubner R, Nixdorf E (2011) [Biomechanical Analysis of the Sprint and Hurdles Events at the 2009 IAAF World Championships in Athletics ](http://www.meathathletics.ie/devathletes/pdf/Biomechanics%20of%20Sprints.pdf). [New Studies in Athletics](http://www.iaaf.org/development/new-studies-in-athletics), 1/2, 19-53.\n", "- Krzysztof M, Antti Mero A (2013) [A Kinematics Analysis Of Three Best 100 M Performances Ever](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3661886/). Journal of Human Kinetics, 36, 149–160.\n", "- [Research Projects](http://www.iaaf.org/development/research) from the International Association of Athletics Federations. \n", "- Ruina A, Rudra P (2019) [Introduction to Statics and Dynamics](http://ruina.tam.cornell.edu/Book/index.html). Oxford University Press. " ] } ], "metadata": { "anaconda-cloud": {}, "hide_input": false, "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.8.5" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autoclose": false, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false }, "nbTranslate": { "displayLangs": [ "*" ], "hotkey": "alt-t", "langInMainMenu": true, "sourceLang": "en", "targetLang": "fr", "useGoogleTranslate": true }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }