{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Projectile Motion"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "This notebook shows off some basic IPython notebook features.  We create a simple class to describe a projectile, given an angle and initial velocity and then instantiate some objects and make plots."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "class Projectile(object):\n",
    "\n",
    "    # this is called every time a new object is created\n",
    "    def __init__(self, v=1.0, theta=45, grav=9.81):\n",
    "\n",
    "        self.v = v           # velocity m/s\n",
    "        self.theta = theta   # angle (degrees)\n",
    "        \n",
    "        self.theta_rad = math.radians(theta)\n",
    "        self.vx = v*math.cos(self.theta_rad)\n",
    "        self.vy = v*math.sin(self.theta_rad)\n",
    "\n",
    "        self.g = grav\n",
    "\n",
    "        self.npts = 1000\n",
    "\n",
    "    def height(self):\n",
    "\n",
    "        # how high does this projectile go?\n",
    "        # vf_y^2 = 0 = vi_y^2 - 2 g h\n",
    "        h = self.vy**2/(2.0*self.g)\n",
    "\n",
    "        return h\n",
    "\n",
    "    def time(self):\n",
    "        \n",
    "        # time of flight up\n",
    "        # vf_y = 0 = vi_y - g t\n",
    "        t = self.vy/self.g\n",
    "\n",
    "        # total time = up + down\n",
    "        t = 2.0*t\n",
    "\n",
    "        return t\n",
    "        \n",
    "    def distance(self):\n",
    "        \n",
    "        d = self.vx*self.time()\n",
    "\n",
    "        return d\n",
    "\n",
    "    def __str__(self):\n",
    "        # a string representation for this class -- so we can print it\n",
    "        str = \" v: {} m/s\\n theta: {} (degrees)\\n height: {} m\\n distance: {} m\\n\".format(\n",
    "            self.v, self.theta, self.height(), self.distance())\n",
    "            \n",
    "        return str\n",
    "    \n",
    "    def t(self):\n",
    "        return numpy.linspace(0.0, self.time(), num=self.npts)\n",
    "    \n",
    "    def x(self):\n",
    "        return self.vx*self.t()\n",
    "    \n",
    "    def y(self):\n",
    "        return self.vy*self.t() - 0.5*self.g*self.t()**2\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "p1 = Projectile(theta=80, v=10)\n",
    "p2 = Projectile(theta=45, v=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " v: 10 m/s\n",
      " theta: 80 (degrees)\n",
      " height: 4.943151429118012 m\n",
      " distance: 3.4864438667244526 m\n",
      "\n",
      " v: 10 m/s\n",
      " theta: 45 (degrees)\n",
      " height: 2.54841997961264 m\n",
      " distance: 10.19367991845056 m\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(p1)\n",
    "print(p2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fea4666ed30>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fea4666ed68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pylab.plot(p1.x(), p1.y())\n",
    "pylab.plot(p2.x(), p2.y())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": []
  }
 ],
 "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.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}