add vector class and matrix class
This commit is contained in:
9
docs/build/html/_modules/function.html
vendored
9
docs/build/html/_modules/function.html
vendored
@@ -37,7 +37,7 @@
|
|||||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||||
<span class="sd">"""Mathematical equations.</span>
|
<span class="sd">"""Mathematical equations.</span>
|
||||||
|
|
||||||
<span class="sd">:Date: 2019-11-04</span>
|
<span class="sd">:Date: 2019-11-15</span>
|
||||||
|
|
||||||
<span class="sd">.. module:: function</span>
|
<span class="sd">.. module:: function</span>
|
||||||
<span class="sd"> :platform: *nix, Windows</span>
|
<span class="sd"> :platform: *nix, Windows</span>
|
||||||
@@ -46,7 +46,8 @@
|
|||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">import</span> <span class="nn">math</span>
|
<span class="kn">import</span> <span class="nn">math</span>
|
||||||
<span class="kn">from</span> <span class="nn">pylib.mathematics</span> <span class="k">import</span> <span class="n">lcm</span>
|
<span class="kn">from</span> <span class="nn">pylib.data</span> <span class="kn">import</span> <span class="n">seq</span>
|
||||||
|
<span class="kn">from</span> <span class="nn">pylib.mathematics</span> <span class="kn">import</span> <span class="n">lcm</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="transformation"><a class="viewcode-back" href="../function.html#function.transformation">[docs]</a><span class="k">def</span> <span class="nf">transformation</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">scale_vertical</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">scale_horizontal</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
<div class="viewcode-block" id="transformation"><a class="viewcode-back" href="../function.html#function.transformation">[docs]</a><span class="k">def</span> <span class="nf">transformation</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">scale_vertical</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">scale_horizontal</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
||||||
<span class="n">shift_horizontal</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">shift_vertical</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
<span class="n">shift_horizontal</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">shift_vertical</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||||
@@ -420,6 +421,8 @@
|
|||||||
<span class="n">window_factor</span> <span class="o">=</span> <span class="n">w</span><span class="o">/</span><span class="p">(</span><span class="n">x_1</span><span class="o">-</span><span class="n">x_0</span><span class="p">)</span>
|
<span class="n">window_factor</span> <span class="o">=</span> <span class="n">w</span><span class="o">/</span><span class="p">(</span><span class="n">x_1</span><span class="o">-</span><span class="n">x_0</span><span class="p">)</span>
|
||||||
<span class="n">frame</span> <span class="o">=</span> <span class="s2">""</span>
|
<span class="n">frame</span> <span class="o">=</span> <span class="s2">""</span>
|
||||||
<span class="k">if</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"line"</span><span class="p">,</span> <span class="s2">"braille"</span><span class="p">]:</span>
|
<span class="k">if</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"line"</span><span class="p">,</span> <span class="s2">"braille"</span><span class="p">]:</span>
|
||||||
|
<span class="kn">import</span> <span class="nn">drawille</span>
|
||||||
|
|
||||||
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">2</span>
|
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">2</span>
|
||||||
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">4</span>
|
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">4</span>
|
||||||
<span class="n">a</span> <span class="o">=</span> <span class="o">-</span><span class="p">(</span><span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
<span class="n">a</span> <span class="o">=</span> <span class="o">-</span><span class="p">(</span><span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||||
@@ -434,6 +437,8 @@
|
|||||||
<span class="c1">#frame = canvas.frame(min_x=a*pixel_per_char, min_y=1, max_x=b*pixel_per_char, max_y=21)</span>
|
<span class="c1">#frame = canvas.frame(min_x=a*pixel_per_char, min_y=1, max_x=b*pixel_per_char, max_y=21)</span>
|
||||||
<span class="n">frame</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">frame</span><span class="p">()</span>
|
<span class="n">frame</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">frame</span><span class="p">()</span>
|
||||||
<span class="k">elif</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"histogram"</span><span class="p">,</span> <span class="s2">"block"</span><span class="p">]:</span>
|
<span class="k">elif</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"histogram"</span><span class="p">,</span> <span class="s2">"block"</span><span class="p">]:</span>
|
||||||
|
<span class="kn">import</span> <span class="nn">drawblock</span>
|
||||||
|
|
||||||
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">1</span>
|
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">1</span>
|
||||||
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">8</span>
|
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">8</span>
|
||||||
<span class="n">a</span> <span class="o">=</span> <span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span>
|
<span class="n">a</span> <span class="o">=</span> <span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span>
|
||||||
|
|||||||
2
docs/build/html/_modules/geometry_plot.html
vendored
2
docs/build/html/_modules/geometry_plot.html
vendored
@@ -47,7 +47,7 @@
|
|||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">import</span> <span class="nn">math</span>
|
<span class="kn">import</span> <span class="nn">math</span>
|
||||||
<span class="kn">import</span> <span class="nn">pylab</span>
|
<span class="kn">import</span> <span class="nn">pylab</span>
|
||||||
<span class="kn">from</span> <span class="nn">geometry</span> <span class="k">import</span> <span class="p">(</span>
|
<span class="kn">from</span> <span class="nn">geometry</span> <span class="kn">import</span> <span class="p">(</span>
|
||||||
<span class="n">distance</span><span class="p">,</span> <span class="n">angle</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">interpolate_hermite</span><span class="p">,</span> <span class="n">rotate_xy</span><span class="p">,</span> <span class="n">translate_xy</span>
|
<span class="n">distance</span><span class="p">,</span> <span class="n">angle</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">interpolate_hermite</span><span class="p">,</span> <span class="n">rotate_xy</span><span class="p">,</span> <span class="n">translate_xy</span>
|
||||||
<span class="p">)</span>
|
<span class="p">)</span>
|
||||||
|
|
||||||
|
|||||||
1
docs/build/html/_modules/index.html
vendored
1
docs/build/html/_modules/index.html
vendored
@@ -45,6 +45,7 @@
|
|||||||
<li><a href="numerical/ode_model.html">numerical.ode_model</a></li>
|
<li><a href="numerical/ode_model.html">numerical.ode_model</a></li>
|
||||||
<li><a href="pylib/data.html">pylib.data</a></li>
|
<li><a href="pylib/data.html">pylib.data</a></li>
|
||||||
<li><a href="pylib/date.html">pylib.date</a></li>
|
<li><a href="pylib/date.html">pylib.date</a></li>
|
||||||
|
<li><a href="pylib/drawblock.html">pylib.drawblock</a></li>
|
||||||
<li><a href="pylib/function.html">pylib.function</a></li>
|
<li><a href="pylib/function.html">pylib.function</a></li>
|
||||||
<li><a href="pylib/geometry.html">pylib.geometry</a></li>
|
<li><a href="pylib/geometry.html">pylib.geometry</a></li>
|
||||||
<li><a href="pylib/geometry_plot.html">pylib.geometry_plot</a></li>
|
<li><a href="pylib/geometry_plot.html">pylib.geometry_plot</a></li>
|
||||||
|
|||||||
916
docs/build/html/_modules/mathematics.html
vendored
916
docs/build/html/_modules/mathematics.html
vendored
@@ -35,21 +35,929 @@
|
|||||||
<h1>Source code for mathematics</h1><div class="highlight"><pre>
|
<h1>Source code for mathematics</h1><div class="highlight"><pre>
|
||||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||||
<span class="sd">"""Mathematical functions.</span>
|
<span class="sd">"""Mathematical functions and objects.</span>
|
||||||
|
|
||||||
<span class="sd">:Date: 2019-10-30</span>
|
<span class="sd">:Date: 2019-12-12</span>
|
||||||
|
|
||||||
<span class="sd">.. module:: mathematics</span>
|
<span class="sd">.. module:: mathematics</span>
|
||||||
<span class="sd"> :platform: *nix, Windows</span>
|
<span class="sd"> :platform: *nix, Windows</span>
|
||||||
<span class="sd"> :synopsis: Mathematical functions.</span>
|
<span class="sd"> :synopsis: Mathematical functions and objects.</span>
|
||||||
|
|
||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">from</span> <span class="nn">math</span> <span class="k">import</span> <span class="n">gcd</span>
|
<span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">gcd</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="lcm"><a class="viewcode-back" href="../mathematics.html#mathematics.lcm">[docs]</a><span class="k">def</span> <span class="nf">lcm</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
<div class="viewcode-block" id="lcm"><a class="viewcode-back" href="../mathematics.html#mathematics.lcm">[docs]</a><span class="k">def</span> <span class="nf">lcm</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
||||||
<span class="sd">"""Compute the lowest common multiple of a and b"""</span>
|
<span class="sd">"""Compute the lowest common multiple of a and b"""</span>
|
||||||
<span class="k">return</span> <span class="n">a</span><span class="o">/</span><span class="n">gcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span><span class="o">*</span><span class="n">b</span></div>
|
<span class="k">return</span> <span class="n">a</span><span class="o">/</span><span class="n">gcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span><span class="o">*</span><span class="n">b</span></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector"><a class="viewcode-back" href="../mathematics.html#mathematics.vector">[docs]</a><span class="k">class</span> <span class="nc">vector</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Use/create vector like lists</span>
|
||||||
|
|
||||||
|
<span class="sd"> * size -> len(a)</span>
|
||||||
|
<span class="sd"> * abs -> abs(a)</span>
|
||||||
|
<span class="sd"> * dot -> a * b</span>
|
||||||
|
<span class="sd"> * outer -> a @ b</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super constructor</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __iter__</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __setitem__</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3,4,5])</span>
|
||||||
|
<span class="sd"> >>> v[3:5] = [1,2]</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [1, 2, 3, 1, 2]</span>
|
||||||
|
<span class="sd"> >>> isinstance(v, vector)</span>
|
||||||
|
<span class="sd"> True</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __lt__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __le__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __eq__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3,1,2])</span>
|
||||||
|
<span class="sd"> >>> v2 = vector([1,2,3,1,2])</span>
|
||||||
|
<span class="sd"> >>> v == v2</span>
|
||||||
|
<span class="sd"> True</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __ne__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __ge__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __gt__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __contains__</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> 2 in vector([1,2,3])</span>
|
||||||
|
<span class="sd"> True</span>
|
||||||
|
|
||||||
|
<span class="sd"> __isub__</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> v -= vector([3,3,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [-2, -1, 0]</span>
|
||||||
|
|
||||||
|
<span class="sd"> __imul__</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> v *= vector([3,3,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> 18</span>
|
||||||
|
|
||||||
|
<span class="sd"> __imatmul__</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> m = vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> m *= vector([3,3,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [[3, 3, 3], [6, 6, 6], [9, 9, 9]]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""</span>
|
||||||
|
<span class="sd"> For index return value, for range return new vector object.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1, 2, 3, 4, 5])</span>
|
||||||
|
<span class="sd"> >>> v[1:3]</span>
|
||||||
|
<span class="sd"> [2, 3]</span>
|
||||||
|
<span class="sd"> >>> v = vector([1, 2, 3, 4, 5])</span>
|
||||||
|
<span class="sd"> >>> v[3]</span>
|
||||||
|
<span class="sd"> 4</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="c1"># use the list.__getslice__ method and convert result to vector</span>
|
||||||
|
<span class="n">item</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="n">item</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__pos__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""+ a (new object)</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="o">*</span><span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__neg__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""- a (new object)</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="o">-</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""a + b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3]) + vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [2, 4, 6]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">+</span><span class="n">j</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__iadd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""a += b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> v += vector([3,3,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [4, 5, 6]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">+</span><span class="n">j</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__sub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""a - b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3]) - vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [0, 0, 0]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">-</span><span class="n">j</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scalar multiplication, dot product (inner product) or</span>
|
||||||
|
<span class="sd"> vector-matrix multiplication.</span>
|
||||||
|
|
||||||
|
<span class="sd"> a * b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type other: scalar, vector (or 1d list), matrix (or 2d list)</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{a} \cdot b \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{a} \cdot \mathbf{b} \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{a} \cdot \mathbf{B}</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. note::</span>
|
||||||
|
<span class="sd"> No size checking will be conducted, therefore no exceptions for</span>
|
||||||
|
<span class="sd"> wrong usage (result will be nonsense).</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3,4,5])*3</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [3, 6, 9, 12, 15]</span>
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3,4,5])*3.</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [3.0, 6.0, 9.0, 12.0, 15.0]</span>
|
||||||
|
<span class="sd"> >>> s = vector([1,2,3])*vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> print(s)</span>
|
||||||
|
<span class="sd"> 14</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. seealso::</span>
|
||||||
|
<span class="sd"> :meth:`__rmul__`</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># vector * vector</span>
|
||||||
|
<span class="k">return</span> <span class="nb">sum</span><span class="p">([</span><span class="n">i</span><span class="o">*</span><span class="n">j</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># vector * matrix</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">b_col</span><span class="p">))</span> <span class="k">for</span> <span class="n">b_col</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">other</span><span class="p">)])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># vector * scalar</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">*</span><span class="n">other</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__rmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scalar multiplication, dot product (inner product) or</span>
|
||||||
|
<span class="sd"> matrix-vector multiplication.</span>
|
||||||
|
|
||||||
|
<span class="sd"> a * b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type other: scalar (or 1d list and 2d list)</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= a \cdot \mathbf{b} \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{a} \cdot \mathbf{b} \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{A} \cdot \mathbf{b}</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. note::</span>
|
||||||
|
<span class="sd"> No size checking will be conducted, therefore no exceptions for</span>
|
||||||
|
<span class="sd"> wrong usage (result will be nonsense).</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = 3*vector([1,2,3,4,5])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [3, 6, 9, 12, 15]</span>
|
||||||
|
<span class="sd"> >>> v = 3.*vector([1,2,3,4,5])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [3.0, 6.0, 9.0, 12.0, 15.0]</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. seealso::</span>
|
||||||
|
<span class="sd"> :meth:`__mul__`</span>
|
||||||
|
<span class="sd"> :meth:`matrix.__mul__` for matrix * vector</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># 2d list * vector (matrix * vector see matrix.__mul__)</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">a_row</span><span class="p">,</span> <span class="bp">self</span><span class="p">))</span> <span class="k">for</span> <span class="n">a_row</span> <span class="ow">in</span> <span class="n">other</span><span class="p">])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># scalar * vector</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span><span class="o">*</span><span class="n">other</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__matmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Outer product a @ b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \vec{a} \otimes \vec{b}</span>
|
||||||
|
<span class="sd"> =</span>
|
||||||
|
<span class="sd"> \begin{pmatrix}</span>
|
||||||
|
<span class="sd"> a_{1}\\</span>
|
||||||
|
<span class="sd"> a_{2}\\</span>
|
||||||
|
<span class="sd"> a_{3}</span>
|
||||||
|
<span class="sd"> \end{pmatrix}</span>
|
||||||
|
<span class="sd"> \otimes</span>
|
||||||
|
<span class="sd"> \begin{pmatrix}</span>
|
||||||
|
<span class="sd"> b_{1}\\</span>
|
||||||
|
<span class="sd"> b_{2}\\</span>
|
||||||
|
<span class="sd"> b_{3}</span>
|
||||||
|
<span class="sd"> \end{pmatrix}</span>
|
||||||
|
<span class="sd"> =</span>
|
||||||
|
<span class="sd"> \begin{pmatrix}</span>
|
||||||
|
<span class="sd"> a_{1}b_{1}&a_{1}b_{2}&a_{1}b_{3}\\</span>
|
||||||
|
<span class="sd"> a_{2}b_{1}&a_{2}b_{2}&a_{2}b_{3}\\</span>
|
||||||
|
<span class="sd"> a_{3}b_{1}&a_{3}b_{2}&a_{3}b_{3}</span>
|
||||||
|
<span class="sd"> \end{pmatrix}</span>
|
||||||
|
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> m = vector([1,2,3]) @ vector([1,2,4])</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[1, 2, 4], [2, 4, 8], [3, 6, 12]]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># vector * vector</span>
|
||||||
|
<span class="k">return</span> <span class="n">matrix</span><span class="p">([[</span><span class="n">i</span><span class="o">*</span><span class="n">j</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">other</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># vector * number</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span><span class="o">*</span><span class="n">other</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__abs__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Magnitude / norm of a vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> b = \sqrt{\sum a_i^2}</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> norm([3, 4])</span>
|
||||||
|
<span class="sd"> 5</span>
|
||||||
|
<span class="sd"> >>> norm(vector([3, 4]))</span>
|
||||||
|
<span class="sd"> 5</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span> <span class="o">*</span> <span class="bp">self</span><span class="p">)</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="nb">str</span><span class="p">([</span><span class="o">*</span><span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="s2">"vector("</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s2">")"</span>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.full"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.full">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="n">fill_value</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Returns a vector of length m or matrix of size m rows, n</span>
|
||||||
|
<span class="sd"> columns filled with v.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :param length: length of the vector, e. g. 3</span>
|
||||||
|
<span class="sd"> :type length: int</span>
|
||||||
|
<span class="sd"> :param fill_value: Fill value</span>
|
||||||
|
<span class="sd"> :Type fill_value: scalar</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector.full(3, 7)</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [7, 7, 7]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">fill_value</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">length</span><span class="p">)])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.zeros"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.zeros">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">zeros</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Returns a zero vector of length m or matrix of size rows, n</span>
|
||||||
|
<span class="sd"> columns filled with zeros.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :param length: length of the vector, e. g. 3</span>
|
||||||
|
<span class="sd"> :type length: int</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = zeros(3)</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [0.0, 0.0, 0.0]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="mf">0.</span><span class="p">)</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.ones"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.ones">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">ones</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Returns a vector of length m or matrix of size rows, n</span>
|
||||||
|
<span class="sd"> columns filled with ones.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :param length: lhape of the vector, e. g. 3</span>
|
||||||
|
<span class="sd"> :type length: int</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = ones(3)</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [1.0, 1.0, 1.0]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.random"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.random">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">random</span><span class="p">(</span><span class="n">shape</span><span class="p">,</span> <span class="n">lmin</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">lmax</span><span class="o">=</span><span class="mf">1.0</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Returns a random vector of length n or matrix of size m rows, n</span>
|
||||||
|
<span class="sd"> columns filled with random numbers.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = random(3)</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [0.9172905912930438, 0.8908124278322492, 0.5256002790725927]</span>
|
||||||
|
<span class="sd"> >>> v = random(3, 1, 2)</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [1.2563665665080803, 1.9270454509964547, 1.2381672401270487]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="kn">import</span> <span class="nn">random</span>
|
||||||
|
<span class="n">dl</span> <span class="o">=</span> <span class="n">lmax</span><span class="o">-</span><span class="n">lmin</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">dl</span><span class="o">*</span><span class="n">random</span><span class="o">.</span><span class="n">random</span><span class="p">()</span><span class="o">+</span><span class="n">lmin</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">shape</span><span class="p">)])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.normalize"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.normalize">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Normalize a vector (i. e. the vector has a length of 1)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \vec{e}_a = \frac{\vec{a}}{|\vec{a}|}</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. seealso::</span>
|
||||||
|
<span class="sd"> :meth:`norm` for a norm (magnitude) of a vector</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">a_mag</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">/</span><span class="n">a_mag</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.ang"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.ang">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">ang</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">acos</span><span class="p">(</span><span class="n">a</span> <span class="o">*</span> <span class="n">b</span> <span class="o">/</span> <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="o">*</span> <span class="nb">abs</span><span class="p">(</span><span class="n">b</span><span class="p">)))</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.conjugate"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.conjugate">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">conjugate</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""</span>
|
||||||
|
<span class="sd"> New vector object</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">conjugate</span><span class="p">()</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.re"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.re">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">re</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Return the real parts of a complex vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">real</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.im"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.im">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">im</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Return the imaginary parts of a complex vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">imag</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.abs"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.abs">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">abs</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Return modulus parts of a complex vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">abs</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.arg"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.arg">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">arg</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Return phase parts of a complex vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">math</span><span class="o">.</span><span class="n">atan2</span><span class="p">(</span><span class="n">i</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">real</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.cross"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.cross">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">cross</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Cross product</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> :type b: list</span>
|
||||||
|
|
||||||
|
<span class="sd"> c is orthogonal to both a and b.</span>
|
||||||
|
<span class="sd"> The direction of c can be found with the right-hand rule.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \vec{c} = \vec{a} \times \vec{b}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
|
||||||
|
<span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span>
|
||||||
|
<span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.xyz"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.xyz">[docs]</a> <span class="k">def</span> <span class="nf">xyz</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.rotate_x"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.rotate_x">[docs]</a> <span class="k">def</span> <span class="nf">rotate_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the x dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \cos \theta & -\sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \sin \theta & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.rotate_y"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.rotate_y">[docs]</a> <span class="k">def</span> <span class="nf">rotate_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the y dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & 0 & \sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> -\sin \theta & 0 & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.rotate_z"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.rotate_z">[docs]</a> <span class="k">def</span> <span class="nf">rotate_z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the z dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & -\sin \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> \sin \theta & \cos \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.translate"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.translate">[docs]</a> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Translation</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & t_x \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & t_y \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.scale"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.scale">[docs]</a> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scaling</span>
|
||||||
|
|
||||||
|
<span class="sd"> uniform scaling if sx=sy=sz=s.</span>
|
||||||
|
<span class="sd"> Note that scaling happens around the origin, so objects not</span>
|
||||||
|
<span class="sd"> centered at the origin will have their centers move. To avoid this,</span>
|
||||||
|
<span class="sd"> either scale the object when it's located at the origin, or</span>
|
||||||
|
<span class="sd"> perform a translation afterwards to move the object back to where</span>
|
||||||
|
<span class="sd"> it should be.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> s_x & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & s_y & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & s_z & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">sy</span><span class="p">:</span>
|
||||||
|
<span class="n">sy</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="n">sz</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">s</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="p">,</span> <span class="n">sz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.ch_cs"><a class="viewcode-back" href="../mathematics.html#mathematics.vector.ch_cs">[docs]</a> <span class="k">def</span> <span class="nf">ch_cs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cs</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Transform this vector from its defined coordinate system to a</span>
|
||||||
|
<span class="sd"> new coordinate system, defined by the given coordinate system (u,</span>
|
||||||
|
<span class="sd"> v and w direction vectors).</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> u_x & u_y & u_z & 0 \\</span>
|
||||||
|
<span class="sd"> v_x & v_y & v_z & 0 \\</span>
|
||||||
|
<span class="sd"> w_x & w_y & w_z & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">cs</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix">[docs]</a><span class="k">class</span> <span class="nc">matrix</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Use/create matrix like list of lists</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""</span>
|
||||||
|
<span class="sd"> For index return value, for range return new vector object.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> m = matrix([[1, 2, 3, 0], [4, 5, 6, 0], [7, 8, 9, 0], [0, 0, 0, 0]])</span>
|
||||||
|
<span class="sd"> >>> print(m[2])</span>
|
||||||
|
<span class="sd"> [7, 8, 9, 0]</span>
|
||||||
|
<span class="sd"> >>> print(m[:,1:3])</span>
|
||||||
|
<span class="sd"> [[2, 3], [5, 6], [8, 9], [0, 0]]</span>
|
||||||
|
<span class="sd"> >>> print(m[0:2,1:3])</span>
|
||||||
|
<span class="sd"> [[2, 3], [5, 6]]</span>
|
||||||
|
<span class="sd"> >>> print(m[::2,::2])</span>
|
||||||
|
<span class="sd"> [[1, 3], [7, 9]]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="c1"># index: slice(stop), slice(start, stop[, step])</span>
|
||||||
|
<span class="c1"># for e. g. m[(1,3),:] -> index = ((1, 3), slice(None, None, None))</span>
|
||||||
|
<span class="c1"># use the list.__getslice__ method and convert result to vector</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># 2d slicing (tuple of sclices)</span>
|
||||||
|
<span class="n">item</span> <span class="o">=</span> <span class="p">[</span><span class="n">row</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">index</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">index</span><span class="p">[</span><span class="mi">0</span><span class="p">])]</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># 1d slicing</span>
|
||||||
|
<span class="n">item</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
|
||||||
|
<span class="k">return</span> <span class="n">matrix</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="n">item</span>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.rx"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix.rx">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation matrix about the x direction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> Rotates the coordinate system of vectors</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> R_{x}(\theta) =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \cos \theta & -\sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \sin \theta & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">s</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="n">c</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="n">T</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([[</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span><span class="o">-</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="n">s</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||||
|
<span class="k">return</span> <span class="n">T</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.ry"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix.ry">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation matrix about the y direction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> Rotates the coordinate system of vectors</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> R_{y}(\theta) =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & 0 & \sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> -\sin \theta & 0 & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">s</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="n">c</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="n">T</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([[</span> <span class="n">c</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span><span class="o">-</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||||
|
<span class="k">return</span> <span class="n">T</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.rz"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix.rz">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation matrix about the z direction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> Rotates the coordinate system of vectors</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> R_{z}(\theta) =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & -\sin \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> \sin \theta & \cos \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> R_{z}(\theta) \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos 90° & -\sin 90° & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> \sin 90° & \cos 90° & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 0 & -1 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}0 \\ 1 \\ 0 \\ 1\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">s</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="n">c</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="n">T</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([[</span> <span class="n">c</span><span class="p">,</span><span class="o">-</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="n">s</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||||
|
<span class="k">return</span> <span class="n">T</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.t"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix.t">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Translation matrix</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> T =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & t_x \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & t_y \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">T</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([[</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span><span class="n">tx</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span><span class="n">ty</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span><span class="n">tz</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||||
|
<span class="k">return</span> <span class="n">T</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.s"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix.s">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">s</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scaling matrix</span>
|
||||||
|
|
||||||
|
<span class="sd"> uniform scaling if sx=sy=sz=s.</span>
|
||||||
|
<span class="sd"> Note that scaling happens around the origin, so objects not</span>
|
||||||
|
<span class="sd"> centered at the origin will have their centers move. To avoid this,</span>
|
||||||
|
<span class="sd"> either scale the object when it's located at the origin, or</span>
|
||||||
|
<span class="sd"> perform a translation afterwards to move the object back to where</span>
|
||||||
|
<span class="sd"> it should be.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> S =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> s_x & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & s_y & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & s_z & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">sy</span><span class="p">:</span>
|
||||||
|
<span class="n">sy</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="n">sz</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="n">T</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([[</span><span class="n">sx</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="n">sy</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span><span class="n">sz</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||||
|
<span class="k">return</span> <span class="n">T</span></div>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scalar multiplication, dot product (inner product) or</span>
|
||||||
|
<span class="sd"> matrix-vector multiplication.</span>
|
||||||
|
|
||||||
|
<span class="sd"> a * b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type other: scalar, vector (or 1d list), matrix (or 2d list)</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \mathbf{C} &= \mathbf{A} \cdot b \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{A} \cdot \mathbf{b} \\</span>
|
||||||
|
<span class="sd"> \mathbf{C} &= \mathbf{A} \cdot \mathbf{B}</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. note::</span>
|
||||||
|
<span class="sd"> No size checking will be conducted, therefore no exceptions for</span>
|
||||||
|
<span class="sd"> wrong usage (result will be nonsense).</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> m = matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]]) * 5</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60], [0, 0, 0, 5]]</span>
|
||||||
|
<span class="sd"> >>> m = matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]]) * 5.</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[5.0, 10.0, 15.0, 20.0], [25.0, 30.0, 35.0, 40.0], [45.0, 50.0, 55.0, 60.0], [0.0, 0.0, 0.0, 5.0]]</span>
|
||||||
|
<span class="sd"> >>> v = matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) * vector([12, 12, 13])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [75, 186, 297]</span>
|
||||||
|
<span class="sd"> >>> m = matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) * matrix([[12, 12, 13], [14, 15, 16], [17, 18, 19]])</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[91, 96, 102], [220, 231, 246], [349, 366, 390]]</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. seealso::</span>
|
||||||
|
<span class="sd"> :meth:`__rmul__`</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># matrix * matrix</span>
|
||||||
|
<span class="k">return</span> <span class="n">matrix</span><span class="p">([[</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">a_row</span><span class="p">,</span> <span class="n">b_col</span><span class="p">))</span> <span class="k">for</span> <span class="n">b_col</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">other</span><span class="p">)]</span> <span class="k">for</span> <span class="n">a_row</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># matrix * vector</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">a_row</span><span class="p">,</span> <span class="n">other</span><span class="p">))</span> <span class="k">for</span> <span class="n">a_row</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># matrix * scalar</span>
|
||||||
|
<span class="k">return</span> <span class="n">matrix</span><span class="p">([[</span><span class="n">a</span><span class="o">*</span><span class="n">other</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">a_row</span><span class="p">]</span> <span class="k">for</span> <span class="n">a_row</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__rmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scalar multiplication, dot product (inner product) or</span>
|
||||||
|
<span class="sd"> vector-matrix multiplication.</span>
|
||||||
|
|
||||||
|
<span class="sd"> a * b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type other: scalar (or 1d list and 2d list)</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \mathbf{C} &= a \cdot \mathbf{B} \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{a} \cdot \mathbf{B} \\</span>
|
||||||
|
<span class="sd"> \mathbf{C} &= \mathbf{A} \cdot \mathbf{B}</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. note::</span>
|
||||||
|
<span class="sd"> No size checking will be conducted, therefore no exceptions for</span>
|
||||||
|
<span class="sd"> wrong usage (result will be nonsense).</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> m = 5 * matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]]) * 5</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60], [0, 0, 0, 5]]</span>
|
||||||
|
<span class="sd"> >>> m = 5. * matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]])</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[5.0, 10.0, 15.0, 20.0], [25.0, 30.0, 35.0, 40.0], [45.0, 50.0, 55.0, 60.0], [0.0, 0.0, 0.0, 5.0]]</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. seealso::</span>
|
||||||
|
<span class="sd"> :meth:`__mul__`</span>
|
||||||
|
<span class="sd"> :meth:`vector.__mul__` for vector * matrix</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># 2d list * matrix (matrix * matrix see matrix.__mul__)</span>
|
||||||
|
<span class="k">return</span> <span class="n">matrix</span><span class="p">([[</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">a_row</span><span class="p">,</span> <span class="n">b_col</span><span class="p">))</span> <span class="k">for</span> <span class="n">b_col</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="p">)]</span> <span class="k">for</span> <span class="n">a_row</span> <span class="ow">in</span> <span class="n">other</span><span class="p">])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># 1d list * matrix (vector * matrix see vector.__mul__)</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">b_col</span><span class="p">))</span> <span class="k">for</span> <span class="n">b_col</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="p">)])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># scalar * vector</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span><span class="o">*</span><span class="n">other</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="nb">str</span><span class="p">([</span><span class="o">*</span><span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="s2">"matrix("</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s2">")"</span>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.rotate_x"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix.rotate_x">[docs]</a> <span class="k">def</span> <span class="nf">rotate_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the x dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx' & yy' & yz' & t_y' \\</span>
|
||||||
|
<span class="sd"> zx' & zy' & zz' & t_z' \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \cos \theta & -\sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \sin \theta & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.rotate_y"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix.rotate_y">[docs]</a> <span class="k">def</span> <span class="nf">rotate_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the y dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx' & xy' & xz' & t_x' \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx' & zy' & zz' & t_z' \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & 0 & \sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> -\sin \theta & 0 & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.rotate_z"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix.rotate_z">[docs]</a> <span class="k">def</span> <span class="nf">rotate_z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the z dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx' & xy' & xz' & t_x' \\</span>
|
||||||
|
<span class="sd"> yx' & yy' & yz' & t_y' \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & -\sin \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> \sin \theta & \cos \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.translate"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix.translate">[docs]</a> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Translation</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x' \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y' \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z' \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & t_x \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & t_y \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.scale"><a class="viewcode-back" href="../mathematics.html#mathematics.matrix.scale">[docs]</a> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scaling</span>
|
||||||
|
|
||||||
|
<span class="sd"> uniform scaling if sx=sy=sz=s.</span>
|
||||||
|
<span class="sd"> Note that scaling happens around the origin, so objects not</span>
|
||||||
|
<span class="sd"> centered at the origin will have their centers move. To avoid this,</span>
|
||||||
|
<span class="sd"> either scale the object when it's located at the origin, or</span>
|
||||||
|
<span class="sd"> perform a translation afterwards to move the object back to where</span>
|
||||||
|
<span class="sd"> it should be.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx' & xy' & xz' & t_x' \\</span>
|
||||||
|
<span class="sd"> yx' & yy' & yz' & t_y' \\</span>
|
||||||
|
<span class="sd"> zx' & zy' & zz' & t_z' \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> s_x & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & s_y & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & s_z & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">sy</span><span class="p">:</span>
|
||||||
|
<span class="n">sy</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="n">sz</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">s</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="p">,</span> <span class="n">sz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div></div>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
6
docs/build/html/_modules/numerical/fit.html
vendored
6
docs/build/html/_modules/numerical/fit.html
vendored
@@ -45,9 +45,9 @@
|
|||||||
|
|
||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">print_function</span>
|
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
|
||||||
<span class="kn">from</span> <span class="nn">pylab</span> <span class="k">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">argmax</span><span class="p">,</span> <span class="n">gradient</span><span class="p">,</span> <span class="n">exp</span><span class="p">,</span> <span class="n">sqrt</span><span class="p">,</span> <span class="n">log</span><span class="p">,</span> <span class="n">linspace</span>
|
<span class="kn">from</span> <span class="nn">pylab</span> <span class="kn">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">argmax</span><span class="p">,</span> <span class="n">gradient</span><span class="p">,</span> <span class="n">exp</span><span class="p">,</span> <span class="n">sqrt</span><span class="p">,</span> <span class="n">log</span><span class="p">,</span> <span class="n">linspace</span>
|
||||||
<span class="kn">from</span> <span class="nn">scipy.optimize</span> <span class="k">import</span> <span class="n">curve_fit</span>
|
<span class="kn">from</span> <span class="nn">scipy.optimize</span> <span class="kn">import</span> <span class="n">curve_fit</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="gauss"><a class="viewcode-back" href="../../numerical.html#numerical.fit.gauss">[docs]</a><span class="k">def</span> <span class="nf">gauss</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
<div class="viewcode-block" id="gauss"><a class="viewcode-back" href="../../numerical.html#numerical.fit.gauss">[docs]</a><span class="k">def</span> <span class="nf">gauss</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
||||||
<span class="sd">"""Gauss distribution function.</span>
|
<span class="sd">"""Gauss distribution function.</span>
|
||||||
|
|||||||
@@ -47,8 +47,8 @@
|
|||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
|
|
||||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span>
|
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span>
|
||||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="k">import</span> <span class="n">linspace</span><span class="p">,</span> <span class="n">trapz</span><span class="p">,</span> <span class="n">zeros</span>
|
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">linspace</span><span class="p">,</span> <span class="n">trapz</span><span class="p">,</span> <span class="n">zeros</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="trapez"><a class="viewcode-back" href="../../numerical.html#numerical.integration.trapez">[docs]</a><span class="k">def</span> <span class="nf">trapez</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">N</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
<div class="viewcode-block" id="trapez"><a class="viewcode-back" href="../../numerical.html#numerical.integration.trapez">[docs]</a><span class="k">def</span> <span class="nf">trapez</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">N</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||||
<span class="n">save_values</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
<span class="n">save_values</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||||
|
|||||||
6
docs/build/html/_modules/numerical/ode.html
vendored
6
docs/build/html/_modules/numerical/ode.html
vendored
@@ -49,9 +49,9 @@
|
|||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
|
|
||||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
|
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
|
||||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="k">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">isnan</span><span class="p">,</span> <span class="nb">sum</span><span class="p">,</span> <span class="n">zeros</span><span class="p">,</span> <span class="n">dot</span>
|
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">isnan</span><span class="p">,</span> <span class="nb">sum</span><span class="p">,</span> <span class="n">zeros</span><span class="p">,</span> <span class="n">dot</span>
|
||||||
<span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="k">import</span> <span class="n">norm</span><span class="p">,</span> <span class="n">inv</span>
|
<span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="kn">import</span> <span class="n">norm</span><span class="p">,</span> <span class="n">inv</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="e1"><a class="viewcode-back" href="../../numerical.html#numerical.ode.e1">[docs]</a><span class="k">def</span> <span class="nf">e1</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
<div class="viewcode-block" id="e1"><a class="viewcode-back" href="../../numerical.html#numerical.ode.e1">[docs]</a><span class="k">def</span> <span class="nf">e1</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||||
<span class="sa">r</span><span class="sd">"""Explicit first-order method /</span>
|
<span class="sa">r</span><span class="sd">"""Explicit first-order method /</span>
|
||||||
|
|||||||
@@ -48,9 +48,9 @@
|
|||||||
|
|
||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
|
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
|
||||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="k">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">cos</span><span class="p">,</span> <span class="n">sin</span><span class="p">,</span> <span class="n">dot</span><span class="p">,</span> <span class="n">square</span>
|
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">cos</span><span class="p">,</span> <span class="n">sin</span><span class="p">,</span> <span class="n">dot</span><span class="p">,</span> <span class="n">square</span>
|
||||||
<span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="k">import</span> <span class="n">inv</span>
|
<span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="kn">import</span> <span class="n">inv</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="disk"><a class="viewcode-back" href="../../numerical.html#numerical.ode_model.disk">[docs]</a><span class="k">def</span> <span class="nf">disk</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
<div class="viewcode-block" id="disk"><a class="viewcode-back" href="../../numerical.html#numerical.ode_model.disk">[docs]</a><span class="k">def</span> <span class="nf">disk</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
||||||
<span class="sd">"""Rotation of an eccentric disk.</span>
|
<span class="sd">"""Rotation of an eccentric disk.</span>
|
||||||
|
|||||||
224
docs/build/html/_modules/pylib/drawblock.html
vendored
Normal file
224
docs/build/html/_modules/pylib/drawblock.html
vendored
Normal file
@@ -0,0 +1,224 @@
|
|||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>pylib.drawblock — pylib 2019.5.19 documentation</title>
|
||||||
|
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||||
|
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||||
|
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||||
|
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||||
|
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||||
|
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||||
|
<link rel="index" title="Index" href="../../genindex.html" />
|
||||||
|
<link rel="search" title="Search" href="../../search.html" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||||
|
|
||||||
|
</head><body>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="document">
|
||||||
|
<div class="documentwrapper">
|
||||||
|
<div class="bodywrapper">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="body" role="main">
|
||||||
|
|
||||||
|
<h1>Source code for pylib.drawblock</h1><div class="highlight"><pre>
|
||||||
|
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||||
|
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="histogram"><a class="viewcode-back" href="../../pylib.html#pylib.drawblock.histogram">[docs]</a><span class="k">def</span> <span class="nf">histogram</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Histogram chart with block symbols.</span>
|
||||||
|
|
||||||
|
<span class="sd"> dots:</span>
|
||||||
|
<span class="sd"> ,_,</span>
|
||||||
|
<span class="sd"> |8|</span>
|
||||||
|
<span class="sd"> |7|</span>
|
||||||
|
<span class="sd"> |6|</span>
|
||||||
|
<span class="sd"> |5|</span>
|
||||||
|
<span class="sd"> |4|</span>
|
||||||
|
<span class="sd"> |3|</span>
|
||||||
|
<span class="sd"> |2|</span>
|
||||||
|
<span class="sd"> |1|</span>
|
||||||
|
<span class="sd"> ```</span>
|
||||||
|
|
||||||
|
<span class="sd"> ▁▂▃▄▅▆▇█</span>
|
||||||
|
<span class="sd"> 12345678</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">defaultdict</span>
|
||||||
|
<span class="n">chars</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">int</span><span class="p">))</span>
|
||||||
|
|
||||||
|
<span class="c1"># w/o comma no 2d tuple</span>
|
||||||
|
<span class="n">pixel_map</span> <span class="o">=</span> <span class="p">((</span><span class="mh">0x2581</span><span class="p">,),</span> <span class="c1"># Lower one eighth block, also used for value 0</span>
|
||||||
|
<span class="p">(</span><span class="mh">0x2582</span><span class="p">,),</span> <span class="c1"># Lower one quarter block</span>
|
||||||
|
<span class="p">(</span><span class="mh">0x2583</span><span class="p">,),</span> <span class="c1"># Lower three eighths block</span>
|
||||||
|
<span class="p">(</span><span class="mh">0x2584</span><span class="p">,),</span> <span class="c1"># Lower half block</span>
|
||||||
|
<span class="p">(</span><span class="mh">0x2585</span><span class="p">,),</span> <span class="c1"># Lower five eighths block</span>
|
||||||
|
<span class="p">(</span><span class="mh">0x2586</span><span class="p">,),</span> <span class="c1"># Lower three quarters block</span>
|
||||||
|
<span class="p">(</span><span class="mh">0x2587</span><span class="p">,),</span> <span class="c1"># Lower seven eighths block</span>
|
||||||
|
<span class="p">(</span><span class="mh">0x2588</span><span class="p">,))</span> <span class="c1"># Full block</span>
|
||||||
|
<span class="c1">#print(pixel_map)</span>
|
||||||
|
<span class="n">pixel_rows</span> <span class="o">=</span> <span class="mi">8</span>
|
||||||
|
<span class="n">pixel_cols</span> <span class="o">=</span> <span class="mi">1</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">coord</span><span class="p">):</span>
|
||||||
|
<span class="n">coord_type</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">coord</span><span class="p">)</span>
|
||||||
|
<span class="k">if</span> <span class="n">coord_type</span> <span class="o">==</span> <span class="nb">int</span><span class="p">:</span>
|
||||||
|
<span class="k">return</span> <span class="n">coord</span>
|
||||||
|
<span class="k">if</span> <span class="n">coord_type</span> <span class="o">==</span> <span class="nb">float</span><span class="p">:</span>
|
||||||
|
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="n">coord</span><span class="p">))</span>
|
||||||
|
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">"Unsupported coordinate type <</span><span class="si">{0}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">coord</span><span class="p">)))</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="nf">get_pos</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Convert x, y to cols, rows"""</span>
|
||||||
|
<span class="k">return</span> <span class="n">x</span> <span class="o">//</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span> <span class="o">//</span> <span class="n">pixel_rows</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Set a pixel of the :class:`Canvas` object.</span>
|
||||||
|
<span class="sd"> :param x: x coordinate of the pixel</span>
|
||||||
|
<span class="sd"> :param y: y coordinate of the pixel</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">x</span> <span class="o">=</span> <span class="n">normalize</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||||
|
<span class="n">y</span> <span class="o">=</span> <span class="n">normalize</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
||||||
|
<span class="n">col</span><span class="p">,</span> <span class="n">row</span> <span class="o">=</span> <span class="n">get_pos</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
||||||
|
|
||||||
|
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">chars</span><span class="p">[</span><span class="n">row</span><span class="p">][</span><span class="n">col</span><span class="p">])</span> <span class="o">!=</span> <span class="nb">int</span><span class="p">:</span>
|
||||||
|
<span class="k">return</span>
|
||||||
|
|
||||||
|
<span class="n">chars</span><span class="p">[</span><span class="n">row</span><span class="p">][</span><span class="n">col</span><span class="p">]</span> <span class="o">|=</span> <span class="n">pixel_map</span><span class="p">[</span><span class="n">y</span> <span class="o">%</span> <span class="n">pixel_rows</span><span class="p">][</span><span class="n">x</span> <span class="o">%</span> <span class="n">pixel_cols</span><span class="p">]</span>
|
||||||
|
|
||||||
|
<span class="c1"># fill also below the tip</span>
|
||||||
|
<span class="k">if</span> <span class="n">row</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||||
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">row</span><span class="p">):</span>
|
||||||
|
<span class="n">chars</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">col</span><span class="p">]</span> <span class="o">|=</span> <span class="n">pixel_map</span><span class="p">[</span><span class="n">pixel_rows</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="n">x</span> <span class="o">%</span> <span class="n">pixel_cols</span><span class="p">]</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="nf">rows</span><span class="p">(</span><span class="n">min_x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">min_y</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">max_x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">max_y</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Returns a list of the current :class:`Canvas` object lines.</span>
|
||||||
|
<span class="sd"> :param min_x: (optional) minimum x coordinate of the canvas</span>
|
||||||
|
<span class="sd"> :param min_y: (optional) minimum y coordinate of the canvas</span>
|
||||||
|
<span class="sd"> :param max_x: (optional) maximum x coordinate of the canvas</span>
|
||||||
|
<span class="sd"> :param max_y: (optional) maximum y coordinate of the canvas</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">chars</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
||||||
|
<span class="k">return</span> <span class="p">[]</span>
|
||||||
|
|
||||||
|
<span class="n">minrow</span> <span class="o">=</span> <span class="n">min_y</span> <span class="o">//</span> <span class="n">pixel_rows</span> <span class="k">if</span> <span class="n">min_y</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="nb">min</span><span class="p">(</span><span class="n">chars</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
||||||
|
<span class="n">maxrow</span> <span class="o">=</span> <span class="p">(</span><span class="n">max_y</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="n">pixel_rows</span> <span class="k">if</span> <span class="n">max_y</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="nb">max</span><span class="p">(</span><span class="n">chars</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
||||||
|
<span class="n">mincol</span> <span class="o">=</span> <span class="n">min_x</span> <span class="o">//</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">min_x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="nb">min</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">chars</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
|
||||||
|
<span class="n">maxcol</span> <span class="o">=</span> <span class="p">(</span><span class="n">max_x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">max_x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="nb">max</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">chars</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
|
||||||
|
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
|
||||||
|
|
||||||
|
<span class="k">for</span> <span class="n">rownum</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">minrow</span><span class="p">,</span> <span class="n">maxrow</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
|
||||||
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">rownum</span> <span class="ow">in</span> <span class="n">chars</span><span class="p">:</span>
|
||||||
|
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span>
|
||||||
|
<span class="k">continue</span>
|
||||||
|
|
||||||
|
<span class="n">maxcol</span> <span class="o">=</span> <span class="p">(</span><span class="n">max_x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">max_x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="nb">max</span><span class="p">(</span><span class="n">chars</span><span class="p">[</span><span class="n">rownum</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
||||||
|
<span class="n">row</span> <span class="o">=</span> <span class="p">[]</span>
|
||||||
|
|
||||||
|
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">mincol</span><span class="p">,</span> <span class="n">maxcol</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
|
||||||
|
<span class="n">char</span> <span class="o">=</span> <span class="n">chars</span><span class="p">[</span><span class="n">rownum</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||||
|
|
||||||
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">char</span><span class="p">:</span>
|
||||||
|
<span class="n">row</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">chr</span><span class="p">(</span><span class="mh">0x20</span><span class="p">))</span>
|
||||||
|
<span class="c1">#row.append(chr(0x2588))</span>
|
||||||
|
<span class="k">elif</span> <span class="nb">type</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">int</span><span class="p">:</span>
|
||||||
|
<span class="n">row</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">char</span><span class="p">)</span>
|
||||||
|
<span class="k">else</span><span class="p">:</span>
|
||||||
|
<span class="n">row</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">chr</span><span class="p">(</span><span class="n">char</span><span class="p">))</span>
|
||||||
|
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">row</span><span class="p">))</span>
|
||||||
|
|
||||||
|
<span class="k">return</span> <span class="n">result</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="nf">frame</span><span class="p">(</span><span class="n">min_x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">min_y</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">max_x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">max_y</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""String representation of the current :class:`Canvas` object pixels.</span>
|
||||||
|
<span class="sd"> :param min_x: (optional) minimum x coordinate of the canvas</span>
|
||||||
|
<span class="sd"> :param min_y: (optional) minimum y coordinate of the canvas</span>
|
||||||
|
<span class="sd"> :param max_x: (optional) maximum x coordinate of the canvas</span>
|
||||||
|
<span class="sd"> :param max_y: (optional) maximum y coordinate of the canvas</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="kn">import</span> <span class="nn">os</span>
|
||||||
|
<span class="n">result</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">linesep</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">reversed</span><span class="p">(</span><span class="n">rows</span><span class="p">(</span><span class="n">min_x</span><span class="p">,</span> <span class="n">min_y</span><span class="p">,</span> <span class="n">max_x</span><span class="p">,</span> <span class="n">max_y</span><span class="p">)))</span>
|
||||||
|
<span class="k">return</span> <span class="n">result</span> <span class="c1"># py2: ret.encode('utf-8')</span>
|
||||||
|
|
||||||
|
<span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||||
|
<span class="k">for</span> <span class="n">xi</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">f</span><span class="p">):</span>
|
||||||
|
<span class="nb">set</span><span class="p">(</span><span class="n">xi</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
||||||
|
<span class="k">else</span><span class="p">:</span>
|
||||||
|
<span class="k">for</span> <span class="n">xi</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">f</span><span class="p">):</span>
|
||||||
|
<span class="nb">set</span><span class="p">(</span><span class="n">xi</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
||||||
|
<span class="k">return</span> <span class="n">frame</span><span class="p">()</span></div>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||||
|
<div class="sphinxsidebarwrapper">
|
||||||
|
<h1 class="logo"><a href="../../index.html">pylib</a></h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Navigation</h3>
|
||||||
|
|
||||||
|
<div class="relations">
|
||||||
|
<h3>Related Topics</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="../../index.html">Documentation overview</a><ul>
|
||||||
|
<li><a href="../index.html">Module code</a><ul>
|
||||||
|
</ul></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchbox" style="display: none" role="search">
|
||||||
|
<h3 id="searchlabel">Quick search</h3>
|
||||||
|
<div class="searchformwrapper">
|
||||||
|
<form class="search" action="../../search.html" method="get">
|
||||||
|
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||||
|
<input type="submit" value="Go" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clearer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
©2019, Daniel Weschke.
|
||||||
|
|
||||||
|
|
|
||||||
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||||
|
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
9
docs/build/html/_modules/pylib/function.html
vendored
9
docs/build/html/_modules/pylib/function.html
vendored
@@ -37,7 +37,7 @@
|
|||||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||||
<span class="sd">"""Mathematical equations.</span>
|
<span class="sd">"""Mathematical equations.</span>
|
||||||
|
|
||||||
<span class="sd">:Date: 2019-11-04</span>
|
<span class="sd">:Date: 2019-11-15</span>
|
||||||
|
|
||||||
<span class="sd">.. module:: function</span>
|
<span class="sd">.. module:: function</span>
|
||||||
<span class="sd"> :platform: *nix, Windows</span>
|
<span class="sd"> :platform: *nix, Windows</span>
|
||||||
@@ -46,7 +46,8 @@
|
|||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">import</span> <span class="nn">math</span>
|
<span class="kn">import</span> <span class="nn">math</span>
|
||||||
<span class="kn">from</span> <span class="nn">pylib.mathematics</span> <span class="k">import</span> <span class="n">lcm</span>
|
<span class="kn">from</span> <span class="nn">pylib.data</span> <span class="kn">import</span> <span class="n">seq</span>
|
||||||
|
<span class="kn">from</span> <span class="nn">pylib.mathematics</span> <span class="kn">import</span> <span class="n">lcm</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="transformation"><a class="viewcode-back" href="../../pylib.html#pylib.function.transformation">[docs]</a><span class="k">def</span> <span class="nf">transformation</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">scale_vertical</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">scale_horizontal</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
<div class="viewcode-block" id="transformation"><a class="viewcode-back" href="../../pylib.html#pylib.function.transformation">[docs]</a><span class="k">def</span> <span class="nf">transformation</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">scale_vertical</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">scale_horizontal</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
||||||
<span class="n">shift_horizontal</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">shift_vertical</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
<span class="n">shift_horizontal</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">shift_vertical</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||||
@@ -420,6 +421,8 @@
|
|||||||
<span class="n">window_factor</span> <span class="o">=</span> <span class="n">w</span><span class="o">/</span><span class="p">(</span><span class="n">x_1</span><span class="o">-</span><span class="n">x_0</span><span class="p">)</span>
|
<span class="n">window_factor</span> <span class="o">=</span> <span class="n">w</span><span class="o">/</span><span class="p">(</span><span class="n">x_1</span><span class="o">-</span><span class="n">x_0</span><span class="p">)</span>
|
||||||
<span class="n">frame</span> <span class="o">=</span> <span class="s2">""</span>
|
<span class="n">frame</span> <span class="o">=</span> <span class="s2">""</span>
|
||||||
<span class="k">if</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"line"</span><span class="p">,</span> <span class="s2">"braille"</span><span class="p">]:</span>
|
<span class="k">if</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"line"</span><span class="p">,</span> <span class="s2">"braille"</span><span class="p">]:</span>
|
||||||
|
<span class="kn">import</span> <span class="nn">drawille</span>
|
||||||
|
|
||||||
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">2</span>
|
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">2</span>
|
||||||
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">4</span>
|
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">4</span>
|
||||||
<span class="n">a</span> <span class="o">=</span> <span class="o">-</span><span class="p">(</span><span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
<span class="n">a</span> <span class="o">=</span> <span class="o">-</span><span class="p">(</span><span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||||
@@ -434,6 +437,8 @@
|
|||||||
<span class="c1">#frame = canvas.frame(min_x=a*pixel_per_char, min_y=1, max_x=b*pixel_per_char, max_y=21)</span>
|
<span class="c1">#frame = canvas.frame(min_x=a*pixel_per_char, min_y=1, max_x=b*pixel_per_char, max_y=21)</span>
|
||||||
<span class="n">frame</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">frame</span><span class="p">()</span>
|
<span class="n">frame</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">frame</span><span class="p">()</span>
|
||||||
<span class="k">elif</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"histogram"</span><span class="p">,</span> <span class="s2">"block"</span><span class="p">]:</span>
|
<span class="k">elif</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"histogram"</span><span class="p">,</span> <span class="s2">"block"</span><span class="p">]:</span>
|
||||||
|
<span class="kn">import</span> <span class="nn">drawblock</span>
|
||||||
|
|
||||||
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">1</span>
|
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">1</span>
|
||||||
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">8</span>
|
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">8</span>
|
||||||
<span class="n">a</span> <span class="o">=</span> <span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span>
|
<span class="n">a</span> <span class="o">=</span> <span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span>
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">import</span> <span class="nn">math</span>
|
<span class="kn">import</span> <span class="nn">math</span>
|
||||||
<span class="kn">import</span> <span class="nn">pylab</span>
|
<span class="kn">import</span> <span class="nn">pylab</span>
|
||||||
<span class="kn">from</span> <span class="nn">geometry</span> <span class="k">import</span> <span class="p">(</span>
|
<span class="kn">from</span> <span class="nn">geometry</span> <span class="kn">import</span> <span class="p">(</span>
|
||||||
<span class="n">distance</span><span class="p">,</span> <span class="n">angle</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">interpolate_hermite</span><span class="p">,</span> <span class="n">rotate_xy</span><span class="p">,</span> <span class="n">translate_xy</span>
|
<span class="n">distance</span><span class="p">,</span> <span class="n">angle</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">interpolate_hermite</span><span class="p">,</span> <span class="n">rotate_xy</span><span class="p">,</span> <span class="n">translate_xy</span>
|
||||||
<span class="p">)</span>
|
<span class="p">)</span>
|
||||||
|
|
||||||
|
|||||||
916
docs/build/html/_modules/pylib/mathematics.html
vendored
916
docs/build/html/_modules/pylib/mathematics.html
vendored
@@ -35,21 +35,929 @@
|
|||||||
<h1>Source code for pylib.mathematics</h1><div class="highlight"><pre>
|
<h1>Source code for pylib.mathematics</h1><div class="highlight"><pre>
|
||||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||||
<span class="sd">"""Mathematical functions.</span>
|
<span class="sd">"""Mathematical functions and objects.</span>
|
||||||
|
|
||||||
<span class="sd">:Date: 2019-10-30</span>
|
<span class="sd">:Date: 2019-12-12</span>
|
||||||
|
|
||||||
<span class="sd">.. module:: mathematics</span>
|
<span class="sd">.. module:: mathematics</span>
|
||||||
<span class="sd"> :platform: *nix, Windows</span>
|
<span class="sd"> :platform: *nix, Windows</span>
|
||||||
<span class="sd"> :synopsis: Mathematical functions.</span>
|
<span class="sd"> :synopsis: Mathematical functions and objects.</span>
|
||||||
|
|
||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">from</span> <span class="nn">math</span> <span class="k">import</span> <span class="n">gcd</span>
|
<span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">gcd</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="lcm"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.lcm">[docs]</a><span class="k">def</span> <span class="nf">lcm</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
<div class="viewcode-block" id="lcm"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.lcm">[docs]</a><span class="k">def</span> <span class="nf">lcm</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
||||||
<span class="sd">"""Compute the lowest common multiple of a and b"""</span>
|
<span class="sd">"""Compute the lowest common multiple of a and b"""</span>
|
||||||
<span class="k">return</span> <span class="n">a</span><span class="o">/</span><span class="n">gcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span><span class="o">*</span><span class="n">b</span></div>
|
<span class="k">return</span> <span class="n">a</span><span class="o">/</span><span class="n">gcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span><span class="o">*</span><span class="n">b</span></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector">[docs]</a><span class="k">class</span> <span class="nc">vector</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Use/create vector like lists</span>
|
||||||
|
|
||||||
|
<span class="sd"> * size -> len(a)</span>
|
||||||
|
<span class="sd"> * abs -> abs(a)</span>
|
||||||
|
<span class="sd"> * dot -> a * b</span>
|
||||||
|
<span class="sd"> * outer -> a @ b</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super constructor</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __iter__</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __setitem__</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3,4,5])</span>
|
||||||
|
<span class="sd"> >>> v[3:5] = [1,2]</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [1, 2, 3, 1, 2]</span>
|
||||||
|
<span class="sd"> >>> isinstance(v, vector)</span>
|
||||||
|
<span class="sd"> True</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __lt__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __le__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __eq__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3,1,2])</span>
|
||||||
|
<span class="sd"> >>> v2 = vector([1,2,3,1,2])</span>
|
||||||
|
<span class="sd"> >>> v == v2</span>
|
||||||
|
<span class="sd"> True</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __ne__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __ge__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __gt__(a, b)</span>
|
||||||
|
|
||||||
|
<span class="sd"> use super __contains__</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> 2 in vector([1,2,3])</span>
|
||||||
|
<span class="sd"> True</span>
|
||||||
|
|
||||||
|
<span class="sd"> __isub__</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> v -= vector([3,3,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [-2, -1, 0]</span>
|
||||||
|
|
||||||
|
<span class="sd"> __imul__</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> v *= vector([3,3,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> 18</span>
|
||||||
|
|
||||||
|
<span class="sd"> __imatmul__</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> m = vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> m *= vector([3,3,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [[3, 3, 3], [6, 6, 6], [9, 9, 9]]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""</span>
|
||||||
|
<span class="sd"> For index return value, for range return new vector object.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1, 2, 3, 4, 5])</span>
|
||||||
|
<span class="sd"> >>> v[1:3]</span>
|
||||||
|
<span class="sd"> [2, 3]</span>
|
||||||
|
<span class="sd"> >>> v = vector([1, 2, 3, 4, 5])</span>
|
||||||
|
<span class="sd"> >>> v[3]</span>
|
||||||
|
<span class="sd"> 4</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="c1"># use the list.__getslice__ method and convert result to vector</span>
|
||||||
|
<span class="n">item</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="n">item</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__pos__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""+ a (new object)</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="o">*</span><span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__neg__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""- a (new object)</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="o">-</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""a + b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3]) + vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [2, 4, 6]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">+</span><span class="n">j</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__iadd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""a += b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> v += vector([3,3,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [4, 5, 6]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">+</span><span class="n">j</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__sub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""a - b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3]) - vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [0, 0, 0]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">-</span><span class="n">j</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scalar multiplication, dot product (inner product) or</span>
|
||||||
|
<span class="sd"> vector-matrix multiplication.</span>
|
||||||
|
|
||||||
|
<span class="sd"> a * b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type other: scalar, vector (or 1d list), matrix (or 2d list)</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{a} \cdot b \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{a} \cdot \mathbf{b} \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{a} \cdot \mathbf{B}</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. note::</span>
|
||||||
|
<span class="sd"> No size checking will be conducted, therefore no exceptions for</span>
|
||||||
|
<span class="sd"> wrong usage (result will be nonsense).</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3,4,5])*3</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [3, 6, 9, 12, 15]</span>
|
||||||
|
<span class="sd"> >>> v = vector([1,2,3,4,5])*3.</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [3.0, 6.0, 9.0, 12.0, 15.0]</span>
|
||||||
|
<span class="sd"> >>> s = vector([1,2,3])*vector([1,2,3])</span>
|
||||||
|
<span class="sd"> >>> print(s)</span>
|
||||||
|
<span class="sd"> 14</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. seealso::</span>
|
||||||
|
<span class="sd"> :meth:`__rmul__`</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># vector * vector</span>
|
||||||
|
<span class="k">return</span> <span class="nb">sum</span><span class="p">([</span><span class="n">i</span><span class="o">*</span><span class="n">j</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># vector * matrix</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">b_col</span><span class="p">))</span> <span class="k">for</span> <span class="n">b_col</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">other</span><span class="p">)])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># vector * scalar</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">*</span><span class="n">other</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__rmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scalar multiplication, dot product (inner product) or</span>
|
||||||
|
<span class="sd"> matrix-vector multiplication.</span>
|
||||||
|
|
||||||
|
<span class="sd"> a * b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type other: scalar (or 1d list and 2d list)</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= a \cdot \mathbf{b} \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{a} \cdot \mathbf{b} \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{A} \cdot \mathbf{b}</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. note::</span>
|
||||||
|
<span class="sd"> No size checking will be conducted, therefore no exceptions for</span>
|
||||||
|
<span class="sd"> wrong usage (result will be nonsense).</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = 3*vector([1,2,3,4,5])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [3, 6, 9, 12, 15]</span>
|
||||||
|
<span class="sd"> >>> v = 3.*vector([1,2,3,4,5])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [3.0, 6.0, 9.0, 12.0, 15.0]</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. seealso::</span>
|
||||||
|
<span class="sd"> :meth:`__mul__`</span>
|
||||||
|
<span class="sd"> :meth:`matrix.__mul__` for matrix * vector</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># 2d list * vector (matrix * vector see matrix.__mul__)</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">a_row</span><span class="p">,</span> <span class="bp">self</span><span class="p">))</span> <span class="k">for</span> <span class="n">a_row</span> <span class="ow">in</span> <span class="n">other</span><span class="p">])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># scalar * vector</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span><span class="o">*</span><span class="n">other</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__matmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Outer product a @ b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \vec{a} \otimes \vec{b}</span>
|
||||||
|
<span class="sd"> =</span>
|
||||||
|
<span class="sd"> \begin{pmatrix}</span>
|
||||||
|
<span class="sd"> a_{1}\\</span>
|
||||||
|
<span class="sd"> a_{2}\\</span>
|
||||||
|
<span class="sd"> a_{3}</span>
|
||||||
|
<span class="sd"> \end{pmatrix}</span>
|
||||||
|
<span class="sd"> \otimes</span>
|
||||||
|
<span class="sd"> \begin{pmatrix}</span>
|
||||||
|
<span class="sd"> b_{1}\\</span>
|
||||||
|
<span class="sd"> b_{2}\\</span>
|
||||||
|
<span class="sd"> b_{3}</span>
|
||||||
|
<span class="sd"> \end{pmatrix}</span>
|
||||||
|
<span class="sd"> =</span>
|
||||||
|
<span class="sd"> \begin{pmatrix}</span>
|
||||||
|
<span class="sd"> a_{1}b_{1}&a_{1}b_{2}&a_{1}b_{3}\\</span>
|
||||||
|
<span class="sd"> a_{2}b_{1}&a_{2}b_{2}&a_{2}b_{3}\\</span>
|
||||||
|
<span class="sd"> a_{3}b_{1}&a_{3}b_{2}&a_{3}b_{3}</span>
|
||||||
|
<span class="sd"> \end{pmatrix}</span>
|
||||||
|
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> m = vector([1,2,3]) @ vector([1,2,4])</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[1, 2, 4], [2, 4, 8], [3, 6, 12]]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># vector * vector</span>
|
||||||
|
<span class="k">return</span> <span class="n">matrix</span><span class="p">([[</span><span class="n">i</span><span class="o">*</span><span class="n">j</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">other</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># vector * number</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span><span class="o">*</span><span class="n">other</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__abs__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Magnitude / norm of a vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> b = \sqrt{\sum a_i^2}</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> norm([3, 4])</span>
|
||||||
|
<span class="sd"> 5</span>
|
||||||
|
<span class="sd"> >>> norm(vector([3, 4]))</span>
|
||||||
|
<span class="sd"> 5</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span> <span class="o">*</span> <span class="bp">self</span><span class="p">)</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="nb">str</span><span class="p">([</span><span class="o">*</span><span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="s2">"vector("</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s2">")"</span>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.full"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.full">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="n">fill_value</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Returns a vector of length m or matrix of size m rows, n</span>
|
||||||
|
<span class="sd"> columns filled with v.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :param length: length of the vector, e. g. 3</span>
|
||||||
|
<span class="sd"> :type length: int</span>
|
||||||
|
<span class="sd"> :param fill_value: Fill value</span>
|
||||||
|
<span class="sd"> :Type fill_value: scalar</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = vector.full(3, 7)</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [7, 7, 7]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">fill_value</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">length</span><span class="p">)])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.zeros"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.zeros">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">zeros</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Returns a zero vector of length m or matrix of size rows, n</span>
|
||||||
|
<span class="sd"> columns filled with zeros.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :param length: length of the vector, e. g. 3</span>
|
||||||
|
<span class="sd"> :type length: int</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = zeros(3)</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [0.0, 0.0, 0.0]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="mf">0.</span><span class="p">)</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.ones"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.ones">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">ones</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Returns a vector of length m or matrix of size rows, n</span>
|
||||||
|
<span class="sd"> columns filled with ones.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :param length: lhape of the vector, e. g. 3</span>
|
||||||
|
<span class="sd"> :type length: int</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = ones(3)</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [1.0, 1.0, 1.0]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.random"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.random">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">random</span><span class="p">(</span><span class="n">shape</span><span class="p">,</span> <span class="n">lmin</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">lmax</span><span class="o">=</span><span class="mf">1.0</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Returns a random vector of length n or matrix of size m rows, n</span>
|
||||||
|
<span class="sd"> columns filled with random numbers.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> v = random(3)</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [0.9172905912930438, 0.8908124278322492, 0.5256002790725927]</span>
|
||||||
|
<span class="sd"> >>> v = random(3, 1, 2)</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [1.2563665665080803, 1.9270454509964547, 1.2381672401270487]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="kn">import</span> <span class="nn">random</span>
|
||||||
|
<span class="n">dl</span> <span class="o">=</span> <span class="n">lmax</span><span class="o">-</span><span class="n">lmin</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">dl</span><span class="o">*</span><span class="n">random</span><span class="o">.</span><span class="n">random</span><span class="p">()</span><span class="o">+</span><span class="n">lmin</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">shape</span><span class="p">)])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.normalize"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.normalize">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Normalize a vector (i. e. the vector has a length of 1)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \vec{e}_a = \frac{\vec{a}}{|\vec{a}|}</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. seealso::</span>
|
||||||
|
<span class="sd"> :meth:`norm` for a norm (magnitude) of a vector</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">a_mag</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">/</span><span class="n">a_mag</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.ang"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.ang">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">ang</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">acos</span><span class="p">(</span><span class="n">a</span> <span class="o">*</span> <span class="n">b</span> <span class="o">/</span> <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="o">*</span> <span class="nb">abs</span><span class="p">(</span><span class="n">b</span><span class="p">)))</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.conjugate"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.conjugate">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">conjugate</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""</span>
|
||||||
|
<span class="sd"> New vector object</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">conjugate</span><span class="p">()</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.re"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.re">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">re</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Return the real parts of a complex vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">real</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.im"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.im">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">im</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Return the imaginary parts of a complex vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">imag</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.abs"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.abs">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">abs</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Return modulus parts of a complex vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">abs</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.arg"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.arg">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">arg</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Return phase parts of a complex vector</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">math</span><span class="o">.</span><span class="n">atan2</span><span class="p">(</span><span class="n">i</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">real</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.cross"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.cross">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">cross</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Cross product</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type a: list</span>
|
||||||
|
<span class="sd"> :type b: list</span>
|
||||||
|
|
||||||
|
<span class="sd"> c is orthogonal to both a and b.</span>
|
||||||
|
<span class="sd"> The direction of c can be found with the right-hand rule.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \vec{c} = \vec{a} \times \vec{b}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">return</span> <span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
|
||||||
|
<span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span>
|
||||||
|
<span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.xyz"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.xyz">[docs]</a> <span class="k">def</span> <span class="nf">xyz</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.rotate_x"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.rotate_x">[docs]</a> <span class="k">def</span> <span class="nf">rotate_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the x dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \cos \theta & -\sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \sin \theta & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.rotate_y"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.rotate_y">[docs]</a> <span class="k">def</span> <span class="nf">rotate_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the y dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & 0 & \sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> -\sin \theta & 0 & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.rotate_z"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.rotate_z">[docs]</a> <span class="k">def</span> <span class="nf">rotate_z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the z dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & -\sin \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> \sin \theta & \cos \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.translate"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.translate">[docs]</a> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Translation</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & t_x \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & t_y \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.scale"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.scale">[docs]</a> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scaling</span>
|
||||||
|
|
||||||
|
<span class="sd"> uniform scaling if sx=sy=sz=s.</span>
|
||||||
|
<span class="sd"> Note that scaling happens around the origin, so objects not</span>
|
||||||
|
<span class="sd"> centered at the origin will have their centers move. To avoid this,</span>
|
||||||
|
<span class="sd"> either scale the object when it's located at the origin, or</span>
|
||||||
|
<span class="sd"> perform a translation afterwards to move the object back to where</span>
|
||||||
|
<span class="sd"> it should be.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> s_x & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & s_y & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & s_z & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">sy</span><span class="p">:</span>
|
||||||
|
<span class="n">sy</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="n">sz</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">s</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="p">,</span> <span class="n">sz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="vector.ch_cs"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.ch_cs">[docs]</a> <span class="k">def</span> <span class="nf">ch_cs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cs</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Transform this vector from its defined coordinate system to a</span>
|
||||||
|
<span class="sd"> new coordinate system, defined by the given coordinate system (u,</span>
|
||||||
|
<span class="sd"> v and w direction vectors).</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> u_x & u_y & u_z & 0 \\</span>
|
||||||
|
<span class="sd"> v_x & v_y & v_z & 0 \\</span>
|
||||||
|
<span class="sd"> w_x & w_y & w_z & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">cs</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix">[docs]</a><span class="k">class</span> <span class="nc">matrix</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""Use/create matrix like list of lists</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">):</span>
|
||||||
|
<span class="sd">"""</span>
|
||||||
|
<span class="sd"> For index return value, for range return new vector object.</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> m = matrix([[1, 2, 3, 0], [4, 5, 6, 0], [7, 8, 9, 0], [0, 0, 0, 0]])</span>
|
||||||
|
<span class="sd"> >>> print(m[2])</span>
|
||||||
|
<span class="sd"> [7, 8, 9, 0]</span>
|
||||||
|
<span class="sd"> >>> print(m[:,1:3])</span>
|
||||||
|
<span class="sd"> [[2, 3], [5, 6], [8, 9], [0, 0]]</span>
|
||||||
|
<span class="sd"> >>> print(m[0:2,1:3])</span>
|
||||||
|
<span class="sd"> [[2, 3], [5, 6]]</span>
|
||||||
|
<span class="sd"> >>> print(m[::2,::2])</span>
|
||||||
|
<span class="sd"> [[1, 3], [7, 9]]</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="c1"># index: slice(stop), slice(start, stop[, step])</span>
|
||||||
|
<span class="c1"># for e. g. m[(1,3),:] -> index = ((1, 3), slice(None, None, None))</span>
|
||||||
|
<span class="c1"># use the list.__getslice__ method and convert result to vector</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># 2d slicing (tuple of sclices)</span>
|
||||||
|
<span class="n">item</span> <span class="o">=</span> <span class="p">[</span><span class="n">row</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">index</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">index</span><span class="p">[</span><span class="mi">0</span><span class="p">])]</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># 1d slicing</span>
|
||||||
|
<span class="n">item</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
|
||||||
|
<span class="k">return</span> <span class="n">matrix</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="n">item</span>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.rx"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.rx">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation matrix about the x direction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> Rotates the coordinate system of vectors</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> R_{x}(\theta) =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \cos \theta & -\sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \sin \theta & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">s</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="n">c</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="n">T</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([[</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span><span class="o">-</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="n">s</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||||
|
<span class="k">return</span> <span class="n">T</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.ry"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.ry">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation matrix about the y direction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> Rotates the coordinate system of vectors</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> R_{y}(\theta) =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & 0 & \sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> -\sin \theta & 0 & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">s</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="n">c</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="n">T</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([[</span> <span class="n">c</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span><span class="o">-</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||||
|
<span class="k">return</span> <span class="n">T</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.rz"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.rz">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation matrix about the z direction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> Rotates the coordinate system of vectors</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> R_{z}(\theta) =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & -\sin \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> \sin \theta & \cos \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> R_{z}(\theta) \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos 90° & -\sin 90° & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> \sin 90° & \cos 90° & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 0 & -1 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}0 \\ 1 \\ 0 \\ 1\end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">s</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="n">c</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="n">T</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([[</span> <span class="n">c</span><span class="p">,</span><span class="o">-</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="n">s</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||||
|
<span class="k">return</span> <span class="n">T</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.t"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.t">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Translation matrix</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> T =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & t_x \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & t_y \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="n">T</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([[</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span><span class="n">tx</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span><span class="n">ty</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span><span class="n">tz</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||||
|
<span class="k">return</span> <span class="n">T</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.s"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.s">[docs]</a> <span class="nd">@staticmethod</span>
|
||||||
|
<span class="k">def</span> <span class="nf">s</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scaling matrix</span>
|
||||||
|
|
||||||
|
<span class="sd"> uniform scaling if sx=sy=sz=s.</span>
|
||||||
|
<span class="sd"> Note that scaling happens around the origin, so objects not</span>
|
||||||
|
<span class="sd"> centered at the origin will have their centers move. To avoid this,</span>
|
||||||
|
<span class="sd"> either scale the object when it's located at the origin, or</span>
|
||||||
|
<span class="sd"> perform a translation afterwards to move the object back to where</span>
|
||||||
|
<span class="sd"> it should be.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> S =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> s_x & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & s_y & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & s_z & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">sy</span><span class="p">:</span>
|
||||||
|
<span class="n">sy</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="n">sz</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="n">T</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([[</span><span class="n">sx</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="n">sy</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span><span class="n">sz</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||||
|
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||||
|
<span class="k">return</span> <span class="n">T</span></div>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scalar multiplication, dot product (inner product) or</span>
|
||||||
|
<span class="sd"> matrix-vector multiplication.</span>
|
||||||
|
|
||||||
|
<span class="sd"> a * b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type other: scalar, vector (or 1d list), matrix (or 2d list)</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \mathbf{C} &= \mathbf{A} \cdot b \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{A} \cdot \mathbf{b} \\</span>
|
||||||
|
<span class="sd"> \mathbf{C} &= \mathbf{A} \cdot \mathbf{B}</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. note::</span>
|
||||||
|
<span class="sd"> No size checking will be conducted, therefore no exceptions for</span>
|
||||||
|
<span class="sd"> wrong usage (result will be nonsense).</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> m = matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]]) * 5</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60], [0, 0, 0, 5]]</span>
|
||||||
|
<span class="sd"> >>> m = matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]]) * 5.</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[5.0, 10.0, 15.0, 20.0], [25.0, 30.0, 35.0, 40.0], [45.0, 50.0, 55.0, 60.0], [0.0, 0.0, 0.0, 5.0]]</span>
|
||||||
|
<span class="sd"> >>> v = matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) * vector([12, 12, 13])</span>
|
||||||
|
<span class="sd"> >>> print(v)</span>
|
||||||
|
<span class="sd"> [75, 186, 297]</span>
|
||||||
|
<span class="sd"> >>> m = matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) * matrix([[12, 12, 13], [14, 15, 16], [17, 18, 19]])</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[91, 96, 102], [220, 231, 246], [349, 366, 390]]</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. seealso::</span>
|
||||||
|
<span class="sd"> :meth:`__rmul__`</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># matrix * matrix</span>
|
||||||
|
<span class="k">return</span> <span class="n">matrix</span><span class="p">([[</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">a_row</span><span class="p">,</span> <span class="n">b_col</span><span class="p">))</span> <span class="k">for</span> <span class="n">b_col</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">other</span><span class="p">)]</span> <span class="k">for</span> <span class="n">a_row</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># matrix * vector</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">a_row</span><span class="p">,</span> <span class="n">other</span><span class="p">))</span> <span class="k">for</span> <span class="n">a_row</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># matrix * scalar</span>
|
||||||
|
<span class="k">return</span> <span class="n">matrix</span><span class="p">([[</span><span class="n">a</span><span class="o">*</span><span class="n">other</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">a_row</span><span class="p">]</span> <span class="k">for</span> <span class="n">a_row</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__rmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scalar multiplication, dot product (inner product) or</span>
|
||||||
|
<span class="sd"> vector-matrix multiplication.</span>
|
||||||
|
|
||||||
|
<span class="sd"> a * b (new object)</span>
|
||||||
|
|
||||||
|
<span class="sd"> :type other: scalar (or 1d list and 2d list)</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \mathbf{C} &= a \cdot \mathbf{B} \\</span>
|
||||||
|
<span class="sd"> \mathbf{c} &= \mathbf{a} \cdot \mathbf{B} \\</span>
|
||||||
|
<span class="sd"> \mathbf{C} &= \mathbf{A} \cdot \mathbf{B}</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. note::</span>
|
||||||
|
<span class="sd"> No size checking will be conducted, therefore no exceptions for</span>
|
||||||
|
<span class="sd"> wrong usage (result will be nonsense).</span>
|
||||||
|
|
||||||
|
<span class="sd"> :Example:</span>
|
||||||
|
|
||||||
|
<span class="sd"> >>> m = 5 * matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]]) * 5</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60], [0, 0, 0, 5]]</span>
|
||||||
|
<span class="sd"> >>> m = 5. * matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]])</span>
|
||||||
|
<span class="sd"> >>> print(m)</span>
|
||||||
|
<span class="sd"> [[5.0, 10.0, 15.0, 20.0], [25.0, 30.0, 35.0, 40.0], [45.0, 50.0, 55.0, 60.0], [0.0, 0.0, 0.0, 5.0]]</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. seealso::</span>
|
||||||
|
<span class="sd"> :meth:`__mul__`</span>
|
||||||
|
<span class="sd"> :meth:`vector.__mul__` for vector * matrix</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># 2d list * matrix (matrix * matrix see matrix.__mul__)</span>
|
||||||
|
<span class="k">return</span> <span class="n">matrix</span><span class="p">([[</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">a_row</span><span class="p">,</span> <span class="n">b_col</span><span class="p">))</span> <span class="k">for</span> <span class="n">b_col</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="p">)]</span> <span class="k">for</span> <span class="n">a_row</span> <span class="ow">in</span> <span class="n">other</span><span class="p">])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span>
|
||||||
|
<span class="k">try</span><span class="p">:</span> <span class="c1"># 1d list * matrix (vector * matrix see vector.__mul__)</span>
|
||||||
|
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">sum</span><span class="p">(</span><span class="n">c</span><span class="o">*</span><span class="n">d</span> <span class="k">for</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">b_col</span><span class="p">))</span> <span class="k">for</span> <span class="n">b_col</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="p">)])</span>
|
||||||
|
<span class="k">except</span><span class="p">:</span> <span class="c1"># scalar * vector</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span><span class="o">*</span><span class="n">other</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="nb">str</span><span class="p">([</span><span class="o">*</span><span class="bp">self</span><span class="p">])</span>
|
||||||
|
|
||||||
|
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||||
|
<span class="k">return</span> <span class="s2">"matrix("</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s2">")"</span>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.rotate_x"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.rotate_x">[docs]</a> <span class="k">def</span> <span class="nf">rotate_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the x dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx' & yy' & yz' & t_y' \\</span>
|
||||||
|
<span class="sd"> zx' & zy' & zz' & t_z' \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \cos \theta & -\sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & \sin \theta & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.rotate_y"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.rotate_y">[docs]</a> <span class="k">def</span> <span class="nf">rotate_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the y dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx' & xy' & xz' & t_x' \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx' & zy' & zz' & t_z' \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & 0 & \sin \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> -\sin \theta & 0 & \cos \theta & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.rotate_z"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.rotate_z">[docs]</a> <span class="k">def</span> <span class="nf">rotate_z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Rotation about the z dirction.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx' & xy' & xz' & t_x' \\</span>
|
||||||
|
<span class="sd"> yx' & yy' & yz' & t_y' \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> \cos \theta & -\sin \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> \sin \theta & \cos \theta & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.translate"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.translate">[docs]</a> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Translation</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x' \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y' \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z' \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> 1 & 0 & 0 & t_x \\</span>
|
||||||
|
<span class="sd"> 0 & 1 & 0 & t_y \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 1 & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div>
|
||||||
|
|
||||||
|
<div class="viewcode-block" id="matrix.scale"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.scale">[docs]</a> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||||
|
<span class="sa">r</span><span class="sd">"""Scaling</span>
|
||||||
|
|
||||||
|
<span class="sd"> uniform scaling if sx=sy=sz=s.</span>
|
||||||
|
<span class="sd"> Note that scaling happens around the origin, so objects not</span>
|
||||||
|
<span class="sd"> centered at the origin will have their centers move. To avoid this,</span>
|
||||||
|
<span class="sd"> either scale the object when it's located at the origin, or</span>
|
||||||
|
<span class="sd"> perform a translation afterwards to move the object back to where</span>
|
||||||
|
<span class="sd"> it should be.</span>
|
||||||
|
|
||||||
|
<span class="sd"> .. math::</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx' & xy' & xz' & t_x' \\</span>
|
||||||
|
<span class="sd"> yx' & yy' & yz' & t_y' \\</span>
|
||||||
|
<span class="sd"> zx' & zy' & zz' & t_z' \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix} =</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> s_x & 0 & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & s_y & 0 & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & s_z & 0 \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & 1</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> \begin{bmatrix}</span>
|
||||||
|
<span class="sd"> xx & xy & xz & t_x \\</span>
|
||||||
|
<span class="sd"> yx & yy & yz & t_y \\</span>
|
||||||
|
<span class="sd"> zx & zy & zz & t_z \\</span>
|
||||||
|
<span class="sd"> 0 & 0 & 0 & h</span>
|
||||||
|
<span class="sd"> \end{bmatrix}</span>
|
||||||
|
<span class="sd"> """</span>
|
||||||
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">sy</span><span class="p">:</span>
|
||||||
|
<span class="n">sy</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="n">sz</span> <span class="o">=</span> <span class="n">sx</span>
|
||||||
|
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">s</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="p">,</span> <span class="n">sz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
|
||||||
|
<span class="k">return</span> <span class="bp">self</span></div></div>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -45,9 +45,9 @@
|
|||||||
|
|
||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">print_function</span>
|
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
|
||||||
<span class="kn">from</span> <span class="nn">pylab</span> <span class="k">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">argmax</span><span class="p">,</span> <span class="n">gradient</span><span class="p">,</span> <span class="n">exp</span><span class="p">,</span> <span class="n">sqrt</span><span class="p">,</span> <span class="n">log</span><span class="p">,</span> <span class="n">linspace</span>
|
<span class="kn">from</span> <span class="nn">pylab</span> <span class="kn">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">argmax</span><span class="p">,</span> <span class="n">gradient</span><span class="p">,</span> <span class="n">exp</span><span class="p">,</span> <span class="n">sqrt</span><span class="p">,</span> <span class="n">log</span><span class="p">,</span> <span class="n">linspace</span>
|
||||||
<span class="kn">from</span> <span class="nn">scipy.optimize</span> <span class="k">import</span> <span class="n">curve_fit</span>
|
<span class="kn">from</span> <span class="nn">scipy.optimize</span> <span class="kn">import</span> <span class="n">curve_fit</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="gauss"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.fit.gauss">[docs]</a><span class="k">def</span> <span class="nf">gauss</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
<div class="viewcode-block" id="gauss"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.fit.gauss">[docs]</a><span class="k">def</span> <span class="nf">gauss</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
||||||
<span class="sd">"""Gauss distribution function.</span>
|
<span class="sd">"""Gauss distribution function.</span>
|
||||||
|
|||||||
@@ -47,8 +47,8 @@
|
|||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
|
|
||||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span>
|
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span>
|
||||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="k">import</span> <span class="n">linspace</span><span class="p">,</span> <span class="n">trapz</span><span class="p">,</span> <span class="n">zeros</span>
|
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">linspace</span><span class="p">,</span> <span class="n">trapz</span><span class="p">,</span> <span class="n">zeros</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="trapez"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.integration.trapez">[docs]</a><span class="k">def</span> <span class="nf">trapez</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">N</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
<div class="viewcode-block" id="trapez"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.integration.trapez">[docs]</a><span class="k">def</span> <span class="nf">trapez</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">N</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||||
<span class="n">save_values</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
<span class="n">save_values</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||||
|
|||||||
@@ -49,9 +49,9 @@
|
|||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
|
|
||||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
|
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
|
||||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="k">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">isnan</span><span class="p">,</span> <span class="nb">sum</span><span class="p">,</span> <span class="n">zeros</span><span class="p">,</span> <span class="n">dot</span>
|
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">isnan</span><span class="p">,</span> <span class="nb">sum</span><span class="p">,</span> <span class="n">zeros</span><span class="p">,</span> <span class="n">dot</span>
|
||||||
<span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="k">import</span> <span class="n">norm</span><span class="p">,</span> <span class="n">inv</span>
|
<span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="kn">import</span> <span class="n">norm</span><span class="p">,</span> <span class="n">inv</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="e1"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode.e1">[docs]</a><span class="k">def</span> <span class="nf">e1</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
<div class="viewcode-block" id="e1"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode.e1">[docs]</a><span class="k">def</span> <span class="nf">e1</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||||
<span class="sa">r</span><span class="sd">"""Explicit first-order method /</span>
|
<span class="sa">r</span><span class="sd">"""Explicit first-order method /</span>
|
||||||
|
|||||||
@@ -48,9 +48,9 @@
|
|||||||
|
|
||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
|
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
|
||||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="k">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">cos</span><span class="p">,</span> <span class="n">sin</span><span class="p">,</span> <span class="n">dot</span><span class="p">,</span> <span class="n">square</span>
|
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">cos</span><span class="p">,</span> <span class="n">sin</span><span class="p">,</span> <span class="n">dot</span><span class="p">,</span> <span class="n">square</span>
|
||||||
<span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="k">import</span> <span class="n">inv</span>
|
<span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="kn">import</span> <span class="n">inv</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="disk"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode_model.disk">[docs]</a><span class="k">def</span> <span class="nf">disk</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
<div class="viewcode-block" id="disk"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode_model.disk">[docs]</a><span class="k">def</span> <span class="nf">disk</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
||||||
<span class="sd">"""Rotation of an eccentric disk.</span>
|
<span class="sd">"""Rotation of an eccentric disk.</span>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
<span class="sd"> </span>
|
<span class="sd"> </span>
|
||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">from</span> <span class="nn">time</span> <span class="k">import</span> <span class="n">struct_time</span><span class="p">,</span> <span class="n">mktime</span>
|
<span class="kn">from</span> <span class="nn">time</span> <span class="kn">import</span> <span class="n">struct_time</span><span class="p">,</span> <span class="n">mktime</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="in_seconds"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.in_seconds">[docs]</a><span class="k">def</span> <span class="nf">in_seconds</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
<div class="viewcode-block" id="in_seconds"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.in_seconds">[docs]</a><span class="k">def</span> <span class="nf">in_seconds</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||||
<span class="sd">"""If time is `time.struct_time` convert to float seconds.</span>
|
<span class="sd">"""If time is `time.struct_time` convert to float seconds.</span>
|
||||||
@@ -164,7 +164,7 @@
|
|||||||
<span class="k">return</span> <span class="n">time_norm</span><span class="o">*</span><span class="n">length</span> <span class="o">+</span> <span class="n">offset</span></div>
|
<span class="k">return</span> <span class="n">time_norm</span><span class="o">*</span><span class="n">length</span> <span class="o">+</span> <span class="n">offset</span></div>
|
||||||
|
|
||||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
||||||
<span class="kn">from</span> <span class="nn">time</span> <span class="k">import</span> <span class="n">time</span><span class="p">,</span> <span class="n">gmtime</span><span class="p">,</span> <span class="n">localtime</span>
|
<span class="kn">from</span> <span class="nn">time</span> <span class="kn">import</span> <span class="n">time</span><span class="p">,</span> <span class="n">gmtime</span><span class="p">,</span> <span class="n">localtime</span>
|
||||||
<span class="c1"># time in seconds</span>
|
<span class="c1"># time in seconds</span>
|
||||||
<span class="n">t</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
|
<span class="n">t</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
|
||||||
<span class="nb">min</span> <span class="o">=</span> <span class="n">minutes</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
<span class="nb">min</span> <span class="o">=</span> <span class="n">minutes</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||||
|
|||||||
4
docs/build/html/_modules/time_of_day.html
vendored
4
docs/build/html/_modules/time_of_day.html
vendored
@@ -45,7 +45,7 @@
|
|||||||
<span class="sd"> </span>
|
<span class="sd"> </span>
|
||||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||||
<span class="sd">"""</span>
|
<span class="sd">"""</span>
|
||||||
<span class="kn">from</span> <span class="nn">time</span> <span class="k">import</span> <span class="n">struct_time</span><span class="p">,</span> <span class="n">mktime</span>
|
<span class="kn">from</span> <span class="nn">time</span> <span class="kn">import</span> <span class="n">struct_time</span><span class="p">,</span> <span class="n">mktime</span>
|
||||||
|
|
||||||
<div class="viewcode-block" id="in_seconds"><a class="viewcode-back" href="../time_of_day.html#time_of_day.in_seconds">[docs]</a><span class="k">def</span> <span class="nf">in_seconds</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
<div class="viewcode-block" id="in_seconds"><a class="viewcode-back" href="../time_of_day.html#time_of_day.in_seconds">[docs]</a><span class="k">def</span> <span class="nf">in_seconds</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||||
<span class="sd">"""If time is `time.struct_time` convert to float seconds.</span>
|
<span class="sd">"""If time is `time.struct_time` convert to float seconds.</span>
|
||||||
@@ -164,7 +164,7 @@
|
|||||||
<span class="k">return</span> <span class="n">time_norm</span><span class="o">*</span><span class="n">length</span> <span class="o">+</span> <span class="n">offset</span></div>
|
<span class="k">return</span> <span class="n">time_norm</span><span class="o">*</span><span class="n">length</span> <span class="o">+</span> <span class="n">offset</span></div>
|
||||||
|
|
||||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
||||||
<span class="kn">from</span> <span class="nn">time</span> <span class="k">import</span> <span class="n">time</span><span class="p">,</span> <span class="n">gmtime</span><span class="p">,</span> <span class="n">localtime</span>
|
<span class="kn">from</span> <span class="nn">time</span> <span class="kn">import</span> <span class="n">time</span><span class="p">,</span> <span class="n">gmtime</span><span class="p">,</span> <span class="n">localtime</span>
|
||||||
<span class="c1"># time in seconds</span>
|
<span class="c1"># time in seconds</span>
|
||||||
<span class="n">t</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
|
<span class="n">t</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
|
||||||
<span class="nb">min</span> <span class="o">=</span> <span class="n">minutes</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
<span class="nb">min</span> <span class="o">=</span> <span class="n">minutes</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||||
|
|||||||
9
docs/build/html/_sources/modules.rst.txt
vendored
9
docs/build/html/_sources/modules.rst.txt
vendored
@@ -4,11 +4,4 @@ pylib
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 4
|
:maxdepth: 4
|
||||||
|
|
||||||
data
|
pylib
|
||||||
date
|
|
||||||
function
|
|
||||||
geometry
|
|
||||||
geometry_plot
|
|
||||||
mathematics
|
|
||||||
numerical
|
|
||||||
time_of_day
|
|
||||||
|
|||||||
8
docs/build/html/_sources/pylib.rst.txt
vendored
8
docs/build/html/_sources/pylib.rst.txt
vendored
@@ -27,6 +27,14 @@ pylib.date module
|
|||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
|
pylib.drawblock module
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
.. automodule:: pylib.drawblock
|
||||||
|
:members:
|
||||||
|
:undoc-members:
|
||||||
|
:show-inheritance:
|
||||||
|
|
||||||
pylib.function module
|
pylib.function module
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
|||||||
2
docs/build/html/function.html
vendored
2
docs/build/html/function.html
vendored
@@ -37,7 +37,7 @@
|
|||||||
<p>Mathematical equations.</p>
|
<p>Mathematical equations.</p>
|
||||||
<dl class="field-list simple">
|
<dl class="field-list simple">
|
||||||
<dt class="field-odd">Date</dt>
|
<dt class="field-odd">Date</dt>
|
||||||
<dd class="field-odd"><p>2019-11-04</p>
|
<dd class="field-odd"><p>2019-11-15</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<span class="target" id="module-function"></span><dl class="function">
|
<span class="target" id="module-function"></span><dl class="function">
|
||||||
|
|||||||
123
docs/build/html/genindex.html
vendored
123
docs/build/html/genindex.html
vendored
@@ -54,12 +54,19 @@
|
|||||||
| <a href="#S"><strong>S</strong></a>
|
| <a href="#S"><strong>S</strong></a>
|
||||||
| <a href="#T"><strong>T</strong></a>
|
| <a href="#T"><strong>T</strong></a>
|
||||||
| <a href="#U"><strong>U</strong></a>
|
| <a href="#U"><strong>U</strong></a>
|
||||||
|
| <a href="#V"><strong>V</strong></a>
|
||||||
| <a href="#W"><strong>W</strong></a>
|
| <a href="#W"><strong>W</strong></a>
|
||||||
|
| <a href="#X"><strong>X</strong></a>
|
||||||
|
| <a href="#Z"><strong>Z</strong></a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<h2 id="A">A</h2>
|
<h2 id="A">A</h2>
|
||||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.abs">abs() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.abs">[1]</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.ang">ang() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.ang">[1]</a>
|
||||||
|
</li>
|
||||||
<li><a href="geometry.html#geometry.angle">angle() (in module geometry)</a>
|
<li><a href="geometry.html#geometry.angle">angle() (in module geometry)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@@ -68,6 +75,8 @@
|
|||||||
</ul></li>
|
</ul></li>
|
||||||
</ul></td>
|
</ul></td>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.arg">arg() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.arg">[1]</a>
|
||||||
|
</li>
|
||||||
<li><a href="date.html#date.ascension_of_jesus">ascension_of_jesus() (in module date)</a>
|
<li><a href="date.html#date.ascension_of_jesus">ascension_of_jesus() (in module date)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@@ -80,20 +89,26 @@
|
|||||||
<h2 id="C">C</h2>
|
<h2 id="C">C</h2>
|
||||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.ch_cs">ch_cs() (vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.ch_cs">[1]</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.conjugate">conjugate() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.conjugate">[1]</a>
|
||||||
|
</li>
|
||||||
<li><a href="function.html#function.cosine_wave">cosine_wave() (in module function)</a>
|
<li><a href="function.html#function.cosine_wave">cosine_wave() (in module function)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="pylib.html#pylib.function.cosine_wave">(in module pylib.function)</a>
|
<li><a href="pylib.html#pylib.function.cosine_wave">(in module pylib.function)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.cross">cross() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.cross">[1]</a>
|
||||||
|
</li>
|
||||||
|
</ul></td>
|
||||||
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
<li><a href="geometry.html#geometry.cubic">cubic() (in module geometry)</a>
|
<li><a href="geometry.html#geometry.cubic">cubic() (in module geometry)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="pylib.html#pylib.geometry.cubic">(in module pylib.geometry)</a>
|
<li><a href="pylib.html#pylib.geometry.cubic">(in module pylib.geometry)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul></td>
|
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
|
||||||
<li><a href="geometry.html#geometry.cubic_deg">cubic_deg() (in module geometry)</a>
|
<li><a href="geometry.html#geometry.cubic_deg">cubic_deg() (in module geometry)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@@ -226,6 +241,8 @@
|
|||||||
<li><a href="pylib.numerical.html#pylib.numerical.ode.fpi">(in module pylib.numerical.ode)</a>
|
<li><a href="pylib.numerical.html#pylib.numerical.ode.fpi">(in module pylib.numerical.ode)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.full">full() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.full">[1]</a>
|
||||||
|
</li>
|
||||||
<li><a href="function.html#module-function">function (module)</a>, <a href="function.html#module-function">[1]</a>, <a href="pylib.html#module-function">[2]</a>
|
<li><a href="function.html#module-function">function (module)</a>, <a href="function.html#module-function">[1]</a>, <a href="pylib.html#module-function">[2]</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></td>
|
</ul></td>
|
||||||
@@ -270,20 +287,22 @@
|
|||||||
<h2 id="H">H</h2>
|
<h2 id="H">H</h2>
|
||||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="pylib.html#pylib.drawblock.histogram">histogram() (in module pylib.drawblock)</a>
|
||||||
|
</li>
|
||||||
<li><a href="pylib.html#pylib.time_of_day.hours">hours() (in module pylib.time_of_day)</a>
|
<li><a href="pylib.html#pylib.time_of_day.hours">hours() (in module pylib.time_of_day)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="time_of_day.html#time_of_day.hours">(in module time_of_day)</a>
|
<li><a href="time_of_day.html#time_of_day.hours">(in module time_of_day)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
</ul></td>
|
||||||
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
<li><a href="pylib.html#pylib.time_of_day.hours_norm">hours_norm() (in module pylib.time_of_day)</a>
|
<li><a href="pylib.html#pylib.time_of_day.hours_norm">hours_norm() (in module pylib.time_of_day)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="time_of_day.html#time_of_day.hours_norm">(in module time_of_day)</a>
|
<li><a href="time_of_day.html#time_of_day.hours_norm">(in module time_of_day)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul></td>
|
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
|
||||||
<li><a href="function.html#function.hypotrochoid">hypotrochoid() (in module function)</a>
|
<li><a href="function.html#function.hypotrochoid">hypotrochoid() (in module function)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@@ -302,6 +321,8 @@
|
|||||||
<li><a href="pylib.numerical.html#pylib.numerical.ode.i1">(in module pylib.numerical.ode)</a>
|
<li><a href="pylib.numerical.html#pylib.numerical.ode.i1">(in module pylib.numerical.ode)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.im">im() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.im">[1]</a>
|
||||||
|
</li>
|
||||||
<li><a href="pylib.html#pylib.time_of_day.in_seconds">in_seconds() (in module pylib.time_of_day)</a>
|
<li><a href="pylib.html#pylib.time_of_day.in_seconds">in_seconds() (in module pylib.time_of_day)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@@ -358,14 +379,20 @@
|
|||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
<li><a href="mathematics.html#module-mathematics">mathematics (module)</a>, <a href="mathematics.html#module-mathematics">[1]</a>, <a href="pylib.html#module-mathematics">[2]</a>
|
<li><a href="mathematics.html#module-mathematics">mathematics (module)</a>, <a href="mathematics.html#module-mathematics">[1]</a>, <a href="pylib.html#module-mathematics">[2]</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix">matrix (class in mathematics)</a>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="pylib.html#pylib.mathematics.matrix">(class in pylib.mathematics)</a>
|
||||||
|
</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul></td>
|
||||||
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
<li><a href="pylib.html#pylib.time_of_day.minutes">minutes() (in module pylib.time_of_day)</a>
|
<li><a href="pylib.html#pylib.time_of_day.minutes">minutes() (in module pylib.time_of_day)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="time_of_day.html#time_of_day.minutes">(in module time_of_day)</a>
|
<li><a href="time_of_day.html#time_of_day.minutes">(in module time_of_day)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul></td>
|
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
|
||||||
<li><a href="pylib.html#pylib.time_of_day.minutes_norm">minutes_norm() (in module pylib.time_of_day)</a>
|
<li><a href="pylib.html#pylib.time_of_day.minutes_norm">minutes_norm() (in module pylib.time_of_day)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@@ -390,6 +417,8 @@
|
|||||||
<li><a href="pylib.numerical.html#pylib.numerical.ode.newmark_newtonraphson_rdk">(in module pylib.numerical.ode)</a>
|
<li><a href="pylib.numerical.html#pylib.numerical.ode.newmark_newtonraphson_rdk">(in module pylib.numerical.ode)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.normalize">normalize() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.normalize">[1]</a>
|
||||||
|
</li>
|
||||||
</ul></td>
|
</ul></td>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
<li><a href="numerical.html#module-numerical">numerical (module)</a>
|
<li><a href="numerical.html#module-numerical">numerical (module)</a>
|
||||||
@@ -413,6 +442,8 @@
|
|||||||
</ul></td>
|
</ul></td>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
<li><a href="numerical.html#module-ode_model">ode_model (module)</a>, <a href="pylib.numerical.html#module-ode_model">[1]</a>
|
<li><a href="numerical.html#module-ode_model">ode_model (module)</a>, <a href="pylib.numerical.html#module-ode_model">[1]</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.ones">ones() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.ones">[1]</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></td>
|
</ul></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
@@ -443,6 +474,8 @@
|
|||||||
<li><a href="pylib.html#module-pylib.data">pylib.data (module)</a>
|
<li><a href="pylib.html#module-pylib.data">pylib.data (module)</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="pylib.html#module-pylib.date">pylib.date (module)</a>
|
<li><a href="pylib.html#module-pylib.date">pylib.date (module)</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="pylib.html#module-pylib.drawblock">pylib.drawblock (module)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></td>
|
</ul></td>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
@@ -472,6 +505,10 @@
|
|||||||
<h2 id="R">R</h2>
|
<h2 id="R">R</h2>
|
||||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.random">random() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.random">[1]</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.re">re() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.re">[1]</a>
|
||||||
|
</li>
|
||||||
<li><a href="data.html#data.read">read() (in module data)</a>
|
<li><a href="data.html#data.read">read() (in module data)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@@ -490,12 +527,18 @@
|
|||||||
<li><a href="pylib.html#pylib.geometry.rotate">(in module pylib.geometry)</a>
|
<li><a href="pylib.html#pylib.geometry.rotate">(in module pylib.geometry)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul></td>
|
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
|
||||||
<li><a href="geometry.html#geometry.rotate_deg">rotate_deg() (in module geometry)</a>
|
<li><a href="geometry.html#geometry.rotate_deg">rotate_deg() (in module geometry)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="pylib.html#pylib.geometry.rotate_deg">(in module pylib.geometry)</a>
|
<li><a href="pylib.html#pylib.geometry.rotate_deg">(in module pylib.geometry)</a>
|
||||||
|
</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul></td>
|
||||||
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix.rotate_x">rotate_x() (matrix method)</a>, <a href="pylib.html#pylib.mathematics.matrix.rotate_x">[1]</a>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.rotate_x">(vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.rotate_x">[1]</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
<li><a href="geometry.html#geometry.rotate_xy">rotate_xy() (in module geometry)</a>
|
<li><a href="geometry.html#geometry.rotate_xy">rotate_xy() (in module geometry)</a>
|
||||||
@@ -504,12 +547,38 @@
|
|||||||
<li><a href="pylib.html#pylib.geometry.rotate_xy">(in module pylib.geometry)</a>
|
<li><a href="pylib.html#pylib.geometry.rotate_xy">(in module pylib.geometry)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix.rotate_y">rotate_y() (matrix method)</a>, <a href="pylib.html#pylib.mathematics.matrix.rotate_y">[1]</a>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.rotate_y">(vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.rotate_y">[1]</a>
|
||||||
|
</li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix.rotate_z">rotate_z() (matrix method)</a>, <a href="pylib.html#pylib.mathematics.matrix.rotate_z">[1]</a>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.rotate_z">(vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.rotate_z">[1]</a>
|
||||||
|
</li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix.rx">rx() (matrix static method)</a>, <a href="pylib.html#pylib.mathematics.matrix.rx">[1]</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix.ry">ry() (matrix static method)</a>, <a href="pylib.html#pylib.mathematics.matrix.ry">[1]</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix.rz">rz() (matrix static method)</a>, <a href="pylib.html#pylib.mathematics.matrix.rz">[1]</a>
|
||||||
|
</li>
|
||||||
</ul></td>
|
</ul></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
|
||||||
<h2 id="S">S</h2>
|
<h2 id="S">S</h2>
|
||||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix.s">s() (matrix static method)</a>, <a href="pylib.html#pylib.mathematics.matrix.s">[1]</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix.scale">scale() (matrix method)</a>, <a href="pylib.html#pylib.mathematics.matrix.scale">[1]</a>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.scale">(vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.scale">[1]</a>
|
||||||
|
</li>
|
||||||
|
</ul></li>
|
||||||
<li><a href="pylib.html#pylib.time_of_day.seconds">seconds() (in module pylib.time_of_day)</a>
|
<li><a href="pylib.html#pylib.time_of_day.seconds">seconds() (in module pylib.time_of_day)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@@ -522,14 +591,14 @@
|
|||||||
<li><a href="time_of_day.html#time_of_day.seconds_norm">(in module time_of_day)</a>
|
<li><a href="time_of_day.html#time_of_day.seconds_norm">(in module time_of_day)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
</ul></td>
|
||||||
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
<li><a href="data.html#data.seq">seq() (in module data)</a>
|
<li><a href="data.html#data.seq">seq() (in module data)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="pylib.html#pylib.data.seq">(in module pylib.data)</a>
|
<li><a href="pylib.html#pylib.data.seq">(in module pylib.data)</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul></td>
|
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
|
||||||
<li><a href="function.html#function.sine_wave">sine_wave() (in module function)</a>
|
<li><a href="function.html#function.sine_wave">sine_wave() (in module function)</a>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@@ -554,6 +623,8 @@
|
|||||||
<h2 id="T">T</h2>
|
<h2 id="T">T</h2>
|
||||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix.t">t() (matrix static method)</a>, <a href="pylib.html#pylib.mathematics.matrix.t">[1]</a>
|
||||||
|
</li>
|
||||||
<li><a href="pylib.html#module-time_of_day">time_of_day (module)</a>, <a href="time_of_day.html#module-time_of_day">[1]</a>, <a href="time_of_day.html#module-time_of_day">[2]</a>
|
<li><a href="pylib.html#module-time_of_day">time_of_day (module)</a>, <a href="time_of_day.html#module-time_of_day">[1]</a>, <a href="time_of_day.html#module-time_of_day">[2]</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="function.html#function.to_str">to_str() (in module function)</a>
|
<li><a href="function.html#function.to_str">to_str() (in module function)</a>
|
||||||
@@ -580,6 +651,10 @@
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="pylib.html#pylib.geometry.translate">(in module pylib.geometry)</a>
|
<li><a href="pylib.html#pylib.geometry.translate">(in module pylib.geometry)</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="mathematics.html#mathematics.matrix.translate">(matrix method)</a>, <a href="pylib.html#pylib.mathematics.matrix.translate">[1]</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.translate">(vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.translate">[1]</a>
|
||||||
</li>
|
</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
<li><a href="geometry.html#geometry.translate_xy">translate_xy() (in module geometry)</a>
|
<li><a href="geometry.html#geometry.translate_xy">translate_xy() (in module geometry)</a>
|
||||||
@@ -609,6 +684,18 @@
|
|||||||
</ul></td>
|
</ul></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
|
||||||
|
<h2 id="V">V</h2>
|
||||||
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector">vector (class in mathematics)</a>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="pylib.html#pylib.mathematics.vector">(class in pylib.mathematics)</a>
|
||||||
|
</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul></td>
|
||||||
|
</tr></table>
|
||||||
|
|
||||||
<h2 id="W">W</h2>
|
<h2 id="W">W</h2>
|
||||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
<td style="width: 33%; vertical-align: top;"><ul>
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
@@ -621,6 +708,22 @@
|
|||||||
</ul></td>
|
</ul></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
|
||||||
|
<h2 id="X">X</h2>
|
||||||
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.xyz">xyz() (vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.xyz">[1]</a>
|
||||||
|
</li>
|
||||||
|
</ul></td>
|
||||||
|
</tr></table>
|
||||||
|
|
||||||
|
<h2 id="Z">Z</h2>
|
||||||
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
|
<td style="width: 33%; vertical-align: top;"><ul>
|
||||||
|
<li><a href="mathematics.html#mathematics.vector.zeros">zeros() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.zeros">[1]</a>
|
||||||
|
</li>
|
||||||
|
</ul></td>
|
||||||
|
</tr></table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
560
docs/build/html/mathematics.html
vendored
560
docs/build/html/mathematics.html
vendored
@@ -34,10 +34,10 @@
|
|||||||
|
|
||||||
<div class="section" id="module-mathematics">
|
<div class="section" id="module-mathematics">
|
||||||
<span id="mathematics-module"></span><h1>mathematics module<a class="headerlink" href="#module-mathematics" title="Permalink to this headline">¶</a></h1>
|
<span id="mathematics-module"></span><h1>mathematics module<a class="headerlink" href="#module-mathematics" title="Permalink to this headline">¶</a></h1>
|
||||||
<p>Mathematical functions.</p>
|
<p>Mathematical functions and objects.</p>
|
||||||
<dl class="field-list simple">
|
<dl class="field-list simple">
|
||||||
<dt class="field-odd">Date</dt>
|
<dt class="field-odd">Date</dt>
|
||||||
<dd class="field-odd"><p>2019-10-30</p>
|
<dd class="field-odd"><p>2019-12-12</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<span class="target" id="module-mathematics"></span><dl class="function">
|
<span class="target" id="module-mathematics"></span><dl class="function">
|
||||||
@@ -46,6 +46,562 @@
|
|||||||
<dd><p>Compute the lowest common multiple of a and b</p>
|
<dd><p>Compute the lowest common multiple of a and b</p>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="class">
|
||||||
|
<dt id="mathematics.matrix">
|
||||||
|
<em class="property">class </em><code class="sig-name descname">matrix</code><a class="reference internal" href="_modules/mathematics.html#matrix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p>
|
||||||
|
<p>Use/create matrix like list of lists</p>
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.matrix.rotate_x">
|
||||||
|
<code class="sig-name descname">rotate_x</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.rotate_x" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the x dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx' & yy' & yz' & t_y' \\
|
||||||
|
zx' & zy' & zz' & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & \cos \theta & -\sin \theta & 0 \\
|
||||||
|
0 & \sin \theta & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.matrix.rotate_y">
|
||||||
|
<code class="sig-name descname">rotate_y</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.rotate_y" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the y dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}
|
||||||
|
xx' & xy' & xz' & t_x' \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx' & zy' & zz' & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & 0 & \sin \theta & 0 \\
|
||||||
|
0 & 1 & 0 & 0 \\
|
||||||
|
-\sin \theta & 0 & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.matrix.rotate_z">
|
||||||
|
<code class="sig-name descname">rotate_z</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.rotate_z" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the z dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}
|
||||||
|
xx' & xy' & xz' & t_x' \\
|
||||||
|
yx' & yy' & yz' & t_y' \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & -\sin \theta & 0 & 0 \\
|
||||||
|
\sin \theta & \cos \theta & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.matrix.rx">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">rx</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.rx"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.rx" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation matrix about the x direction.</p>
|
||||||
|
<p>Rotates the coordinate system of vectors</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}R_{x}(\theta) =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & \cos \theta & -\sin \theta & 0 \\
|
||||||
|
0 & \sin \theta & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.matrix.ry">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">ry</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.ry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.ry" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation matrix about the y direction.</p>
|
||||||
|
<p>Rotates the coordinate system of vectors</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}R_{y}(\theta) =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & 0 & \sin \theta & 0 \\
|
||||||
|
0 & 1 & 0 & 0 \\
|
||||||
|
-\sin \theta & 0 & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.matrix.rz">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">rz</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.rz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.rz" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation matrix about the z direction.</p>
|
||||||
|
<p>Rotates the coordinate system of vectors</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}R_{z}(\theta) =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & -\sin \theta & 0 & 0 \\
|
||||||
|
\sin \theta & \cos \theta & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
<dt class="field-odd">Example</dt>
|
||||||
|
<dd class="field-odd"><p></p></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}R_{z}(\theta) \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos 90° & -\sin 90° & 0 & 0 \\
|
||||||
|
\sin 90° & \cos 90° & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
0 & -1 & 0 & 0 \\
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =
|
||||||
|
\begin{bmatrix}0 \\ 1 \\ 0 \\ 1\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.matrix.s">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">s</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.s"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.s" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Scaling matrix</p>
|
||||||
|
<p>uniform scaling if sx=sy=sz=s.
|
||||||
|
Note that scaling happens around the origin, so objects not
|
||||||
|
centered at the origin will have their centers move. To avoid this,
|
||||||
|
either scale the object when it’s located at the origin, or
|
||||||
|
perform a translation afterwards to move the object back to where
|
||||||
|
it should be.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}S =
|
||||||
|
\begin{bmatrix}
|
||||||
|
s_x & 0 & 0 & 0 \\
|
||||||
|
0 & s_y & 0 & 0 \\
|
||||||
|
0 & 0 & s_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.matrix.scale">
|
||||||
|
<code class="sig-name descname">scale</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.scale" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Scaling</p>
|
||||||
|
<p>uniform scaling if sx=sy=sz=s.
|
||||||
|
Note that scaling happens around the origin, so objects not
|
||||||
|
centered at the origin will have their centers move. To avoid this,
|
||||||
|
either scale the object when it’s located at the origin, or
|
||||||
|
perform a translation afterwards to move the object back to where
|
||||||
|
it should be.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}
|
||||||
|
xx' & xy' & xz' & t_x' \\
|
||||||
|
yx' & yy' & yz' & t_y' \\
|
||||||
|
zx' & zy' & zz' & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
s_x & 0 & 0 & 0 \\
|
||||||
|
0 & s_y & 0 & 0 \\
|
||||||
|
0 & 0 & s_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.matrix.t">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">t</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.t"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.t" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Translation matrix</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}T =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & t_x \\
|
||||||
|
0 & 1 & 0 & t_y \\
|
||||||
|
0 & 0 & 1 & t_z \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.matrix.translate">
|
||||||
|
<code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.translate" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Translation</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x' \\
|
||||||
|
yx & yy & yz & t_y' \\
|
||||||
|
zx & zy & zz & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & t_x \\
|
||||||
|
0 & 1 & 0 & t_y \\
|
||||||
|
0 & 0 & 1 & t_z \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="class">
|
||||||
|
<dt id="mathematics.vector">
|
||||||
|
<em class="property">class </em><code class="sig-name descname">vector</code><a class="reference internal" href="_modules/mathematics.html#vector"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p>
|
||||||
|
<p>Use/create vector like lists</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><p>size -> len(a)</p></li>
|
||||||
|
<li><p>abs -> abs(a)</p></li>
|
||||||
|
<li><p>dot -> a * b</p></li>
|
||||||
|
<li><p>outer -> a @ b</p></li>
|
||||||
|
</ul>
|
||||||
|
<p>use super constructor</p>
|
||||||
|
<p>use super __iter__</p>
|
||||||
|
<p>use super __setitem__</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v</span><span class="p">[</span><span class="mi">3</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">]</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[1, 2, 3, 1, 2]</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">vector</span><span class="p">)</span>
|
||||||
|
<span class="go">True</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>use super __lt__(a, b)</p>
|
||||||
|
<p>use super __le__(a, b)</p>
|
||||||
|
<p>use super __eq__(a, b)</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v2</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v</span> <span class="o">==</span> <span class="n">v2</span>
|
||||||
|
<span class="go">True</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>use super __ne__(a, b)</p>
|
||||||
|
<p>use super __ge__(a, b)</p>
|
||||||
|
<p>use super __gt__(a, b)</p>
|
||||||
|
<p>use super __contains__</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">2</span> <span class="ow">in</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="go">True</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>__isub__</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v</span> <span class="o">-=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[-2, -1, 0]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>__imul__</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v</span> <span class="o">*=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">18</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>__imatmul__</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">m</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">m</span> <span class="o">*=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[[3, 3, 3], [6, 6, 6], [9, 9, 9]]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.abs">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">abs</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.abs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.abs" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Return modulus parts of a complex vector</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.ang">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">ang</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.ang"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.ang" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd></dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.arg">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">arg</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.arg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.arg" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Return phase parts of a complex vector</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.ch_cs">
|
||||||
|
<code class="sig-name descname">ch_cs</code><span class="sig-paren">(</span><em class="sig-param">cs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.ch_cs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.ch_cs" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Transform this vector from its defined coordinate system to a
|
||||||
|
new coordinate system, defined by the given coordinate system (u,
|
||||||
|
v and w direction vectors).</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
u_x & u_y & u_z & 0 \\
|
||||||
|
v_x & v_y & v_z & 0 \\
|
||||||
|
w_x & w_y & w_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.conjugate">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">conjugate</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.conjugate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.conjugate" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>New vector object</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.cross">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">cross</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.cross"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.cross" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Cross product</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
<p>c is orthogonal to both a and b.
|
||||||
|
The direction of c can be found with the right-hand rule.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\vec{c} = \vec{a} \times \vec{b}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.full">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">full</code><span class="sig-paren">(</span><em class="sig-param">length</em>, <em class="sig-param">fill_value</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.full"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.full" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Returns a vector of length m or matrix of size m rows, n
|
||||||
|
columns filled with v.</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
<dt class="field-odd">Parameters</dt>
|
||||||
|
<dd class="field-odd"><ul class="simple">
|
||||||
|
<li><p><strong>length</strong> (<em>int</em>) – length of the vector, e. g. 3</p></li>
|
||||||
|
<li><p><strong>fill_value</strong> – Fill value</p></li>
|
||||||
|
</ul>
|
||||||
|
</dd>
|
||||||
|
<dt class="field-even">Type fill_value</dt>
|
||||||
|
<dd class="field-even"><p>scalar</p>
|
||||||
|
</dd>
|
||||||
|
<dt class="field-odd">Example</dt>
|
||||||
|
<dd class="field-odd"><p></p></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[7, 7, 7]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.im">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">im</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.im"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.im" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Return the imaginary parts of a complex vector</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.normalize">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">normalize</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.normalize"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.normalize" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Normalize a vector (i. e. the vector has a length of 1)</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\vec{e}_a = \frac{\vec{a}}{|\vec{a}|}\]</div>
|
||||||
|
<div class="admonition seealso">
|
||||||
|
<p class="admonition-title">See also</p>
|
||||||
|
<p><code class="xref py py-meth docutils literal notranslate"><span class="pre">norm()</span></code> for a norm (magnitude) of a vector</p>
|
||||||
|
</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.ones">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">ones</code><span class="sig-paren">(</span><em class="sig-param">length</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.ones"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.ones" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Returns a vector of length m or matrix of size rows, n
|
||||||
|
columns filled with ones.</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
<dt class="field-odd">Parameters</dt>
|
||||||
|
<dd class="field-odd"><p><strong>length</strong> (<em>int</em>) – lhape of the vector, e. g. 3</p>
|
||||||
|
</dd>
|
||||||
|
<dt class="field-even">Example</dt>
|
||||||
|
<dd class="field-even"><p></p></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">ones</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[1.0, 1.0, 1.0]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.random">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">random</code><span class="sig-paren">(</span><em class="sig-param">shape</em>, <em class="sig-param">lmin=0.0</em>, <em class="sig-param">lmax=1.0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.random"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.random" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Returns a random vector of length n or matrix of size m rows, n
|
||||||
|
columns filled with random numbers.</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
<dt class="field-odd">Example</dt>
|
||||||
|
<dd class="field-odd"><p></p></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">random</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[0.9172905912930438, 0.8908124278322492, 0.5256002790725927]</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">random</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[1.2563665665080803, 1.9270454509964547, 1.2381672401270487]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.re">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">re</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.re"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.re" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Return the real parts of a complex vector</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.rotate_x">
|
||||||
|
<code class="sig-name descname">rotate_x</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.rotate_x" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the x dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & \cos \theta & -\sin \theta & 0 \\
|
||||||
|
0 & \sin \theta & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.rotate_y">
|
||||||
|
<code class="sig-name descname">rotate_y</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.rotate_y" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the y dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & 0 & \sin \theta & 0 \\
|
||||||
|
0 & 1 & 0 & 0 \\
|
||||||
|
-\sin \theta & 0 & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.rotate_z">
|
||||||
|
<code class="sig-name descname">rotate_z</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.rotate_z" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the z dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & -\sin \theta & 0 & 0 \\
|
||||||
|
\sin \theta & \cos \theta & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.scale">
|
||||||
|
<code class="sig-name descname">scale</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.scale" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Scaling</p>
|
||||||
|
<p>uniform scaling if sx=sy=sz=s.
|
||||||
|
Note that scaling happens around the origin, so objects not
|
||||||
|
centered at the origin will have their centers move. To avoid this,
|
||||||
|
either scale the object when it’s located at the origin, or
|
||||||
|
perform a translation afterwards to move the object back to where
|
||||||
|
it should be.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
s_x & 0 & 0 & 0 \\
|
||||||
|
0 & s_y & 0 & 0 \\
|
||||||
|
0 & 0 & s_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.translate">
|
||||||
|
<code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.translate" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Translation</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & t_x \\
|
||||||
|
0 & 1 & 0 & t_y \\
|
||||||
|
0 & 0 & 1 & t_z \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.xyz">
|
||||||
|
<code class="sig-name descname">xyz</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.xyz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.xyz" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd></dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="mathematics.vector.zeros">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">zeros</code><span class="sig-paren">(</span><em class="sig-param">length</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.zeros"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.zeros" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Returns a zero vector of length m or matrix of size rows, n
|
||||||
|
columns filled with zeros.</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
<dt class="field-odd">Parameters</dt>
|
||||||
|
<dd class="field-odd"><p><strong>length</strong> (<em>int</em>) – length of the vector, e. g. 3</p>
|
||||||
|
</dd>
|
||||||
|
<dt class="field-even">Example</dt>
|
||||||
|
<dd class="field-even"><p></p></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[0.0, 0.0, 0.0]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
37
docs/build/html/modules.html
vendored
37
docs/build/html/modules.html
vendored
@@ -36,22 +36,31 @@
|
|||||||
<h1>pylib<a class="headerlink" href="#pylib" title="Permalink to this headline">¶</a></h1>
|
<h1>pylib<a class="headerlink" href="#pylib" title="Permalink to this headline">¶</a></h1>
|
||||||
<div class="toctree-wrapper compound">
|
<div class="toctree-wrapper compound">
|
||||||
<ul>
|
<ul>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="data.html">data module</a></li>
|
<li class="toctree-l1"><a class="reference internal" href="pylib.html">pylib package</a><ul>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="date.html">date module</a></li>
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#subpackages">Subpackages</a><ul>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="function.html">function module</a></li>
|
<li class="toctree-l3"><a class="reference internal" href="pylib.numerical.html">pylib.numerical package</a><ul>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="geometry.html">geometry module</a></li>
|
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#submodules">Submodules</a></li>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="geometry_plot.html">geometry_plot module</a></li>
|
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#module-pylib.numerical.fit">pylib.numerical.fit module</a></li>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="mathematics.html">mathematics module</a></li>
|
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#module-pylib.numerical.integration">pylib.numerical.integration module</a></li>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="numerical.html">numerical package</a><ul>
|
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#module-pylib.numerical.ode">pylib.numerical.ode module</a></li>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="numerical.html#submodules">Submodules</a></li>
|
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#module-pylib.numerical.ode_model">pylib.numerical.ode_model module</a></li>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="numerical.html#module-numerical.fit">numerical.fit module</a></li>
|
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#module-pylib.numerical">Module contents</a></li>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="numerical.html#module-numerical.integration">numerical.integration module</a></li>
|
</ul>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="numerical.html#module-numerical.ode">numerical.ode module</a></li>
|
</li>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="numerical.html#module-numerical.ode_model">numerical.ode_model module</a></li>
|
</ul>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="numerical.html#module-numerical">Module contents</a></li>
|
</li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#submodules">Submodules</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.data">pylib.data module</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.date">pylib.date module</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.drawblock">pylib.drawblock module</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.function">pylib.function module</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.geometry">pylib.geometry module</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.geometry_plot">pylib.geometry_plot module</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.mathematics">pylib.mathematics module</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.time_of_day">pylib.time_of_day module</a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib">Module contents</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="time_of_day.html">time_of_day module</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
BIN
docs/build/html/objects.inv
vendored
BIN
docs/build/html/objects.inv
vendored
Binary file not shown.
7
docs/build/html/py-modindex.html
vendored
7
docs/build/html/py-modindex.html
vendored
@@ -105,7 +105,7 @@
|
|||||||
<td></td>
|
<td></td>
|
||||||
<td>
|
<td>
|
||||||
<a href="pylib.html#module-mathematics"><code class="xref">mathematics</code></a> <em>(*nix, Windows)</em></td><td>
|
<a href="pylib.html#module-mathematics"><code class="xref">mathematics</code></a> <em>(*nix, Windows)</em></td><td>
|
||||||
<em>Mathematical functions.</em></td></tr>
|
<em>Mathematical functions and objects.</em></td></tr>
|
||||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||||
<tr class="cap" id="cap-n"><td></td><td>
|
<tr class="cap" id="cap-n"><td></td><td>
|
||||||
<strong>n</strong></td><td></td></tr>
|
<strong>n</strong></td><td></td></tr>
|
||||||
@@ -167,6 +167,11 @@
|
|||||||
<td>   
|
<td>   
|
||||||
<a href="pylib.html#module-pylib.date"><code class="xref">pylib.date</code></a></td><td>
|
<a href="pylib.html#module-pylib.date"><code class="xref">pylib.date</code></a></td><td>
|
||||||
<em></em></td></tr>
|
<em></em></td></tr>
|
||||||
|
<tr class="cg-2">
|
||||||
|
<td></td>
|
||||||
|
<td>   
|
||||||
|
<a href="pylib.html#module-pylib.drawblock"><code class="xref">pylib.drawblock</code></a></td><td>
|
||||||
|
<em></em></td></tr>
|
||||||
<tr class="cg-2">
|
<tr class="cg-2">
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>   
|
<td>   
|
||||||
|
|||||||
592
docs/build/html/pylib.html
vendored
592
docs/build/html/pylib.html
vendored
@@ -351,13 +351,37 @@ between consecutive terms).</p></li>
|
|||||||
</dl>
|
</dl>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="section" id="module-pylib.drawblock">
|
||||||
|
<span id="pylib-drawblock-module"></span><h2>pylib.drawblock module<a class="headerlink" href="#module-pylib.drawblock" title="Permalink to this headline">¶</a></h2>
|
||||||
|
<dl class="function">
|
||||||
|
<dt id="pylib.drawblock.histogram">
|
||||||
|
<code class="sig-name descname">histogram</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">x=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/drawblock.html#histogram"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.drawblock.histogram" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Histogram chart with block symbols.</p>
|
||||||
|
<dl class="simple">
|
||||||
|
<dt>dots:</dt><dd><p>,_,
|
||||||
|
<a href="#id7"><span class="problematic" id="id8">|8|</span></a>
|
||||||
|
<a href="#id9"><span class="problematic" id="id10">|7|</span></a>
|
||||||
|
<a href="#id11"><span class="problematic" id="id12">|6|</span></a>
|
||||||
|
<a href="#id13"><span class="problematic" id="id14">|5|</span></a>
|
||||||
|
<a href="#id15"><span class="problematic" id="id16">|4|</span></a>
|
||||||
|
<a href="#id17"><span class="problematic" id="id18">|3|</span></a>
|
||||||
|
<a href="#id19"><span class="problematic" id="id20">|2|</span></a>
|
||||||
|
<a href="#id21"><span class="problematic" id="id22">|1|</span></a>
|
||||||
|
<a href="#id1"><span class="problematic" id="id2">``</span></a><a href="#id3"><span class="problematic" id="id4">`</span></a></p>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<p>▁▂▃▄▅▆▇█
|
||||||
|
12345678</p>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="module-pylib.function">
|
<div class="section" id="module-pylib.function">
|
||||||
<span id="pylib-function-module"></span><h2>pylib.function module<a class="headerlink" href="#module-pylib.function" title="Permalink to this headline">¶</a></h2>
|
<span id="pylib-function-module"></span><h2>pylib.function module<a class="headerlink" href="#module-pylib.function" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>Mathematical equations.</p>
|
<p>Mathematical equations.</p>
|
||||||
<dl class="field-list simple">
|
<dl class="field-list simple">
|
||||||
<dt class="field-odd">Date</dt>
|
<dt class="field-odd">Date</dt>
|
||||||
<dd class="field-odd"><p>2019-11-04</p>
|
<dd class="field-odd"><p>2019-11-15</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<span class="target" id="module-function"></span><dl class="function">
|
<span class="target" id="module-function"></span><dl class="function">
|
||||||
@@ -565,9 +589,9 @@ which are normed to the range of [0, 1] to</p>
|
|||||||
<li><p><strong>w</strong> (<em>int</em>) – number of chars in horizontal direction</p></li>
|
<li><p><strong>w</strong> (<em>int</em>) – number of chars in horizontal direction</p></li>
|
||||||
<li><p><strong>char_set</strong> (<em>str</em>) – either “braille” or “block”. “braille” uses Unicode
|
<li><p><strong>char_set</strong> (<em>str</em>) – either “braille” or “block”. “braille” uses Unicode
|
||||||
Characters in the Braille Patterns Block (fisrt index U+2800, last
|
Characters in the Braille Patterns Block (fisrt index U+2800, last
|
||||||
index U+28FF <a class="reference internal" href="#cudb" id="id1"><span>[CUDB]</span></a>) and the “block” uses part of the Unicode
|
index U+28FF <a class="reference internal" href="#cudb" id="id5"><span>[CUDB]</span></a>) and the “block” uses part of the Unicode
|
||||||
Characters in the Block Elements Block (fisrt index U+2580, last
|
Characters in the Block Elements Block (fisrt index U+2580, last
|
||||||
index U+259F <a class="reference internal" href="#cudb" id="id2"><span>[CUDB]</span></a>). Alias for braille is line and alias for
|
index U+259F <a class="reference internal" href="#cudb" id="id6"><span>[CUDB]</span></a>). Alias for braille is line and alias for
|
||||||
block is histogram</p></li>
|
block is histogram</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
</dd>
|
</dd>
|
||||||
@@ -671,7 +695,7 @@ Example of 3 columns and 3 rows (upside down view of ‘normal’ braille/drawil
|
|||||||
</div>
|
</div>
|
||||||
<p class="rubric">References</p>
|
<p class="rubric">References</p>
|
||||||
<dl class="citation">
|
<dl class="citation">
|
||||||
<dt class="label" id="cudb"><span class="brackets">CUDB</span><span class="fn-backref">(<a href="#id1">1</a>,<a href="#id2">2</a>)</span></dt>
|
<dt class="label" id="cudb"><span class="brackets">CUDB</span><span class="fn-backref">(<a href="#id5">1</a>,<a href="#id6">2</a>)</span></dt>
|
||||||
<dd><p><a class="reference external" href="ftp://ftp.unicode.org/Public/UNIDATA/Blocks.txt">Unicode Database - Blocks</a></p>
|
<dd><p><a class="reference external" href="ftp://ftp.unicode.org/Public/UNIDATA/Blocks.txt">Unicode Database - Blocks</a></p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
@@ -1144,10 +1168,10 @@ around a given origin. The angle should be given in radians.</p>
|
|||||||
</div>
|
</div>
|
||||||
<div class="section" id="module-pylib.mathematics">
|
<div class="section" id="module-pylib.mathematics">
|
||||||
<span id="pylib-mathematics-module"></span><h2>pylib.mathematics module<a class="headerlink" href="#module-pylib.mathematics" title="Permalink to this headline">¶</a></h2>
|
<span id="pylib-mathematics-module"></span><h2>pylib.mathematics module<a class="headerlink" href="#module-pylib.mathematics" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>Mathematical functions.</p>
|
<p>Mathematical functions and objects.</p>
|
||||||
<dl class="field-list simple">
|
<dl class="field-list simple">
|
||||||
<dt class="field-odd">Date</dt>
|
<dt class="field-odd">Date</dt>
|
||||||
<dd class="field-odd"><p>2019-10-30</p>
|
<dd class="field-odd"><p>2019-12-12</p>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<span class="target" id="module-mathematics"></span><dl class="function">
|
<span class="target" id="module-mathematics"></span><dl class="function">
|
||||||
@@ -1156,6 +1180,562 @@ around a given origin. The angle should be given in radians.</p>
|
|||||||
<dd><p>Compute the lowest common multiple of a and b</p>
|
<dd><p>Compute the lowest common multiple of a and b</p>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="class">
|
||||||
|
<dt id="pylib.mathematics.matrix">
|
||||||
|
<em class="property">class </em><code class="sig-name descname">matrix</code><a class="reference internal" href="_modules/pylib/mathematics.html#matrix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p>
|
||||||
|
<p>Use/create matrix like list of lists</p>
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.matrix.rotate_x">
|
||||||
|
<code class="sig-name descname">rotate_x</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.rotate_x" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the x dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx' & yy' & yz' & t_y' \\
|
||||||
|
zx' & zy' & zz' & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & \cos \theta & -\sin \theta & 0 \\
|
||||||
|
0 & \sin \theta & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.matrix.rotate_y">
|
||||||
|
<code class="sig-name descname">rotate_y</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.rotate_y" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the y dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}
|
||||||
|
xx' & xy' & xz' & t_x' \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx' & zy' & zz' & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & 0 & \sin \theta & 0 \\
|
||||||
|
0 & 1 & 0 & 0 \\
|
||||||
|
-\sin \theta & 0 & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.matrix.rotate_z">
|
||||||
|
<code class="sig-name descname">rotate_z</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.rotate_z" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the z dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}
|
||||||
|
xx' & xy' & xz' & t_x' \\
|
||||||
|
yx' & yy' & yz' & t_y' \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & -\sin \theta & 0 & 0 \\
|
||||||
|
\sin \theta & \cos \theta & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.matrix.rx">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">rx</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.rx"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.rx" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation matrix about the x direction.</p>
|
||||||
|
<p>Rotates the coordinate system of vectors</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}R_{x}(\theta) =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & \cos \theta & -\sin \theta & 0 \\
|
||||||
|
0 & \sin \theta & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.matrix.ry">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">ry</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.ry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.ry" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation matrix about the y direction.</p>
|
||||||
|
<p>Rotates the coordinate system of vectors</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}R_{y}(\theta) =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & 0 & \sin \theta & 0 \\
|
||||||
|
0 & 1 & 0 & 0 \\
|
||||||
|
-\sin \theta & 0 & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.matrix.rz">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">rz</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.rz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.rz" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation matrix about the z direction.</p>
|
||||||
|
<p>Rotates the coordinate system of vectors</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}R_{z}(\theta) =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & -\sin \theta & 0 & 0 \\
|
||||||
|
\sin \theta & \cos \theta & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
<dt class="field-odd">Example</dt>
|
||||||
|
<dd class="field-odd"><p></p></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}R_{z}(\theta) \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos 90° & -\sin 90° & 0 & 0 \\
|
||||||
|
\sin 90° & \cos 90° & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
0 & -1 & 0 & 0 \\
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =
|
||||||
|
\begin{bmatrix}0 \\ 1 \\ 0 \\ 1\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.matrix.s">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">s</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.s"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.s" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Scaling matrix</p>
|
||||||
|
<p>uniform scaling if sx=sy=sz=s.
|
||||||
|
Note that scaling happens around the origin, so objects not
|
||||||
|
centered at the origin will have their centers move. To avoid this,
|
||||||
|
either scale the object when it’s located at the origin, or
|
||||||
|
perform a translation afterwards to move the object back to where
|
||||||
|
it should be.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}S =
|
||||||
|
\begin{bmatrix}
|
||||||
|
s_x & 0 & 0 & 0 \\
|
||||||
|
0 & s_y & 0 & 0 \\
|
||||||
|
0 & 0 & s_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.matrix.scale">
|
||||||
|
<code class="sig-name descname">scale</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.scale" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Scaling</p>
|
||||||
|
<p>uniform scaling if sx=sy=sz=s.
|
||||||
|
Note that scaling happens around the origin, so objects not
|
||||||
|
centered at the origin will have their centers move. To avoid this,
|
||||||
|
either scale the object when it’s located at the origin, or
|
||||||
|
perform a translation afterwards to move the object back to where
|
||||||
|
it should be.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}
|
||||||
|
xx' & xy' & xz' & t_x' \\
|
||||||
|
yx' & yy' & yz' & t_y' \\
|
||||||
|
zx' & zy' & zz' & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
s_x & 0 & 0 & 0 \\
|
||||||
|
0 & s_y & 0 & 0 \\
|
||||||
|
0 & 0 & s_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.matrix.t">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">t</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.t"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.t" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Translation matrix</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}T =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & t_x \\
|
||||||
|
0 & 1 & 0 & t_y \\
|
||||||
|
0 & 0 & 1 & t_z \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.matrix.translate">
|
||||||
|
<code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.translate" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Translation</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x' \\
|
||||||
|
yx & yy & yz & t_y' \\
|
||||||
|
zx & zy & zz & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & t_x \\
|
||||||
|
0 & 1 & 0 & t_y \\
|
||||||
|
0 & 0 & 1 & t_z \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="class">
|
||||||
|
<dt id="pylib.mathematics.vector">
|
||||||
|
<em class="property">class </em><code class="sig-name descname">vector</code><a class="reference internal" href="_modules/pylib/mathematics.html#vector"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p>
|
||||||
|
<p>Use/create vector like lists</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><p>size -> len(a)</p></li>
|
||||||
|
<li><p>abs -> abs(a)</p></li>
|
||||||
|
<li><p>dot -> a * b</p></li>
|
||||||
|
<li><p>outer -> a @ b</p></li>
|
||||||
|
</ul>
|
||||||
|
<p>use super constructor</p>
|
||||||
|
<p>use super __iter__</p>
|
||||||
|
<p>use super __setitem__</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v</span><span class="p">[</span><span class="mi">3</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">]</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[1, 2, 3, 1, 2]</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">vector</span><span class="p">)</span>
|
||||||
|
<span class="go">True</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>use super __lt__(a, b)</p>
|
||||||
|
<p>use super __le__(a, b)</p>
|
||||||
|
<p>use super __eq__(a, b)</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v2</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v</span> <span class="o">==</span> <span class="n">v2</span>
|
||||||
|
<span class="go">True</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>use super __ne__(a, b)</p>
|
||||||
|
<p>use super __ge__(a, b)</p>
|
||||||
|
<p>use super __gt__(a, b)</p>
|
||||||
|
<p>use super __contains__</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">2</span> <span class="ow">in</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="go">True</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>__isub__</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v</span> <span class="o">-=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[-2, -1, 0]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>__imul__</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v</span> <span class="o">*=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">18</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p>__imatmul__</p>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">m</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">m</span> <span class="o">*=</span> <span class="n">vector</span><span class="p">([</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">])</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[[3, 3, 3], [6, 6, 6], [9, 9, 9]]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.abs">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">abs</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.abs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.abs" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Return modulus parts of a complex vector</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.ang">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">ang</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.ang"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.ang" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd></dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.arg">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">arg</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.arg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.arg" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Return phase parts of a complex vector</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.ch_cs">
|
||||||
|
<code class="sig-name descname">ch_cs</code><span class="sig-paren">(</span><em class="sig-param">cs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.ch_cs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.ch_cs" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Transform this vector from its defined coordinate system to a
|
||||||
|
new coordinate system, defined by the given coordinate system (u,
|
||||||
|
v and w direction vectors).</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
u_x & u_y & u_z & 0 \\
|
||||||
|
v_x & v_y & v_z & 0 \\
|
||||||
|
w_x & w_y & w_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.conjugate">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">conjugate</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.conjugate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.conjugate" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>New vector object</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.cross">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">cross</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.cross"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.cross" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Cross product</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
<p>c is orthogonal to both a and b.
|
||||||
|
The direction of c can be found with the right-hand rule.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\vec{c} = \vec{a} \times \vec{b}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.full">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">full</code><span class="sig-paren">(</span><em class="sig-param">length</em>, <em class="sig-param">fill_value</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.full"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.full" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Returns a vector of length m or matrix of size m rows, n
|
||||||
|
columns filled with v.</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
<dt class="field-odd">Parameters</dt>
|
||||||
|
<dd class="field-odd"><ul class="simple">
|
||||||
|
<li><p><strong>length</strong> (<em>int</em>) – length of the vector, e. g. 3</p></li>
|
||||||
|
<li><p><strong>fill_value</strong> – Fill value</p></li>
|
||||||
|
</ul>
|
||||||
|
</dd>
|
||||||
|
<dt class="field-even">Type fill_value</dt>
|
||||||
|
<dd class="field-even"><p>scalar</p>
|
||||||
|
</dd>
|
||||||
|
<dt class="field-odd">Example</dt>
|
||||||
|
<dd class="field-odd"><p></p></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[7, 7, 7]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.im">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">im</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.im"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.im" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Return the imaginary parts of a complex vector</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.normalize">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">normalize</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.normalize"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.normalize" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Normalize a vector (i. e. the vector has a length of 1)</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\vec{e}_a = \frac{\vec{a}}{|\vec{a}|}\]</div>
|
||||||
|
<div class="admonition seealso">
|
||||||
|
<p class="admonition-title">See also</p>
|
||||||
|
<p><code class="xref py py-meth docutils literal notranslate"><span class="pre">norm()</span></code> for a norm (magnitude) of a vector</p>
|
||||||
|
</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.ones">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">ones</code><span class="sig-paren">(</span><em class="sig-param">length</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.ones"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.ones" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Returns a vector of length m or matrix of size rows, n
|
||||||
|
columns filled with ones.</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
<dt class="field-odd">Parameters</dt>
|
||||||
|
<dd class="field-odd"><p><strong>length</strong> (<em>int</em>) – lhape of the vector, e. g. 3</p>
|
||||||
|
</dd>
|
||||||
|
<dt class="field-even">Example</dt>
|
||||||
|
<dd class="field-even"><p></p></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">ones</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[1.0, 1.0, 1.0]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.random">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">random</code><span class="sig-paren">(</span><em class="sig-param">shape</em>, <em class="sig-param">lmin=0.0</em>, <em class="sig-param">lmax=1.0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.random"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.random" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Returns a random vector of length n or matrix of size m rows, n
|
||||||
|
columns filled with random numbers.</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
<dt class="field-odd">Example</dt>
|
||||||
|
<dd class="field-odd"><p></p></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">random</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[0.9172905912930438, 0.8908124278322492, 0.5256002790725927]</span>
|
||||||
|
<span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">random</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[1.2563665665080803, 1.9270454509964547, 1.2381672401270487]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.re">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">re</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.re"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.re" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Return the real parts of a complex vector</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
</dl>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.rotate_x">
|
||||||
|
<code class="sig-name descname">rotate_x</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.rotate_x" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the x dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & \cos \theta & -\sin \theta & 0 \\
|
||||||
|
0 & \sin \theta & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.rotate_y">
|
||||||
|
<code class="sig-name descname">rotate_y</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.rotate_y" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the y dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & 0 & \sin \theta & 0 \\
|
||||||
|
0 & 1 & 0 & 0 \\
|
||||||
|
-\sin \theta & 0 & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.rotate_z">
|
||||||
|
<code class="sig-name descname">rotate_z</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.rotate_z" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Rotation about the z dirction.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & -\sin \theta & 0 & 0 \\
|
||||||
|
\sin \theta & \cos \theta & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.scale">
|
||||||
|
<code class="sig-name descname">scale</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.scale" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Scaling</p>
|
||||||
|
<p>uniform scaling if sx=sy=sz=s.
|
||||||
|
Note that scaling happens around the origin, so objects not
|
||||||
|
centered at the origin will have their centers move. To avoid this,
|
||||||
|
either scale the object when it’s located at the origin, or
|
||||||
|
perform a translation afterwards to move the object back to where
|
||||||
|
it should be.</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
s_x & 0 & 0 & 0 \\
|
||||||
|
0 & s_y & 0 & 0 \\
|
||||||
|
0 & 0 & s_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.translate">
|
||||||
|
<code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.translate" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Translation</p>
|
||||||
|
<div class="math notranslate nohighlight">
|
||||||
|
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & t_x \\
|
||||||
|
0 & 1 & 0 & t_y \\
|
||||||
|
0 & 0 & 1 & t_z \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}\end{split}\]</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.xyz">
|
||||||
|
<code class="sig-name descname">xyz</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.xyz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.xyz" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd></dd></dl>
|
||||||
|
|
||||||
|
<dl class="method">
|
||||||
|
<dt id="pylib.mathematics.vector.zeros">
|
||||||
|
<em class="property">static </em><code class="sig-name descname">zeros</code><span class="sig-paren">(</span><em class="sig-param">length</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.zeros"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.zeros" title="Permalink to this definition">¶</a></dt>
|
||||||
|
<dd><p>Returns a zero vector of length m or matrix of size rows, n
|
||||||
|
columns filled with zeros.</p>
|
||||||
|
<dl class="field-list simple">
|
||||||
|
<dt class="field-odd">Parameters</dt>
|
||||||
|
<dd class="field-odd"><p><strong>length</strong> (<em>int</em>) – length of the vector, e. g. 3</p>
|
||||||
|
</dd>
|
||||||
|
<dt class="field-even">Example</dt>
|
||||||
|
<dd class="field-even"><p></p></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">v</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
||||||
|
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
|
||||||
|
<span class="go">[0.0, 0.0, 0.0]</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
|
</dd></dl>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="module-pylib.time_of_day">
|
<div class="section" id="module-pylib.time_of_day">
|
||||||
<span id="pylib-time-of-day-module"></span><h2>pylib.time_of_day module<a class="headerlink" href="#module-pylib.time_of_day" title="Permalink to this headline">¶</a></h2>
|
<span id="pylib-time-of-day-module"></span><h2>pylib.time_of_day module<a class="headerlink" href="#module-pylib.time_of_day" title="Permalink to this headline">¶</a></h2>
|
||||||
|
|||||||
2
docs/build/html/searchindex.js
vendored
2
docs/build/html/searchindex.js
vendored
File diff suppressed because one or more lines are too long
@@ -4,11 +4,4 @@ pylib
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 4
|
:maxdepth: 4
|
||||||
|
|
||||||
data
|
pylib
|
||||||
date
|
|
||||||
function
|
|
||||||
geometry
|
|
||||||
geometry_plot
|
|
||||||
mathematics
|
|
||||||
numerical
|
|
||||||
time_of_day
|
|
||||||
|
|||||||
@@ -27,6 +27,14 @@ pylib.date module
|
|||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
|
pylib.drawblock module
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
.. automodule:: pylib.drawblock
|
||||||
|
:members:
|
||||||
|
:undoc-members:
|
||||||
|
:show-inheritance:
|
||||||
|
|
||||||
pylib.function module
|
pylib.function module
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""Mathematical functions.
|
"""Mathematical functions and objects.
|
||||||
|
|
||||||
:Date: 2019-10-30
|
:Date: 2019-12-12
|
||||||
|
|
||||||
.. module:: mathematics
|
.. module:: mathematics
|
||||||
:platform: *nix, Windows
|
:platform: *nix, Windows
|
||||||
:synopsis: Mathematical functions.
|
:synopsis: Mathematical functions and objects.
|
||||||
|
|
||||||
.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de>
|
.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de>
|
||||||
"""
|
"""
|
||||||
@@ -15,3 +15,911 @@ from math import gcd
|
|||||||
def lcm(a, b):
|
def lcm(a, b):
|
||||||
"""Compute the lowest common multiple of a and b"""
|
"""Compute the lowest common multiple of a and b"""
|
||||||
return a/gcd(a, b)*b
|
return a/gcd(a, b)*b
|
||||||
|
|
||||||
|
|
||||||
|
class vector(list):
|
||||||
|
"""Use/create vector like lists
|
||||||
|
|
||||||
|
* size -> len(a)
|
||||||
|
* abs -> abs(a)
|
||||||
|
* dot -> a * b
|
||||||
|
* outer -> a @ b
|
||||||
|
|
||||||
|
use super constructor
|
||||||
|
|
||||||
|
use super __iter__
|
||||||
|
|
||||||
|
use super __setitem__
|
||||||
|
|
||||||
|
>>> v = vector([1,2,3,4,5])
|
||||||
|
>>> v[3:5] = [1,2]
|
||||||
|
>>> print(v)
|
||||||
|
[1, 2, 3, 1, 2]
|
||||||
|
>>> isinstance(v, vector)
|
||||||
|
True
|
||||||
|
|
||||||
|
use super __lt__(a, b)
|
||||||
|
|
||||||
|
use super __le__(a, b)
|
||||||
|
|
||||||
|
use super __eq__(a, b)
|
||||||
|
|
||||||
|
>>> v = vector([1,2,3,1,2])
|
||||||
|
>>> v2 = vector([1,2,3,1,2])
|
||||||
|
>>> v == v2
|
||||||
|
True
|
||||||
|
|
||||||
|
use super __ne__(a, b)
|
||||||
|
|
||||||
|
use super __ge__(a, b)
|
||||||
|
|
||||||
|
use super __gt__(a, b)
|
||||||
|
|
||||||
|
use super __contains__
|
||||||
|
|
||||||
|
>>> 2 in vector([1,2,3])
|
||||||
|
True
|
||||||
|
|
||||||
|
__isub__
|
||||||
|
|
||||||
|
>>> v = vector([1,2,3])
|
||||||
|
>>> v -= vector([3,3,3])
|
||||||
|
>>> print(v)
|
||||||
|
[-2, -1, 0]
|
||||||
|
|
||||||
|
__imul__
|
||||||
|
|
||||||
|
>>> v = vector([1,2,3])
|
||||||
|
>>> v *= vector([3,3,3])
|
||||||
|
>>> print(v)
|
||||||
|
18
|
||||||
|
|
||||||
|
__imatmul__
|
||||||
|
|
||||||
|
>>> m = vector([1,2,3])
|
||||||
|
>>> m *= vector([3,3,3])
|
||||||
|
>>> print(v)
|
||||||
|
[[3, 3, 3], [6, 6, 6], [9, 9, 9]]
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __getitem__(self, index):
|
||||||
|
"""
|
||||||
|
For index return value, for range return new vector object.
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> v = vector([1, 2, 3, 4, 5])
|
||||||
|
>>> v[1:3]
|
||||||
|
[2, 3]
|
||||||
|
>>> v = vector([1, 2, 3, 4, 5])
|
||||||
|
>>> v[3]
|
||||||
|
4
|
||||||
|
"""
|
||||||
|
# use the list.__getslice__ method and convert result to vector
|
||||||
|
item = super().__getitem__(index)
|
||||||
|
return vector(item) if isinstance(item, list) else item
|
||||||
|
|
||||||
|
def __pos__(self):
|
||||||
|
"""+ a (new object)
|
||||||
|
"""
|
||||||
|
return vector([*self])
|
||||||
|
|
||||||
|
def __neg__(self):
|
||||||
|
"""- a (new object)
|
||||||
|
"""
|
||||||
|
return vector([-i for i in self])
|
||||||
|
|
||||||
|
def __add__(self, other):
|
||||||
|
"""a + b (new object)
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> v = vector([1,2,3]) + vector([1,2,3])
|
||||||
|
>>> print(v)
|
||||||
|
[2, 4, 6]
|
||||||
|
"""
|
||||||
|
return vector([i+j for i, j in zip(self, other)])
|
||||||
|
|
||||||
|
def __iadd__(self, other):
|
||||||
|
"""a += b (new object)
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> v = vector([1,2,3])
|
||||||
|
>>> v += vector([3,3,3])
|
||||||
|
>>> print(v)
|
||||||
|
[4, 5, 6]
|
||||||
|
"""
|
||||||
|
return vector([i+j for i, j in zip(self, other)])
|
||||||
|
|
||||||
|
def __sub__(self, other):
|
||||||
|
"""a - b (new object)
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> v = vector([1,2,3]) - vector([1,2,3])
|
||||||
|
>>> print(v)
|
||||||
|
[0, 0, 0]
|
||||||
|
"""
|
||||||
|
return vector([i-j for i, j in zip(self, other)])
|
||||||
|
|
||||||
|
def __mul__(self, other):
|
||||||
|
r"""Scalar multiplication, dot product (inner product) or
|
||||||
|
vector-matrix multiplication.
|
||||||
|
|
||||||
|
a * b (new object)
|
||||||
|
|
||||||
|
:type other: scalar, vector (or 1d list), matrix (or 2d list)
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\mathbf{c} &= \mathbf{a} \cdot b \\
|
||||||
|
\mathbf{c} &= \mathbf{a} \cdot \mathbf{b} \\
|
||||||
|
\mathbf{c} &= \mathbf{a} \cdot \mathbf{B}
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
No size checking will be conducted, therefore no exceptions for
|
||||||
|
wrong usage (result will be nonsense).
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> v = vector([1,2,3,4,5])*3
|
||||||
|
>>> print(v)
|
||||||
|
[3, 6, 9, 12, 15]
|
||||||
|
>>> v = vector([1,2,3,4,5])*3.
|
||||||
|
>>> print(v)
|
||||||
|
[3.0, 6.0, 9.0, 12.0, 15.0]
|
||||||
|
>>> s = vector([1,2,3])*vector([1,2,3])
|
||||||
|
>>> print(s)
|
||||||
|
14
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:meth:`__rmul__`
|
||||||
|
"""
|
||||||
|
try: # vector * vector
|
||||||
|
return sum([i*j for i, j in zip(self, other)])
|
||||||
|
except:
|
||||||
|
try: # vector * matrix
|
||||||
|
return vector([sum(c*d for c, d in zip(self, b_col)) for b_col in zip(*other)])
|
||||||
|
except: # vector * scalar
|
||||||
|
return vector([i*other for i in self])
|
||||||
|
|
||||||
|
def __rmul__(self, other):
|
||||||
|
r"""Scalar multiplication, dot product (inner product) or
|
||||||
|
matrix-vector multiplication.
|
||||||
|
|
||||||
|
a * b (new object)
|
||||||
|
|
||||||
|
:type other: scalar (or 1d list and 2d list)
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\mathbf{c} &= a \cdot \mathbf{b} \\
|
||||||
|
\mathbf{c} &= \mathbf{a} \cdot \mathbf{b} \\
|
||||||
|
\mathbf{c} &= \mathbf{A} \cdot \mathbf{b}
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
No size checking will be conducted, therefore no exceptions for
|
||||||
|
wrong usage (result will be nonsense).
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> v = 3*vector([1,2,3,4,5])
|
||||||
|
>>> print(v)
|
||||||
|
[3, 6, 9, 12, 15]
|
||||||
|
>>> v = 3.*vector([1,2,3,4,5])
|
||||||
|
>>> print(v)
|
||||||
|
[3.0, 6.0, 9.0, 12.0, 15.0]
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:meth:`__mul__`
|
||||||
|
:meth:`matrix.__mul__` for matrix * vector
|
||||||
|
"""
|
||||||
|
try: # 2d list * vector (matrix * vector see matrix.__mul__)
|
||||||
|
return vector([sum(c*d for c, d in zip(a_row, self)) for a_row in other])
|
||||||
|
except: # scalar * vector
|
||||||
|
return self*other
|
||||||
|
|
||||||
|
def __matmul__(self, other):
|
||||||
|
r"""Outer product a @ b (new object)
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\vec{a} \otimes \vec{b}
|
||||||
|
=
|
||||||
|
\begin{pmatrix}
|
||||||
|
a_{1}\\
|
||||||
|
a_{2}\\
|
||||||
|
a_{3}
|
||||||
|
\end{pmatrix}
|
||||||
|
\otimes
|
||||||
|
\begin{pmatrix}
|
||||||
|
b_{1}\\
|
||||||
|
b_{2}\\
|
||||||
|
b_{3}
|
||||||
|
\end{pmatrix}
|
||||||
|
=
|
||||||
|
\begin{pmatrix}
|
||||||
|
a_{1}b_{1}&a_{1}b_{2}&a_{1}b_{3}\\
|
||||||
|
a_{2}b_{1}&a_{2}b_{2}&a_{2}b_{3}\\
|
||||||
|
a_{3}b_{1}&a_{3}b_{2}&a_{3}b_{3}
|
||||||
|
\end{pmatrix}
|
||||||
|
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> m = vector([1,2,3]) @ vector([1,2,4])
|
||||||
|
>>> print(m)
|
||||||
|
[[1, 2, 4], [2, 4, 8], [3, 6, 12]]
|
||||||
|
"""
|
||||||
|
try: # vector * vector
|
||||||
|
return matrix([[i*j for j in other] for i in self])
|
||||||
|
except: # vector * number
|
||||||
|
return self*other
|
||||||
|
|
||||||
|
def __abs__(self):
|
||||||
|
r"""Magnitude / norm of a vector
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
b = \sqrt{\sum a_i^2}
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> norm([3, 4])
|
||||||
|
5
|
||||||
|
>>> norm(vector([3, 4]))
|
||||||
|
5
|
||||||
|
"""
|
||||||
|
return math.sqrt(self * self)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return str([*self])
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "vector(" + str(self) + ")"
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def full(length, fill_value):
|
||||||
|
"""Returns a vector of length m or matrix of size m rows, n
|
||||||
|
columns filled with v.
|
||||||
|
|
||||||
|
:param length: length of the vector, e. g. 3
|
||||||
|
:type length: int
|
||||||
|
:param fill_value: Fill value
|
||||||
|
:Type fill_value: scalar
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> v = vector.full(3, 7)
|
||||||
|
>>> print(v)
|
||||||
|
[7, 7, 7]
|
||||||
|
"""
|
||||||
|
return vector([fill_value for i in range(length)])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def zeros(length):
|
||||||
|
"""Returns a zero vector of length m or matrix of size rows, n
|
||||||
|
columns filled with zeros.
|
||||||
|
|
||||||
|
:param length: length of the vector, e. g. 3
|
||||||
|
:type length: int
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> v = zeros(3)
|
||||||
|
>>> print(v)
|
||||||
|
[0.0, 0.0, 0.0]
|
||||||
|
"""
|
||||||
|
return vector.full(length, 0.)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def ones(length):
|
||||||
|
"""Returns a vector of length m or matrix of size rows, n
|
||||||
|
columns filled with ones.
|
||||||
|
|
||||||
|
:param length: lhape of the vector, e. g. 3
|
||||||
|
:type length: int
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> v = ones(3)
|
||||||
|
>>> print(v)
|
||||||
|
[1.0, 1.0, 1.0]
|
||||||
|
"""
|
||||||
|
return vector.full(length, 1.)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def random(shape, lmin=0.0, lmax=1.0):
|
||||||
|
"""Returns a random vector of length n or matrix of size m rows, n
|
||||||
|
columns filled with random numbers.
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> v = random(3)
|
||||||
|
>>> print(v)
|
||||||
|
[0.9172905912930438, 0.8908124278322492, 0.5256002790725927]
|
||||||
|
>>> v = random(3, 1, 2)
|
||||||
|
>>> print(v)
|
||||||
|
[1.2563665665080803, 1.9270454509964547, 1.2381672401270487]
|
||||||
|
"""
|
||||||
|
import random
|
||||||
|
dl = lmax-lmin
|
||||||
|
return vector([dl*random.random()+lmin for i in range(shape)])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def normalize(a):
|
||||||
|
r"""Normalize a vector (i. e. the vector has a length of 1)
|
||||||
|
|
||||||
|
:type a: vector
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\vec{e}_a = \frac{\vec{a}}{|\vec{a}|}
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:meth:`norm` for a norm (magnitude) of a vector
|
||||||
|
"""
|
||||||
|
a_mag = abs(a)
|
||||||
|
return vector([i/a_mag for i in a])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def ang(a, b):
|
||||||
|
return math.acos(a * b / (abs(a) * abs(b)))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def conjugate(a):
|
||||||
|
"""
|
||||||
|
New vector object
|
||||||
|
|
||||||
|
:type a: list
|
||||||
|
"""
|
||||||
|
return vector([i.conjugate() for i in a])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def re(a):
|
||||||
|
"""Return the real parts of a complex vector
|
||||||
|
|
||||||
|
:type a: list
|
||||||
|
"""
|
||||||
|
return vector([i.real for i in a])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def im(a):
|
||||||
|
"""Return the imaginary parts of a complex vector
|
||||||
|
|
||||||
|
:type a: list
|
||||||
|
"""
|
||||||
|
return vector([i.imag for i in a])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def abs(a):
|
||||||
|
"""Return modulus parts of a complex vector
|
||||||
|
|
||||||
|
:type a: list
|
||||||
|
"""
|
||||||
|
return vector([abs(i) for i in a])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def arg(a):
|
||||||
|
"""Return phase parts of a complex vector
|
||||||
|
|
||||||
|
:type a: list
|
||||||
|
"""
|
||||||
|
return vector([math.atan2(i.imag, i.real) for i in a])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def cross(a, b):
|
||||||
|
r"""Cross product
|
||||||
|
|
||||||
|
:type a: list
|
||||||
|
:type b: list
|
||||||
|
|
||||||
|
c is orthogonal to both a and b.
|
||||||
|
The direction of c can be found with the right-hand rule.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\vec{c} = \vec{a} \times \vec{b}
|
||||||
|
"""
|
||||||
|
return [a[1]*b[2] - a[2]*b[1],
|
||||||
|
a[2]*b[0] - a[0]*b[2],
|
||||||
|
a[0]*b[1] - a[1]*b[0]]
|
||||||
|
|
||||||
|
def xyz(self):
|
||||||
|
return self[:3]
|
||||||
|
|
||||||
|
def rotate_x(self, theta):
|
||||||
|
r"""Rotation about the x dirction.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & \cos \theta & -\sin \theta & 0 \\
|
||||||
|
0 & \sin \theta & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}
|
||||||
|
"""
|
||||||
|
self[:] = matrix.rx(theta) * self
|
||||||
|
return self
|
||||||
|
|
||||||
|
def rotate_y(self, theta):
|
||||||
|
r"""Rotation about the y dirction.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & 0 & \sin \theta & 0 \\
|
||||||
|
0 & 1 & 0 & 0 \\
|
||||||
|
-\sin \theta & 0 & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}
|
||||||
|
"""
|
||||||
|
self[:] = matrix.ry(theta) * self
|
||||||
|
return self
|
||||||
|
|
||||||
|
def rotate_z(self, theta):
|
||||||
|
r"""Rotation about the z dirction.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & -\sin \theta & 0 & 0 \\
|
||||||
|
\sin \theta & \cos \theta & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}
|
||||||
|
"""
|
||||||
|
self[:] = matrix.rz(theta) * self
|
||||||
|
return self
|
||||||
|
|
||||||
|
def translate(self, tx, ty, tz):
|
||||||
|
r"""Translation
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & t_x \\
|
||||||
|
0 & 1 & 0 & t_y \\
|
||||||
|
0 & 0 & 1 & t_z \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}
|
||||||
|
"""
|
||||||
|
self[:] = matrix.t(tx, ty, tz) * self
|
||||||
|
return self
|
||||||
|
|
||||||
|
def scale(self, sx, sy=None, sz=None):
|
||||||
|
r"""Scaling
|
||||||
|
|
||||||
|
uniform scaling if sx=sy=sz=s.
|
||||||
|
Note that scaling happens around the origin, so objects not
|
||||||
|
centered at the origin will have their centers move. To avoid this,
|
||||||
|
either scale the object when it's located at the origin, or
|
||||||
|
perform a translation afterwards to move the object back to where
|
||||||
|
it should be.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
s_x & 0 & 0 & 0 \\
|
||||||
|
0 & s_y & 0 & 0 \\
|
||||||
|
0 & 0 & s_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}
|
||||||
|
"""
|
||||||
|
if not sy:
|
||||||
|
sy = sx
|
||||||
|
sz = sx
|
||||||
|
self[:] = matrix.s(sx, sy, sz) * self
|
||||||
|
return self
|
||||||
|
|
||||||
|
def ch_cs(self, cs):
|
||||||
|
r"""Transform this vector from its defined coordinate system to a
|
||||||
|
new coordinate system, defined by the given coordinate system (u,
|
||||||
|
v and w direction vectors).
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
u_x & u_y & u_z & 0 \\
|
||||||
|
v_x & v_y & v_z & 0 \\
|
||||||
|
w_x & w_y & w_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}x \\ y \\ z \\ h\end{bmatrix}
|
||||||
|
"""
|
||||||
|
self[:] = cs * self
|
||||||
|
return self
|
||||||
|
|
||||||
|
class matrix(list):
|
||||||
|
"""Use/create matrix like list of lists
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __getitem__(self, index):
|
||||||
|
"""
|
||||||
|
For index return value, for range return new vector object.
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> m = matrix([[1, 2, 3, 0], [4, 5, 6, 0], [7, 8, 9, 0], [0, 0, 0, 0]])
|
||||||
|
>>> print(m[2])
|
||||||
|
[7, 8, 9, 0]
|
||||||
|
>>> print(m[:,1:3])
|
||||||
|
[[2, 3], [5, 6], [8, 9], [0, 0]]
|
||||||
|
>>> print(m[0:2,1:3])
|
||||||
|
[[2, 3], [5, 6]]
|
||||||
|
>>> print(m[::2,::2])
|
||||||
|
[[1, 3], [7, 9]]
|
||||||
|
"""
|
||||||
|
# index: slice(stop), slice(start, stop[, step])
|
||||||
|
# for e. g. m[(1,3),:] -> index = ((1, 3), slice(None, None, None))
|
||||||
|
# use the list.__getslice__ method and convert result to vector
|
||||||
|
try: # 2d slicing (tuple of sclices)
|
||||||
|
item = [row.__getitem__(index[1]) for row in super().__getitem__(index[0])]
|
||||||
|
except: # 1d slicing
|
||||||
|
item = super().__getitem__(index)
|
||||||
|
return matrix(item) if isinstance(item, list) else item
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def rx(theta):
|
||||||
|
r"""Rotation matrix about the x direction.
|
||||||
|
|
||||||
|
Rotates the coordinate system of vectors
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
R_{x}(\theta) =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & \cos \theta & -\sin \theta & 0 \\
|
||||||
|
0 & \sin \theta & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
"""
|
||||||
|
s = math.sin(theta)
|
||||||
|
c = math.cos(theta)
|
||||||
|
T = matrix([[ 1, 0, 0, 0],
|
||||||
|
[ 0, c,-s, 0],
|
||||||
|
[ 0, s, c, 0],
|
||||||
|
[ 0, 0, 0, 1]])
|
||||||
|
return T
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def ry(theta):
|
||||||
|
r"""Rotation matrix about the y direction.
|
||||||
|
|
||||||
|
Rotates the coordinate system of vectors
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
R_{y}(\theta) =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & 0 & \sin \theta & 0 \\
|
||||||
|
0 & 1 & 0 & 0 \\
|
||||||
|
-\sin \theta & 0 & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
"""
|
||||||
|
s = math.sin(theta)
|
||||||
|
c = math.cos(theta)
|
||||||
|
T = matrix([[ c, 0, s, 0],
|
||||||
|
[ 0, 1, 0, 0],
|
||||||
|
[-s, 0, c, 0],
|
||||||
|
[ 0, 0, 0, 1]])
|
||||||
|
return T
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def rz(theta):
|
||||||
|
r"""Rotation matrix about the z direction.
|
||||||
|
|
||||||
|
Rotates the coordinate system of vectors
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
R_{z}(\theta) =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & -\sin \theta & 0 & 0 \\
|
||||||
|
\sin \theta & \cos \theta & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
R_{z}(\theta) \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos 90° & -\sin 90° & 0 & 0 \\
|
||||||
|
\sin 90° & \cos 90° & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
0 & -1 & 0 & 0 \\
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} =
|
||||||
|
\begin{bmatrix}0 \\ 1 \\ 0 \\ 1\end{bmatrix}
|
||||||
|
"""
|
||||||
|
s = math.sin(theta)
|
||||||
|
c = math.cos(theta)
|
||||||
|
T = matrix([[ c,-s, 0, 0],
|
||||||
|
[ s, c, 0, 0],
|
||||||
|
[ 0, 0, 1, 0],
|
||||||
|
[ 0, 0, 0, 1]])
|
||||||
|
return T
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def t(tx, ty, tz):
|
||||||
|
r"""Translation matrix
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
T =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & t_x \\
|
||||||
|
0 & 1 & 0 & t_y \\
|
||||||
|
0 & 0 & 1 & t_z \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
"""
|
||||||
|
T = matrix([[ 1, 0, 0,tx],
|
||||||
|
[ 0, 1, 0,ty],
|
||||||
|
[ 0, 0, 1,tz],
|
||||||
|
[ 0, 0, 0, 1]])
|
||||||
|
return T
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def s(sx, sy=None, sz=None):
|
||||||
|
r"""Scaling matrix
|
||||||
|
|
||||||
|
uniform scaling if sx=sy=sz=s.
|
||||||
|
Note that scaling happens around the origin, so objects not
|
||||||
|
centered at the origin will have their centers move. To avoid this,
|
||||||
|
either scale the object when it's located at the origin, or
|
||||||
|
perform a translation afterwards to move the object back to where
|
||||||
|
it should be.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
S =
|
||||||
|
\begin{bmatrix}
|
||||||
|
s_x & 0 & 0 & 0 \\
|
||||||
|
0 & s_y & 0 & 0 \\
|
||||||
|
0 & 0 & s_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
"""
|
||||||
|
if not sy:
|
||||||
|
sy = sx
|
||||||
|
sz = sx
|
||||||
|
T = matrix([[sx, 0, 0, 0],
|
||||||
|
[ 0,sy, 0, 0],
|
||||||
|
[ 0, 0,sz, 0],
|
||||||
|
[ 0, 0, 0, 1]])
|
||||||
|
return T
|
||||||
|
|
||||||
|
def __mul__(self, other):
|
||||||
|
r"""Scalar multiplication, dot product (inner product) or
|
||||||
|
matrix-vector multiplication.
|
||||||
|
|
||||||
|
a * b (new object)
|
||||||
|
|
||||||
|
:type other: scalar, vector (or 1d list), matrix (or 2d list)
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\mathbf{C} &= \mathbf{A} \cdot b \\
|
||||||
|
\mathbf{c} &= \mathbf{A} \cdot \mathbf{b} \\
|
||||||
|
\mathbf{C} &= \mathbf{A} \cdot \mathbf{B}
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
No size checking will be conducted, therefore no exceptions for
|
||||||
|
wrong usage (result will be nonsense).
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> m = matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]]) * 5
|
||||||
|
>>> print(m)
|
||||||
|
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60], [0, 0, 0, 5]]
|
||||||
|
>>> m = matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]]) * 5.
|
||||||
|
>>> print(m)
|
||||||
|
[[5.0, 10.0, 15.0, 20.0], [25.0, 30.0, 35.0, 40.0], [45.0, 50.0, 55.0, 60.0], [0.0, 0.0, 0.0, 5.0]]
|
||||||
|
>>> v = matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) * vector([12, 12, 13])
|
||||||
|
>>> print(v)
|
||||||
|
[75, 186, 297]
|
||||||
|
>>> m = matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) * matrix([[12, 12, 13], [14, 15, 16], [17, 18, 19]])
|
||||||
|
>>> print(m)
|
||||||
|
[[91, 96, 102], [220, 231, 246], [349, 366, 390]]
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:meth:`__rmul__`
|
||||||
|
"""
|
||||||
|
try: # matrix * matrix
|
||||||
|
return matrix([[sum(c*d for c, d in zip(a_row, b_col)) for b_col in zip(*other)] for a_row in self])
|
||||||
|
except:
|
||||||
|
try: # matrix * vector
|
||||||
|
return vector([sum(c*d for c, d in zip(a_row, other)) for a_row in self])
|
||||||
|
except: # matrix * scalar
|
||||||
|
return matrix([[a*other for a in a_row] for a_row in self])
|
||||||
|
|
||||||
|
def __rmul__(self, other):
|
||||||
|
r"""Scalar multiplication, dot product (inner product) or
|
||||||
|
vector-matrix multiplication.
|
||||||
|
|
||||||
|
a * b (new object)
|
||||||
|
|
||||||
|
:type other: scalar (or 1d list and 2d list)
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\mathbf{C} &= a \cdot \mathbf{B} \\
|
||||||
|
\mathbf{c} &= \mathbf{a} \cdot \mathbf{B} \\
|
||||||
|
\mathbf{C} &= \mathbf{A} \cdot \mathbf{B}
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
No size checking will be conducted, therefore no exceptions for
|
||||||
|
wrong usage (result will be nonsense).
|
||||||
|
|
||||||
|
:Example:
|
||||||
|
|
||||||
|
>>> m = 5 * matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]]) * 5
|
||||||
|
>>> print(m)
|
||||||
|
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60], [0, 0, 0, 5]]
|
||||||
|
>>> m = 5. * matrix([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [0, 0, 0, 1]])
|
||||||
|
>>> print(m)
|
||||||
|
[[5.0, 10.0, 15.0, 20.0], [25.0, 30.0, 35.0, 40.0], [45.0, 50.0, 55.0, 60.0], [0.0, 0.0, 0.0, 5.0]]
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:meth:`__mul__`
|
||||||
|
:meth:`vector.__mul__` for vector * matrix
|
||||||
|
"""
|
||||||
|
try: # 2d list * matrix (matrix * matrix see matrix.__mul__)
|
||||||
|
return matrix([[sum(c*d for c, d in zip(a_row, b_col)) for b_col in zip(*self)] for a_row in other])
|
||||||
|
except:
|
||||||
|
try: # 1d list * matrix (vector * matrix see vector.__mul__)
|
||||||
|
return vector([sum(c*d for c, d in zip(other, b_col)) for b_col in zip(*self)])
|
||||||
|
except: # scalar * vector
|
||||||
|
return self*other
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return str([*self])
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "matrix(" + str(self) + ")"
|
||||||
|
|
||||||
|
def rotate_x(self, theta):
|
||||||
|
r"""Rotation about the x dirction.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx' & yy' & yz' & t_y' \\
|
||||||
|
zx' & zy' & zz' & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & 0 \\
|
||||||
|
0 & \cos \theta & -\sin \theta & 0 \\
|
||||||
|
0 & \sin \theta & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
"""
|
||||||
|
self[:] = matrix.rx(theta) * self
|
||||||
|
return self
|
||||||
|
|
||||||
|
def rotate_y(self, theta):
|
||||||
|
r"""Rotation about the y dirction.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx' & xy' & xz' & t_x' \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx' & zy' & zz' & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & 0 & \sin \theta & 0 \\
|
||||||
|
0 & 1 & 0 & 0 \\
|
||||||
|
-\sin \theta & 0 & \cos \theta & 0 \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
"""
|
||||||
|
self[:] = matrix.ry(theta) * self
|
||||||
|
return self
|
||||||
|
|
||||||
|
def rotate_z(self, theta):
|
||||||
|
r"""Rotation about the z dirction.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx' & xy' & xz' & t_x' \\
|
||||||
|
yx' & yy' & yz' & t_y' \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
\cos \theta & -\sin \theta & 0 & 0 \\
|
||||||
|
\sin \theta & \cos \theta & 0 & 0 \\
|
||||||
|
0 & 0 & 1 & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
"""
|
||||||
|
self[:] = matrix.rz(theta) * self
|
||||||
|
return self
|
||||||
|
|
||||||
|
def translate(self, tx, ty, tz):
|
||||||
|
r"""Translation
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x' \\
|
||||||
|
yx & yy & yz & t_y' \\
|
||||||
|
zx & zy & zz & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
1 & 0 & 0 & t_x \\
|
||||||
|
0 & 1 & 0 & t_y \\
|
||||||
|
0 & 0 & 1 & t_z \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
"""
|
||||||
|
self[:] = matrix.t(tx, ty, tz) * self
|
||||||
|
return self
|
||||||
|
|
||||||
|
def scale(self, sx, sy=None, sz=None):
|
||||||
|
r"""Scaling
|
||||||
|
|
||||||
|
uniform scaling if sx=sy=sz=s.
|
||||||
|
Note that scaling happens around the origin, so objects not
|
||||||
|
centered at the origin will have their centers move. To avoid this,
|
||||||
|
either scale the object when it's located at the origin, or
|
||||||
|
perform a translation afterwards to move the object back to where
|
||||||
|
it should be.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx' & xy' & xz' & t_x' \\
|
||||||
|
yx' & yy' & yz' & t_y' \\
|
||||||
|
zx' & zy' & zz' & t_z' \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix} =
|
||||||
|
\begin{bmatrix}
|
||||||
|
s_x & 0 & 0 & 0 \\
|
||||||
|
0 & s_y & 0 & 0 \\
|
||||||
|
0 & 0 & s_z & 0 \\
|
||||||
|
0 & 0 & 0 & 1
|
||||||
|
\end{bmatrix}
|
||||||
|
\begin{bmatrix}
|
||||||
|
xx & xy & xz & t_x \\
|
||||||
|
yx & yy & yz & t_y \\
|
||||||
|
zx & zy & zz & t_z \\
|
||||||
|
0 & 0 & 0 & h
|
||||||
|
\end{bmatrix}
|
||||||
|
"""
|
||||||
|
if not sy:
|
||||||
|
sy = sx
|
||||||
|
sz = sx
|
||||||
|
self[:] = matrix.s(sx, sy, sz) * self
|
||||||
|
return self
|
||||||
|
|||||||
Reference in New Issue
Block a user