add parametric equations for eptrochoid

This commit is contained in:
2019-11-04 10:49:49 +01:00
parent 254fa75498
commit b7887db0ac
6 changed files with 147 additions and 4 deletions

View File

@@ -37,7 +37,7 @@
<span class="c1"># -*- coding: utf-8 -*-</span>
<span class="sd">&quot;&quot;&quot;Mathematical equations.</span>
<span class="sd">:Date: 2019-11-01</span>
<span class="sd">:Date: 2019-11-02</span>
<span class="sd">.. module:: function</span>
<span class="sd"> :platform: *nix, Windows</span>
@@ -146,6 +146,7 @@
<span class="c1">#</span>
<span class="c1"># Parametric equations</span>
<span class="c1"># roulette</span>
<span class="c1">#</span>
<div class="viewcode-block" id="hypotrochoid"><a class="viewcode-back" href="../function.html#function.hypotrochoid">[docs]</a><span class="k">def</span> <span class="nf">hypotrochoid</span><span class="p">(</span><span class="n">R</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
@@ -195,6 +196,51 @@
<span class="n">y</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">-</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">((</span><span class="n">R</span><span class="o">-</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
<span class="n">theta_end</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="n">lcm</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">R</span><span class="p">)</span><span class="o">/</span><span class="n">R</span>
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">theta_end</span></div>
<div class="viewcode-block" id="epitrochoid"><a class="viewcode-back" href="../function.html#function.epitrochoid">[docs]</a><span class="k">def</span> <span class="nf">epitrochoid</span><span class="p">(</span><span class="n">R</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Epitrochoid</span>
<span class="sd"> A point is attached with a distance d from the center of a circle</span>
<span class="sd"> of radius r. The circle is rolling around the outside of a fixed</span>
<span class="sd"> circle of radius R.</span>
<span class="sd"> :param R: radius of the fixed interior circle</span>
<span class="sd"> :type R: float</span>
<span class="sd"> :param r: radius of the rolling circle outside of the fixed circle</span>
<span class="sd"> :typre r: float</span>
<span class="sd"> :param d: distance from the center of the exterior circle</span>
<span class="sd"> :type d: float</span>
<span class="sd"> :results: functions for x of theta and y of theta</span>
<span class="sd"> :rtype: tuple</span>
<span class="sd"> .. math::</span>
<span class="sd"> x(\theta) = (R + r)\cos\theta - d\cos\left(\frac{R+r}{r}\theta\right) \\</span>
<span class="sd"> y(\theta) = (R + r)\sin\theta - d\sin\left(\frac{R+r}{r}\theta\right) \\</span>
<span class="sd"> \theta = \left[0, 2\pi\right]</span>
<span class="sd"> ::</span>
<span class="sd"> * * *</span>
<span class="sd"> * R *</span>
<span class="sd"> * *</span>
<span class="sd"> * * * *</span>
<span class="sd"> * * * r *</span>
<span class="sd"> * ** .... *</span>
<span class="sd"> * ** d *</span>
<span class="sd"> * * * *</span>
<span class="sd"> * * * *</span>
<span class="sd"> * *</span>
<span class="sd"> * *</span>
<span class="sd"> * * *</span>
<span class="sd"> &gt;&gt;&gt; x, y = epitrochoid(3, 1, 0.5)[:1]</span>
<span class="sd"> &gt;&gt;&gt; x, y, theta_end = epitrochoid(3, 1, 0.5)</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">x</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">((</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">((</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
<span class="n">theta_end</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span>
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">theta_end</span></div>
</pre></div>
</div>