change data, mathematics, function, geometry and geometry_plot_pylab. add data_step, data_step_std and helper. add an example and more documentation.
inside the data module rename read to read_columns add add new read function to read the whole file as string. add print_list function to print one element per line. add unique_list and unique_list_hashable to reduce the list into a unique list with same order. add find_last, str_between, str_to_list functions. inside the mathematics module for vector add normalized creating a new object (normalize will change the object), isclose and iscloseto, change ang to round internal number. for matrix improve slicing and add transposed creating a new object (transpose will change object). inside the function module add b_spline_basis, b_spline_curve_with_knots and b_spline_knots functions. add sample_hal_open and sample_half_open_seq. add circle and ellipse. inside the geometry module change CS init from using lists to Directions and add new constructor CS.init_xzy using lists. rename Wireframe to Polyline. add classes B_spline_curve_with_knots, Ellipse, ArcCircle, ArcEllipse, ArcBSplineCurveWithKnots. add function sample_half_open to create a list of Points. inside the geometry_plot_pylab module change the help text. add step_and data data_step_std module to read a step file to list and draw the content. add helper module with context manager and decorator timeit to meassure the time for a section or function. add example for b_spline function.
This commit is contained in:
2
docs/build/html/.buildinfo
vendored
2
docs/build/html/.buildinfo
vendored
@@ -1,4 +1,4 @@
|
||||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: caf5792fd17da2c604992977d35f1f60
|
||||
config: 2580fd671a06d4c76900a6be80ac7ca7
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
||||
3
docs/build/html/_modules/index.html
vendored
3
docs/build/html/_modules/index.html
vendored
@@ -34,6 +34,8 @@
|
||||
|
||||
<h1>All modules for which code is available</h1>
|
||||
<ul><li><a href="pylib/data.html">pylib.data</a></li>
|
||||
<li><a href="pylib/data_step.html">pylib.data_step</a></li>
|
||||
<li><a href="pylib/data_step_std.html">pylib.data_step_std</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>
|
||||
@@ -41,6 +43,7 @@
|
||||
<li><a href="pylib/geometry2d.html">pylib.geometry2d</a></li>
|
||||
<li><a href="pylib/geometry2d_plot.html">pylib.geometry2d_plot</a></li>
|
||||
<li><a href="pylib/geometry_plot_pylab.html">pylib.geometry_plot_pylab</a></li>
|
||||
<li><a href="pylib/helper.html">pylib.helper</a></li>
|
||||
<li><a href="pylib/mathematics.html">pylib.mathematics</a></li>
|
||||
<li><a href="pylib/numerical/fit.html">pylib.numerical.fit</a></li>
|
||||
<li><a href="pylib/numerical/integration.html">pylib.numerical.integration</a></li>
|
||||
|
||||
142
docs/build/html/_modules/pylib/data.html
vendored
142
docs/build/html/_modules/pylib/data.html
vendored
@@ -35,9 +35,10 @@
|
||||
<h1>Source code for pylib.data</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Read and write data to or from file and manipulate data structures.</span>
|
||||
<span class="sd">"""Read and write data to or from file and manipulate data</span>
|
||||
<span class="sd">structures.</span>
|
||||
|
||||
<span class="sd">:Date: 2019-10-11</span>
|
||||
<span class="sd">:Date: 2019-12-28</span>
|
||||
|
||||
<span class="sd">.. module:: data</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
@@ -48,6 +49,7 @@
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="kn">import</span> <span class="nn">pickle</span>
|
||||
<span class="kn">import</span> <span class="nn">collections</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
|
||||
<div class="viewcode-block" id="issequence"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.issequence">[docs]</a><span class="k">def</span> <span class="nf">issequence</span><span class="p">(</span><span class="n">obj</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
@@ -78,11 +80,25 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">collections</span><span class="o">.</span><span class="n">abc</span><span class="o">.</span><span class="n">Sequence</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="read"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.read">[docs]</a><span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="n">x_column</span><span class="p">,</span> <span class="n">y_column</span><span class="p">,</span> <span class="n">default</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="read"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.read">[docs]</a><span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="n">file_name</span><span class="p">):</span>
|
||||
<span class="sd">"""Read ascii data file.</span>
|
||||
|
||||
<span class="sd"> :param filename: file to read</span>
|
||||
<span class="sd"> :type filename: str</span>
|
||||
|
||||
<span class="sd"> :returns: file content</span>
|
||||
<span class="sd"> :rtype: str</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">file_str</span> <span class="o">=</span> <span class="s1">''</span>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_name</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
|
||||
<span class="n">file_str</span> <span class="o">=</span> <span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">file_str</span></div>
|
||||
|
||||
<div class="viewcode-block" id="read_columns"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.read_columns">[docs]</a><span class="k">def</span> <span class="nf">read_columns</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="n">x_column</span><span class="p">,</span> <span class="n">y_column</span><span class="p">,</span> <span class="n">default</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="sd">"""Read ascii data file.</span>
|
||||
|
||||
<span class="sd"> :param file_name: file to read</span>
|
||||
<span class="sd"> :type file_name: str</span>
|
||||
<span class="sd"> :param x_column: column index for the x data (first column is 0)</span>
|
||||
<span class="sd"> :type x_column: int</span>
|
||||
<span class="sd"> :param y_column: column index for the y data (first column is 0)</span>
|
||||
@@ -95,8 +111,6 @@
|
||||
<span class="sd"> :returns: x and y</span>
|
||||
<span class="sd"> :rtype: tuple(list, list)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">default</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">default</span>
|
||||
|
||||
@@ -167,6 +181,14 @@
|
||||
<span class="c1"># every dump needs a load</span>
|
||||
<span class="n">pickle</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">object_data</span><span class="p">,</span> <span class="n">output</span><span class="p">,</span> <span class="n">pickle</span><span class="o">.</span><span class="n">HIGHEST_PROTOCOL</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="print_list"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.print_list">[docs]</a><span class="k">def</span> <span class="nf">print_list</span><span class="p">(</span><span class="n">lst</span><span class="p">):</span>
|
||||
<span class="sd">"""Print list, one list element per line.</span>
|
||||
|
||||
<span class="sd"> :param lst: list to print</span>
|
||||
<span class="sd"> :type lst: list</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="p">[</span><span class="nb">print</span><span class="p">(</span><span class="n">row</span><span class="p">)</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">lst</span><span class="p">]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="fold_list"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.fold_list">[docs]</a><span class="k">def</span> <span class="nf">fold_list</span><span class="p">(</span><span class="n">lst</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
|
||||
<span class="sd">"""Convert one-dimensional kx1 array (list) to two-dimensional mxn</span>
|
||||
<span class="sd"> array. m = k / n</span>
|
||||
@@ -238,6 +260,24 @@
|
||||
<span class="n">lst</span> <span class="o">=</span> <span class="p">[</span><span class="nb">round</span><span class="p">(</span><span class="n">start</span> <span class="o">+</span> <span class="n">step</span><span class="o">*</span><span class="n">i</span><span class="p">,</span> <span class="n">exponent</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">n</span><span class="p">)]</span>
|
||||
<span class="k">return</span> <span class="n">lst</span></div>
|
||||
|
||||
<div class="viewcode-block" id="unique_list_hashable"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.unique_list_hashable">[docs]</a><span class="k">def</span> <span class="nf">unique_list_hashable</span><span class="p">(</span><span class="n">sequence</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> faster using set() but elements of the sequence must be hashable.</span>
|
||||
<span class="sd"> unhashable types: 'list'</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># https://stackoverflow.com/a/37163210</span>
|
||||
<span class="n">used</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
<span class="c1"># .add(x) will always be falsy</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">sequence</span> <span class="k">if</span> <span class="n">x</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">used</span> <span class="ow">and</span> <span class="p">(</span><span class="n">used</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">True</span><span class="p">)]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="unique_list"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.unique_list">[docs]</a><span class="k">def</span> <span class="nf">unique_list</span><span class="p">(</span><span class="n">sequence</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># https://stackoverflow.com/a/37163210</span>
|
||||
<span class="n">used</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="c1"># .append(x) will always be falsy</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">sequence</span> <span class="k">if</span> <span class="n">x</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">used</span> <span class="ow">and</span> <span class="p">(</span><span class="n">used</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="ow">or</span> <span class="kc">True</span><span class="p">)]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="unique_ending"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.unique_ending">[docs]</a><span class="k">def</span> <span class="nf">unique_ending</span><span class="p">(</span><span class="n">ids</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="sd">"""From id list get list with unique ending.</span>
|
||||
|
||||
@@ -249,12 +289,11 @@
|
||||
<span class="sd"> :returns: unique ending of ids</span>
|
||||
<span class="sd"> :rtype: list</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">ids</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="n">idi</span><span class="p">[</span><span class="o">-</span><span class="n">n</span><span class="p">:]</span> <span class="k">for</span> <span class="n">idi</span> <span class="ow">in</span> <span class="n">ids</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">x</span><span class="p">)):</span>
|
||||
<span class="k">return</span> <span class="n">unique_ending</span><span class="p">(</span><span class="n">ids</span><span class="p">,</span> <span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">x</span></div>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="n">idi</span><span class="p">[</span><span class="o">-</span><span class="n">n</span><span class="p">:]</span> <span class="k">for</span> <span class="n">idi</span> <span class="ow">in</span> <span class="n">ids</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">x</span><span class="p">)):</span>
|
||||
<span class="k">return</span> <span class="n">unique_ending</span><span class="p">(</span><span class="n">ids</span><span class="p">,</span> <span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">x</span></div>
|
||||
|
||||
<div class="viewcode-block" id="get_id"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.get_id">[docs]</a><span class="k">def</span> <span class="nf">get_id</span><span class="p">(</span><span class="n">ids</span><span class="p">,</span> <span class="n">uide</span><span class="p">):</span>
|
||||
<span class="sd">"""Get full id from unique id ending.</span>
|
||||
@@ -269,6 +308,87 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># take first element, because we know it is a unique ending</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">idi</span> <span class="k">for</span> <span class="n">idi</span> <span class="ow">in</span> <span class="n">ids</span> <span class="k">if</span> <span class="n">idi</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="n">uide</span><span class="p">)][</span><span class="mi">0</span><span class="p">]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="find_last"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.find_last">[docs]</a><span class="k">def</span> <span class="nf">find_last</span><span class="p">(</span><span class="n">sequence</span><span class="p">,</span> <span class="n">pattern</span><span class="p">):</span>
|
||||
<span class="sd">"""Find last last occurance in sequence (text)</span>
|
||||
|
||||
<span class="sd"> :param sequence: text to search in</span>
|
||||
<span class="sd"> :type sequence: str</span>
|
||||
<span class="sd"> :param pattern: search pattern</span>
|
||||
<span class="sd"> :type pattern: str</span>
|
||||
|
||||
<span class="sd"> :returns: index (-1 if pattern not in sequence)</span>
|
||||
<span class="sd"> :rtype: int</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">pattern</span> <span class="ow">in</span> <span class="n">sequence</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span> <span class="o">-</span> <span class="n">sequence</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">pattern</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span></div>
|
||||
|
||||
<div class="viewcode-block" id="str_between"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.str_between">[docs]</a><span class="k">def</span> <span class="nf">str_between</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">):</span>
|
||||
<span class="sd">"""Get text between two pattern.</span>
|
||||
|
||||
<span class="sd"> Text can be multi-line.</span>
|
||||
|
||||
<span class="sd"> :param text: text to search in</span>
|
||||
<span class="sd"> :type text: str</span>
|
||||
<span class="sd"> :param left: left pattern</span>
|
||||
<span class="sd"> :type left: str</span>
|
||||
<span class="sd"> :param right: right pattern</span>
|
||||
<span class="sd"> :type right: str</span>
|
||||
|
||||
<span class="sd"> :returns: text between the left and right pattern</span>
|
||||
<span class="sd"> :rtype: str</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">left</span><span class="o">+</span><span class="s1">'(.+?)'</span><span class="o">+</span><span class="n">right</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">DOTALL</span><span class="p">)</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s1">''</span></div>
|
||||
|
||||
<div class="viewcode-block" id="str_to_list"><a class="viewcode-back" href="../../pylib.data.html#pylib.data.str_to_list">[docs]</a><span class="k">def</span> <span class="nf">str_to_list</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">delimiter</span><span class="o">=</span><span class="s1">';</span><span class="se">\n</span><span class="s1">'</span><span class="p">,</span> <span class="n">newline_replacement</span><span class="o">=</span><span class="s1">''</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Converts a string with block information into a list.</span>
|
||||
|
||||
<span class="sd"> This function un-wraps multi-line block information into one line.</span>
|
||||
|
||||
<span class="sd"> :param string: string with block information</span>
|
||||
<span class="sd"> :type string: str</span>
|
||||
<span class="sd"> :param delimiter: block delimiter (default = ';\n'). This will be</span>
|
||||
<span class="sd"> removed from the resulting list.</span>
|
||||
<span class="sd"> :type delimiter: str</span>
|
||||
<span class="sd"> :param newline_replacement: block lines replacement (default = '')</span>
|
||||
<span class="sd"> :type newline_replacement: str</span>
|
||||
|
||||
<span class="sd"> :returns: list of block information</span>
|
||||
<span class="sd"> :rtype: list</span>
|
||||
|
||||
<span class="sd"> .. note:: Every line is left striped. Empty line are ignored.</span>
|
||||
|
||||
<span class="sd"> :Example:</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> before (string):</span>
|
||||
<span class="sd"> FILE_DESCRIPTION(('Open CASCADE Model'),'2;1');</span>
|
||||
<span class="sd"> FILE_NAME('Open CASCADE Shape Model','2019-10-14T14:32:20',('Author'),(</span>
|
||||
<span class="sd"> 'Open CASCADE'),'Open CASCADE STEP processor 7.1','Open CASCADE 7.1'</span>
|
||||
<span class="sd"> ,'Unknown');</span>
|
||||
<span class="sd"> FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));</span>
|
||||
|
||||
<span class="sd"> after (list elements one per line):</span>
|
||||
<span class="sd"> FILE_DESCRIPTION(('Open CASCADE Model'),'2;1')</span>
|
||||
<span class="sd"> FILE_NAME('Open CASCADE Shape Model','2019-10-14T14:32:20',('Author'),('Open CASCADE'),'Open CASCADE STEP processor 7.1','Open CASCADE 7.1','Unknown')</span>
|
||||
<span class="sd"> FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'))</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># for example blocks are seperated by ;\n</span>
|
||||
<span class="n">blocks</span> <span class="o">=</span> <span class="n">string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">delimiter</span><span class="p">)</span>
|
||||
<span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">block</span> <span class="ow">in</span> <span class="n">blocks</span><span class="p">:</span>
|
||||
<span class="c1"># un-wrap block to single line</span>
|
||||
<span class="c1"># remove \n and replace with newline_replacement</span>
|
||||
<span class="n">line</span> <span class="o">=</span> <span class="n">newline_replacement</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">row</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span> <span class="k">for</span>
|
||||
<span class="n">row</span> <span class="ow">in</span> <span class="n">block</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)])</span>
|
||||
<span class="c1"># append line if True (if it has some content)</span>
|
||||
<span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">if</span> <span class="nb">bool</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">else</span> <span class="kc">False</span>
|
||||
<span class="k">return</span> <span class="n">lines</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
785
docs/build/html/_modules/pylib/data_step.html
vendored
Normal file
785
docs/build/html/_modules/pylib/data_step.html
vendored
Normal file
@@ -0,0 +1,785 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.data_step — pylib 2019.12.21 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.data_step</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""STEP reader.</span>
|
||||
|
||||
<span class="sd">:Date: 2020-01-03</span>
|
||||
|
||||
<span class="sd">.. module:: data_step</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: STEP reader.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">.data</span> <span class="kn">import</span> <span class="n">read</span><span class="p">,</span> <span class="n">find_last</span><span class="p">,</span> <span class="n">str_between</span><span class="p">,</span> <span class="n">str_to_list</span>
|
||||
<span class="kn">from</span> <span class="nn">.data_step_std</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">CARTESIAN_POINT</span><span class="p">,</span> <span class="n">VERTEX_POINT</span><span class="p">,</span> <span class="n">DIRECTION</span><span class="p">,</span> <span class="n">VECTOR</span><span class="p">,</span> <span class="n">LINE</span><span class="p">,</span>
|
||||
<span class="n">AXIS2_PLACEMENT_2D</span><span class="p">,</span> <span class="n">AXIS2_PLACEMENT_3D</span><span class="p">,</span> <span class="n">CIRCLE</span><span class="p">,</span> <span class="n">SURFACE_CURVE</span><span class="p">,</span>
|
||||
<span class="n">SEAM_CURVE</span><span class="p">,</span> <span class="n">EDGE_CURVE</span><span class="p">,</span> <span class="n">B_SPLINE_CURVE_WITH_KNOTS</span><span class="p">,</span>
|
||||
<span class="n">ORIENTED_EDGE</span><span class="p">,</span> <span class="n">EDGE_LOOP</span><span class="p">,</span> <span class="n">ELLIPSE</span>
|
||||
<span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">.mathematics</span> <span class="kn">import</span> <span class="n">vector</span>
|
||||
<span class="kn">from</span> <span class="nn">.geometry</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">World</span><span class="p">,</span> <span class="n">Line</span><span class="p">,</span> <span class="n">Point</span><span class="p">,</span> <span class="n">Circle</span><span class="p">,</span> <span class="n">CS</span><span class="p">,</span> <span class="n">ArcCircle</span><span class="p">,</span> <span class="n">ArcEllipse</span><span class="p">,</span> <span class="n">Direction</span><span class="p">,</span>
|
||||
<span class="n">Polyline</span><span class="p">,</span> <span class="n">Ellipse</span><span class="p">,</span> <span class="n">B_spline_curve_with_knots</span><span class="p">,</span> <span class="n">ArcBSplineCurveWithKnots</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="step"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.step">[docs]</a><span class="k">class</span> <span class="nc">step</span><span class="p">:</span>
|
||||
<span class="sa">r</span><span class="sd">"""STEP reader class.</span>
|
||||
|
||||
<span class="sd"> 1st read a STEP file.</span>
|
||||
<span class="sd"> 2nd convert header and data section string to list of commands.</span>
|
||||
|
||||
<span class="sd"> The STEP file string can have commands distributed over several</span>
|
||||
<span class="sd"> lines, the commands are seperated by ``;\n``. This class un-wraps</span>
|
||||
<span class="sd"> each command into one line (remove ``\n``) and removes empty lines.</span>
|
||||
|
||||
<span class="sd"> :Example:</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> header part of a step file (between HEADER; and ENDSEC;):</span>
|
||||
<span class="sd"> FILE_DESCRIPTION(('Open CASCADE Model'),'2;1');</span>
|
||||
<span class="sd"> FILE_NAME('Open CASCADE Shape Model','2019-10-14T14:32:20',('Author'),(</span>
|
||||
<span class="sd"> 'Open CASCADE'),'Open CASCADE STEP processor 7.1','Open CASCADE 7.1'</span>
|
||||
<span class="sd"> ,'Unknown');</span>
|
||||
<span class="sd"> FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));</span>
|
||||
|
||||
<span class="sd"> will result in (but as a list):</span>
|
||||
<span class="sd"> FILE_DESCRIPTION(('Open CASCADE Model'),'2;1')</span>
|
||||
<span class="sd"> FILE_NAME('Open CASCADE Shape Model','2019-10-14T14:32:20',('Author'),('Open CASCADE'),'Open CASCADE STEP processor 7.1','Open CASCADE 7.1','Unknown')</span>
|
||||
<span class="sd"> FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'))</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_name</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">file_str</span> <span class="o">=</span> <span class="n">read</span><span class="p">(</span><span class="n">file_name</span><span class="p">)</span>
|
||||
|
||||
<span class="n">step_str</span> <span class="o">=</span> <span class="n">str_between</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">file_str</span><span class="p">,</span> <span class="s1">'ISO-10303-21;'</span><span class="p">,</span>
|
||||
<span class="s1">'END-ISO-10303-21;'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">step_str</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'File is not a step file'</span><span class="p">)</span>
|
||||
|
||||
<span class="n">header_str</span> <span class="o">=</span> <span class="n">str_between</span><span class="p">(</span><span class="n">step_str</span><span class="p">,</span> <span class="s1">'HEADER;'</span><span class="p">,</span> <span class="s1">'ENDSEC;'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">header</span> <span class="o">=</span> <span class="n">str_to_list</span><span class="p">(</span><span class="n">string</span><span class="o">=</span><span class="n">header_str</span><span class="p">,</span> <span class="n">delimiter</span><span class="o">=</span><span class="s1">';</span><span class="se">\n</span><span class="s1">'</span><span class="p">,</span>
|
||||
<span class="n">newline_replacement</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span>
|
||||
<span class="n">data_str</span> <span class="o">=</span> <span class="n">str_between</span><span class="p">(</span><span class="n">step_str</span><span class="p">,</span> <span class="s1">'DATA;'</span><span class="p">,</span> <span class="s1">'ENDSEC;'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">str_to_list</span><span class="p">(</span><span class="n">string</span><span class="o">=</span><span class="n">data_str</span><span class="p">,</span> <span class="n">delimiter</span><span class="o">=</span><span class="s1">';</span><span class="se">\n</span><span class="s1">'</span><span class="p">,</span>
|
||||
<span class="n">newline_replacement</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="str_to_cmd_args"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.str_to_cmd_args">[docs]</a><span class="k">def</span> <span class="nf">str_to_cmd_args</span><span class="p">(</span><span class="n">cmd_str</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Using negative lookahead to match all the commas which are not</span>
|
||||
<span class="sd"> inside a parenthesis and then split the string at the commas.</span>
|
||||
|
||||
<span class="sd"> :Example:</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> CARTESIAN_POINT('',(0.E+000,0.E+000,0.E+000))</span>
|
||||
<span class="sd"> will become</span>
|
||||
<span class="sd"> command = 'CARTESIAN_POINT'</span>
|
||||
<span class="sd"> arguments = ['', '(0.E+000,0.E+000,0.E+000)']</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
|
||||
<span class="n">command</span> <span class="o">=</span> <span class="n">cmd_str</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">cmd_str</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'('</span><span class="p">)]</span>
|
||||
<span class="n">inside_parenthesis</span> <span class="o">=</span> <span class="n">cmd_str</span><span class="p">[(</span><span class="n">cmd_str</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'('</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span><span class="n">find_last</span><span class="p">(</span><span class="n">cmd_str</span><span class="p">,</span> <span class="s1">')'</span><span class="p">)]</span>
|
||||
<span class="n">arguments</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="sa">r</span><span class="s1">',\s*(?![^()]*\))'</span><span class="p">,</span> <span class="n">inside_parenthesis</span><span class="p">)</span>
|
||||
<span class="c1"># arguments = [i.strip() for i in inside_parenthesis.split(',')] # does not work for arguments with commas inside the parenthsis</span>
|
||||
<span class="k">return</span> <span class="n">command</span><span class="p">,</span> <span class="n">arguments</span></div>
|
||||
|
||||
<div class="viewcode-block" id="data_cmds_to_data_dict"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.data_cmds_to_data_dict">[docs]</a><span class="k">def</span> <span class="nf">data_cmds_to_data_dict</span><span class="p">(</span><span class="n">data_cmds</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="sd">"""Create dict with step objects</span>
|
||||
|
||||
<span class="sd"> 1st it creats keys equal to the number id string and values with</span>
|
||||
<span class="sd"> the command string.</span>
|
||||
|
||||
<span class="sd"> 2nd it creats keys for different step object types to dict all</span>
|
||||
<span class="sd"> commands as new created objects of that type.</span>
|
||||
|
||||
<span class="sd"> :Example:</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> from:</span>
|
||||
<span class="sd"> ["#12 = CARTESIAN_POINT('',(0.E+000,0.E+000,0.E+000))",</span>
|
||||
<span class="sd"> "#22 = VERTEX_POINT('',#23)"]</span>
|
||||
<span class="sd"> to:</span>
|
||||
<span class="sd"> {'#12': 'CARTESIAN_POINT('',(0.E+000,0.E+000,0.E+000))',</span>
|
||||
<span class="sd"> '#22': 'VERTEX_POINT('',#23)'}</span>
|
||||
|
||||
<span class="sd"> additional</span>
|
||||
<span class="sd"> {</span>
|
||||
<span class="sd"> 'cartesian_points': {</span>
|
||||
<span class="sd"> '#12': pointer_to_new_created_point_object,</span>
|
||||
<span class="sd"> ...</span>
|
||||
<span class="sd"> },</span>
|
||||
<span class="sd"> 'vertex_points': {</span>
|
||||
<span class="sd"> '#22': pointer_to_new_created_vertex_object,</span>
|
||||
<span class="sd"> ...</span>
|
||||
<span class="sd"> },</span>
|
||||
<span class="sd"> ...</span>
|
||||
<span class="sd"> }</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">data_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'cartesian_point'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'vertex_point'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'direction'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'vector'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'line'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'circle'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'ellipse'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'axis2_placement_2d'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'axis2_placement_3d'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'surface_curve'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'seam_curve'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'b_spline_curve_with_knots'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_curve'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'oriented_edge'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_loop'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">processed_cmds</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">ignored_cmds</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">data_cmd</span> <span class="ow">in</span> <span class="n">data_cmds</span><span class="p">:</span>
|
||||
<span class="c1">#print(data_cmd)</span>
|
||||
<span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">data_cmd</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'='</span><span class="p">)</span>
|
||||
<span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">strip</span><span class="p">(),</span> <span class="n">value</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">str_to_cmd_args</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">command</span><span class="p">,</span> <span class="n">arguments</span><span class="p">)</span>
|
||||
<span class="c1"># command can be empty (empty string: '')</span>
|
||||
<span class="c1"># #2052 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','') )</span>
|
||||
<span class="k">try</span><span class="p">:</span> <span class="c1"># do if command.lower() is in data_dict else do nothing</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="n">command</span><span class="o">.</span><span class="n">lower</span><span class="p">()][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">processed_cmds</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="n">ignored_cmds</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'processed_cmds'</span><span class="p">,</span> <span class="n">processed_cmds</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'ignored_cmds'</span><span class="p">,</span> <span class="n">ignored_cmds</span><span class="p">)</span>
|
||||
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># Order is important!</span>
|
||||
<span class="c1">#</span>
|
||||
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># POINT objects</span>
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># create point objects, these will be referenced by vertex_points</span>
|
||||
<span class="c1"># #12 = CARTESIAN_POINT('',(0.E+000,0.E+000,0.E+000));</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cartesian_point'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'cartesian_point'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">CARTESIAN_POINT</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="nb">eval</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> <span class="c1"># tuple of floats # TODO: not use eval!</span>
|
||||
<span class="c1"># vertex_points references to cartesian_points</span>
|
||||
<span class="c1"># #22 = VERTEX_POINT('',#23);</span>
|
||||
<span class="c1"># #23 = CARTESIAN_POINT('',(0.E+000,0.E+000,0.E+000));</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'vertex_point'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'vertex_point'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">VERTEX_POINT</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'cartesian_point'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
|
||||
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># EDGE objects</span>
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># DIRECTIONs</span>
|
||||
<span class="c1"># #30 = DIRECTION('',(0.E+000,0.E+000,1.));</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'direction'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'direction'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">DIRECTION</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="nb">eval</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> <span class="c1"># tuple of floats # TODO: not use eval!</span>
|
||||
<span class="c1"># VECTORs references to DIRECTIONs</span>
|
||||
<span class="c1"># #29 = VECTOR('',#30,1.);</span>
|
||||
<span class="c1"># #30 = DIRECTION('',(0.E+000,0.E+000,1.));</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'vector'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'vector'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">VECTOR</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'direction'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="nb">eval</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span> <span class="c1"># TODO: not use eval!</span>
|
||||
<span class="c1"># LINEs references to cartesian_point and vector</span>
|
||||
<span class="c1"># #27 = LINE('',#28,#29);</span>
|
||||
<span class="c1"># #28 = CARTESIAN_POINT('',(0.E+000,0.E+000,0.E+000));</span>
|
||||
<span class="c1"># #29 = VECTOR('',#30,1.);</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'line'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'line'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">LINE</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'cartesian_point'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'vector'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">]])</span>
|
||||
<span class="c1"># AXIS2_PLACEMENT_2Ds references to location (CARTESIAN_POINT) and ref_direction (DIRECTION)</span>
|
||||
<span class="c1"># #50 = AXIS2_PLACEMENT_2D('',#51,#52);</span>
|
||||
<span class="c1"># #51 = CARTESIAN_POINT('',(0.,0.));</span>
|
||||
<span class="c1"># #52 = DIRECTION('',(1.,0.));</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'axis2_placement_2d'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'axis2_placement_2d'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">AXIS2_PLACEMENT_2D</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'cartesian_point'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'direction'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">]])</span>
|
||||
<span class="c1"># AXIS2_PLACEMENT_3Ds references to location (CARTESIAN_POINT), axis (DIRECTION) and ref_direction (DIRECTION)</span>
|
||||
<span class="c1"># #26 = AXIS2_PLACEMENT_3D('',#27,#28,#29);</span>
|
||||
<span class="c1"># #27 = CARTESIAN_POINT('',(0.,0.,10.));</span>
|
||||
<span class="c1"># #28 = DIRECTION('',(0.,0.,1.));</span>
|
||||
<span class="c1"># #29 = DIRECTION('',(1.,0.,-0.));</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'axis2_placement_3d'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'axis2_placement_3d'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">AXIS2_PLACEMENT_3D</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'cartesian_point'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'direction'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'direction'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]])</span>
|
||||
<span class="c1"># CIRCLE references to AXIS2_PLACEMENT_3D and radius</span>
|
||||
<span class="c1"># #25 = CIRCLE('',#26,5.);</span>
|
||||
<span class="c1"># #26 = AXIS2_PLACEMENT_3D('',#27,#28,#29);</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'circle'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">axis2_placement_cmd</span><span class="p">,</span> <span class="n">axis2_placement_args</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="n">axis2_placement_cmd</span> <span class="o">==</span> <span class="s1">'AXIS2_PLACEMENT_3D'</span><span class="p">:</span>
|
||||
<span class="n">axis2_placement</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'axis2_placement_3d'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="n">axis2_placement_cmd</span> <span class="o">==</span> <span class="s1">'AXIS2_PLACEMENT_2D'</span><span class="p">:</span>
|
||||
<span class="n">axis2_placement</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'axis2_placement_2d'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'circle'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">CIRCLE</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">axis2_placement</span><span class="p">,</span>
|
||||
<span class="nb">eval</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span> <span class="c1"># TODO: not use eval!</span>
|
||||
<span class="c1"># ELLIPSE references to AXIS2_PLACEMENT_3D and both semi axes</span>
|
||||
<span class="c1"># #1049 = ELLIPSE('',#1050,176.13914953808,100.);</span>
|
||||
<span class="c1"># #1050 = AXIS2_PLACEMENT_3D('',#1051,#1052,#1053);</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'ellipse'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">axis2_placement_cmd</span><span class="p">,</span> <span class="n">axis2_placement_args</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="n">axis2_placement_cmd</span> <span class="o">==</span> <span class="s1">'AXIS2_PLACEMENT_3D'</span><span class="p">:</span>
|
||||
<span class="n">axis2_placement</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'axis2_placement_3d'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="n">axis2_placement_cmd</span> <span class="o">==</span> <span class="s1">'AXIS2_PLACEMENT_2D'</span><span class="p">:</span>
|
||||
<span class="n">axis2_placement</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'axis2_placement_2d'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'ellipse'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">ELLIPSE</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">axis2_placement</span><span class="p">,</span>
|
||||
<span class="nb">eval</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="c1"># TODO: not use eval!</span>
|
||||
<span class="nb">eval</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]))</span> <span class="c1"># TODO: not use eval!</span>
|
||||
<span class="c1"># B_SPLINE_CURVE_WITH_KNOTS references to list of CARTESIAN_POINTs</span>
|
||||
<span class="c1"># #2195=B_SPLINE_CURVE_WITH_KNOTS('',3,(#43614,#43615,#43616,#43617,#43618,</span>
|
||||
<span class="c1"># #43619,#43620,#43621,#43622,#43623,#43624,#43625,#43626,#43627,#43628,#43629,</span>
|
||||
<span class="c1"># #43630,#43631,#43632,#43633),.UNSPECIFIED.,.F.,.F.,(4,2,2,2,2,2,2,2,2,4),</span>
|
||||
<span class="c1"># (-0.540362356556626,-0.521155983847334,-0.45632355837375,-0.391167894616668,</span>
|
||||
<span class="c1"># -0.32606569132423,-0.260898117378603,-0.19567917747905,-0.130414239126491,</span>
|
||||
<span class="c1"># -0.0649893846296135,-0.0228378692889149),.UNSPECIFIED.);</span>
|
||||
<span class="c1"># #43614=CARTESIAN_POINT('Ctrl Pts',(-0.852590969048745,68.3094592905054,1.00613961606655E-15));</span>
|
||||
<span class="c1"># #43615=CARTESIAN_POINT('Ctrl Pts',(-0.879956199816603,68.2515804555212,8.67420237522527E-16));</span>
|
||||
<span class="c1"># ...</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'b_spline_curve_with_knots'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'b_spline_curve_with_knots'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">B_SPLINE_CURVE_WITH_KNOTS</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="nb">int</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span>
|
||||
<span class="nb">tuple</span><span class="p">(</span><span class="n">data_dict</span><span class="p">[</span><span class="s1">'cartesian_point'</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">str_to_cmd_args</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">])[</span><span class="mi">1</span><span class="p">]),</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">5</span><span class="p">],</span>
|
||||
<span class="nb">eval</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">6</span><span class="p">]),</span> <span class="c1"># TODO: not use eval!</span>
|
||||
<span class="nb">eval</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">7</span><span class="p">]),</span> <span class="c1"># TODO: not use eval!</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">8</span><span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># SURFACE_CURVE references to a LINE and a list of (two) PCURVEs and a ?</span>
|
||||
<span class="c1"># #26 = SURFACE_CURVE('',#27,(#31,#43),.PCURVE_S1.);</span>
|
||||
<span class="c1"># #27 = LINE('',#28,#29);</span>
|
||||
<span class="c1"># #31 = PCURVE('',#32,#37);</span>
|
||||
<span class="c1"># #32 = PLANE('',#33);</span>
|
||||
<span class="c1"># #33 = AXIS2_PLACEMENT_3D('',#34,#35,#36);</span>
|
||||
<span class="c1"># #37 = DEFINITIONAL_REPRESENTATION('',(#38),#42);</span>
|
||||
<span class="c1"># #38 = LINE('',#39,#40);</span>
|
||||
<span class="c1"># #42 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','') );</span>
|
||||
<span class="c1"># #43 = PCURVE('',#44,#49);</span>
|
||||
<span class="c1"># #44 = PLANE('',#45);</span>
|
||||
<span class="c1"># #45 = AXIS2_PLACEMENT_3D('',#46,#47,#48);</span>
|
||||
<span class="c1"># #49 = DEFINITIONAL_REPRESENTATION('',(#50),#54);</span>
|
||||
<span class="c1"># #50 = LINE('',#51,#52);</span>
|
||||
<span class="c1"># #54 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','') );</span>
|
||||
<span class="c1"># #24 = SURFACE_CURVE('',#25,(#30,#42),.PCURVE_S1.);</span>
|
||||
<span class="c1"># #25 = CIRCLE('',#26,5.);</span>
|
||||
<span class="c1"># #30 = PCURVE('',#31,#36);</span>
|
||||
<span class="c1"># #31 = CONICAL_SURFACE('',#32,10.,0.463647609001);</span>
|
||||
<span class="c1"># #32 = AXIS2_PLACEMENT_3D('',#33,#34,#35);</span>
|
||||
<span class="c1"># #36 = DEFINITIONAL_REPRESENTATION('',(#37),#41);</span>
|
||||
<span class="c1"># #37 = LINE('',#38,#39);</span>
|
||||
<span class="c1"># #41 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','') );</span>
|
||||
<span class="c1"># #42 = PCURVE('',#43,#48);</span>
|
||||
<span class="c1"># #43 = PLANE('',#44);</span>
|
||||
<span class="c1"># #44 = AXIS2_PLACEMENT_3D('',#45,#46,#47);</span>
|
||||
<span class="c1"># #48 = DEFINITIONAL_REPRESENTATION('',(#49),#53);</span>
|
||||
<span class="c1"># #49 = CIRCLE('',#50,5.);</span>
|
||||
<span class="c1"># #50 = AXIS2_PLACEMENT_2D('',#51,#52);</span>
|
||||
<span class="c1"># #51 = CARTESIAN_POINT('',(0.,0.));</span>
|
||||
<span class="c1"># #52 = DIRECTION('',(1.,0.));</span>
|
||||
<span class="c1"># #53 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','') );</span>
|
||||
<span class="c1"># #243 = SURFACE_CURVE('',#244,(#319,#415),.PCURVE_S1.);</span>
|
||||
<span class="c1"># #244 = B_SPLINE_CURVE_WITH_KNOTS();</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'surface_curve'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">curve_3d_cmd</span><span class="p">,</span> <span class="n">curve3d_args</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="n">curve_3d_cmd</span> <span class="o">==</span> <span class="s1">'LINE'</span><span class="p">:</span>
|
||||
<span class="n">curve_3d</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'line'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="n">curve_3d_cmd</span> <span class="o">==</span> <span class="s1">'CIRCLE'</span><span class="p">:</span>
|
||||
<span class="n">curve_3d</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'circle'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="n">curve_3d_cmd</span> <span class="o">==</span> <span class="s1">'ELLIPSE'</span><span class="p">:</span>
|
||||
<span class="n">curve_3d</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'ellipse'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="n">curve_3d_cmd</span> <span class="o">==</span> <span class="s1">'B_SPLINE_CURVE_WITH_KNOTS'</span><span class="p">:</span>
|
||||
<span class="n">curve_3d</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'b_spline_curve_with_knots'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">curve_3d</span> <span class="o">=</span> <span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'surface_curve'</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="s1">'unknown curve_3d'</span><span class="p">,</span> <span class="n">curve_3d</span><span class="p">)</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'surface_curve'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">SURFACE_CURVE</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">curve_3d</span><span class="p">,</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
|
||||
<span class="c1"># SEAM_CURVE references to a Line and a list of (two) PCURVEs and a ?</span>
|
||||
<span class="c1"># #58 = SEAM_CURVE('',#59,(#63,#70),.PCURVE_S1.);</span>
|
||||
<span class="c1"># #59 = LINE('',#60,#61);</span>
|
||||
<span class="c1"># #63 = PCURVE('',#31,#64);</span>
|
||||
<span class="c1"># #31 = CONICAL_SURFACE('',#32,10.,0.463647609001);</span>
|
||||
<span class="c1"># #32 = AXIS2_PLACEMENT_3D('',#33,#34,#35);</span>
|
||||
<span class="c1"># #33 = CARTESIAN_POINT('',(0.,0.,0.));</span>
|
||||
<span class="c1"># #34 = DIRECTION('',(-0.,-0.,-1.));</span>
|
||||
<span class="c1"># #35 = DIRECTION('',(1.,0.,-0.));</span>
|
||||
<span class="c1"># #64 = DEFINITIONAL_REPRESENTATION('',(#65),#69);</span>
|
||||
<span class="c1"># #65 = LINE('',#66,#67);</span>
|
||||
<span class="c1"># #69 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','') );</span>
|
||||
<span class="c1"># #70 = PCURVE('',#31,#71);</span>
|
||||
<span class="c1"># #31 = CONICAL_SURFACE('',#32,10.,0.463647609001);</span>
|
||||
<span class="c1"># #32 = AXIS2_PLACEMENT_3D('',#33,#34,#35);</span>
|
||||
<span class="c1"># #33 = CARTESIAN_POINT('',(0.,0.,0.));</span>
|
||||
<span class="c1"># #34 = DIRECTION('',(-0.,-0.,-1.));</span>
|
||||
<span class="c1"># #35 = DIRECTION('',(1.,0.,-0.));</span>
|
||||
<span class="c1"># #71 = DEFINITIONAL_REPRESENTATION('',(#72),#76);</span>
|
||||
<span class="c1"># #72 = LINE('',#73,#74);</span>
|
||||
<span class="c1"># #76 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','') );</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'seam_curve'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">curve_3d_cmd</span><span class="p">,</span> <span class="n">curve3d_args</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="n">curve_3d_cmd</span> <span class="o">==</span> <span class="s1">'LINE'</span><span class="p">:</span>
|
||||
<span class="n">curve_3d</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'line'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="n">curve_3d_cmd</span> <span class="o">==</span> <span class="s1">'CIRCLE'</span><span class="p">:</span>
|
||||
<span class="n">curve_3d</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'circle'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">curve_3d</span> <span class="o">=</span> <span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'seam_curve'</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="s1">'unknown curve_3d'</span><span class="p">,</span> <span class="n">curve_3d</span><span class="p">)</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'seam_curve'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">SEAM_CURVE</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">curve_3d</span><span class="p">,</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
|
||||
<span class="c1"># EDGE_CURVE references to two VERTEX_POINTs, a CURVE and a BOOLEAN</span>
|
||||
<span class="c1"># #21 = EDGE_CURVE('',#22,#24,#26,.T.);</span>
|
||||
<span class="c1"># #22 = VERTEX_POINT('',#23);</span>
|
||||
<span class="c1"># #24 = VERTEX_POINT('',#25);</span>
|
||||
<span class="c1"># #26 = SURFACE_CURVE('',#27,(#31,#43),.PCURVE_S1.);</span>
|
||||
<span class="c1"># #55 = EDGE_CURVE('',#56,#22,#58,.T.);</span>
|
||||
<span class="c1"># #56 = VERTEX_POINT('',#57);</span>
|
||||
<span class="c1"># #22 = VERTEX_POINT('',#23);</span>
|
||||
<span class="c1"># #58 = SEAM_CURVE('',#59,(#63,#70),.PCURVE_S1.);</span>
|
||||
<span class="c1"># #21187=EDGE_CURVE('',#15685,#15685,#12509,.T.);</span>
|
||||
<span class="c1"># #15685=VERTEX_POINT('',#230114);</span>
|
||||
<span class="c1"># #15685=VERTEX_POINT('',#230114);</span>
|
||||
<span class="c1"># #12509=CIRCLE('',#37712,11.1464466094067);</span>
|
||||
<span class="c1"># #15689=EDGE_CURVE('',#12514,#12512,#2195,.T.);</span>
|
||||
<span class="c1"># #12514=VERTEX_POINT('',#43613);</span>
|
||||
<span class="c1"># #12512=VERTEX_POINT('',#43610);</span>
|
||||
<span class="c1"># #2195=B_SPLINE_CURVE_WITH_KNOTS(...)</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_curve'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">geometry_cmd</span><span class="p">,</span> <span class="n">geometry_args</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="n">geometry_cmd</span> <span class="o">==</span> <span class="s1">'SURFACE_CURVE'</span><span class="p">:</span>
|
||||
<span class="n">edge_geometry</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'surface_curve'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="n">geometry_cmd</span> <span class="o">==</span> <span class="s1">'SEAM_CURVE'</span><span class="p">:</span>
|
||||
<span class="n">edge_geometry</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'seam_curve'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="n">geometry_cmd</span> <span class="o">==</span> <span class="s1">'LINE'</span><span class="p">:</span>
|
||||
<span class="n">edge_geometry</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'line'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="n">geometry_cmd</span> <span class="o">==</span> <span class="s1">'CIRCLE'</span><span class="p">:</span>
|
||||
<span class="n">edge_geometry</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'circle'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
|
||||
<span class="k">elif</span> <span class="n">geometry_cmd</span> <span class="o">==</span> <span class="s1">'B_SPLINE_CURVE_WITH_KNOTS'</span><span class="p">:</span>
|
||||
<span class="n">edge_geometry</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'b_spline_curve_with_knots'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">edge_geometry</span> <span class="o">=</span> <span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'edge_curve'</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="s1">'unknown edge_geometry'</span><span class="p">,</span> <span class="n">geometry_cmd</span><span class="p">)</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_curve'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">EDGE_CURVE</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'vertex_point'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'vertex_point'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="n">edge_geometry</span><span class="p">,</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># poly-curve objects</span>
|
||||
<span class="c1"># to speed things up use EDGE_LOOP to create wireframes instead</span>
|
||||
<span class="c1"># of plotting every single EDGE_CURVE in it's own plot cmd</span>
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># ORIENTED_EDGE references to two re-declared attributes from a CURVE, a CURVE and a BOOLEAN</span>
|
||||
<span class="c1"># 83 = ORIENTED_EDGE('',*,*,#84,.F.);</span>
|
||||
<span class="c1"># #84 = EDGE_CURVE('',#85,#87,#89,.T.);</span>
|
||||
<span class="c1"># ORIENTED_EDGE will have multiple same edges, because connected faces</span>
|
||||
<span class="c1"># use the same curve (about double as EDGE_CURVE)</span>
|
||||
<span class="c1"># BUT combined with EDGE_LOOP the number of concatenated curves decrease.</span>
|
||||
<span class="c1"># (about half to 2/3 of EDGE_CURVE)</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'oriented_edge'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">edge_element_cmd</span><span class="p">,</span> <span class="n">edge_element_args</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="n">edge_element_cmd</span> <span class="o">==</span> <span class="s1">'EDGE_CURVE'</span><span class="p">:</span>
|
||||
<span class="n">edge_element</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_curve'</span><span class="p">][</span><span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">edge_element</span> <span class="o">=</span> <span class="n">arguments</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'oriented_edge'</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="s1">'unknown edge_element'</span><span class="p">,</span> <span class="n">edge_element_cmd</span><span class="p">)</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'oriented_edge'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">ORIENTED_EDGE</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span>
|
||||
<span class="n">edge_element</span><span class="p">,</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># EDGE_LOOP</span>
|
||||
<span class="c1"># #82 = EDGE_LOOP('',(#83,#118,#146,#174));</span>
|
||||
<span class="c1"># #83 = ORIENTED_EDGE('',*,*,#84,.F.);</span>
|
||||
<span class="c1"># #118 = ORIENTED_EDGE('',*,*,#119,.T.);</span>
|
||||
<span class="c1"># #146 = ORIENTED_EDGE('',*,*,#147,.T.);</span>
|
||||
<span class="c1"># #174 = ORIENTED_EDGE('',*,*,#175,.F.);</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_loop'</span><span class="p">]:</span>
|
||||
<span class="n">command</span><span class="p">,</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'cmds'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_loop'</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">EDGE_LOOP</span><span class="p">(</span>
|
||||
<span class="n">arguments</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="nb">tuple</span><span class="p">(</span><span class="n">data_dict</span><span class="p">[</span><span class="s1">'oriented_edge'</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">str_to_cmd_args</span><span class="p">(</span><span class="n">arguments</span><span class="p">[</span><span class="mi">1</span><span class="p">])[</span><span class="mi">1</span><span class="p">]),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">data_dict</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="data_section_dict"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.data_section_dict">[docs]</a><span class="k">def</span> <span class="nf">data_section_dict</span><span class="p">(</span><span class="n">step</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="k">return</span> <span class="n">data_cmds_to_data_dict</span><span class="p">(</span><span class="n">step</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">verbose</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="line_geometry"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.line_geometry">[docs]</a><span class="k">def</span> <span class="nf">line_geometry</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">):</span>
|
||||
<span class="c1"># (normally)</span>
|
||||
<span class="c1"># edge_curve.edge_geometry.curve_3d.pnt.coordinates is</span>
|
||||
<span class="c1"># equal to p1 (see above) this is</span>
|
||||
<span class="c1"># edge_curve.edge_start.vertex_geometry.coordinates</span>
|
||||
<span class="c1"># p2 could be calculated from</span>
|
||||
<span class="c1"># edge_curve.edge_geometry.curve_3d.dir.orientation.direction_ratios</span>
|
||||
<span class="c1"># and edge_curve.edge_geometry.curve_3d.dir.magnitude</span>
|
||||
<span class="c1"># vector = [i*edge_curve.edge_geometry.curve_3d.dir.magnitude for</span>
|
||||
<span class="c1"># i in edge_curve.edge_geometry.curve_3d.dir.orientation.direction_ratios]</span>
|
||||
<span class="k">return</span> <span class="n">Line</span><span class="p">(</span><span class="n">point1</span><span class="o">=</span><span class="n">p1</span><span class="p">,</span> <span class="n">point2</span><span class="o">=</span><span class="n">p2</span><span class="p">)</span></div>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<div class="viewcode-block" id="arc_circle_geometry"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.arc_circle_geometry">[docs]</a><span class="k">def</span> <span class="nf">arc_circle_geometry</span><span class="p">(</span><span class="n">conic</span><span class="p">,</span> <span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">,</span> <span class="n">ellipse</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
|
||||
<span class="n">z</span> <span class="o">=</span> <span class="n">Direction</span><span class="p">(</span><span class="o">*</span><span class="n">conic</span><span class="o">.</span><span class="n">position</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">direction_ratios</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">Direction</span><span class="p">(</span><span class="o">*</span><span class="n">conic</span><span class="o">.</span><span class="n">position</span><span class="o">.</span><span class="n">ref_direction</span><span class="o">.</span><span class="n">direction_ratios</span><span class="p">)</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">Direction</span><span class="o">.</span><span class="n">cross</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">cs_gl</span> <span class="o">=</span> <span class="n">CS</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="n">z</span><span class="p">)</span> <span class="c1"># transform from global to local</span>
|
||||
<span class="n">cs_lg</span> <span class="o">=</span> <span class="n">CS</span><span class="o">.</span><span class="n">transposed</span><span class="p">(</span><span class="n">cs_gl</span><span class="p">)</span> <span class="c1"># transform from local to global</span>
|
||||
|
||||
<span class="n">location</span> <span class="o">=</span> <span class="n">vector</span><span class="p">(</span><span class="n">conic</span><span class="o">.</span><span class="n">position</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">coordinates</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">p1</span> <span class="o">==</span> <span class="n">p2</span><span class="p">:</span> <span class="c1"># Full Circle or Ellipse</span>
|
||||
<span class="k">if</span> <span class="n">ellipse</span><span class="p">:</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">conic</span><span class="o">.</span><span class="n">semi_axis_1</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="n">conic</span><span class="o">.</span><span class="n">semi_axis_2</span>
|
||||
<span class="k">return</span> <span class="n">Ellipse</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">ch_cs</span><span class="p">(</span><span class="n">cs_lg</span><span class="p">)</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="o">*</span><span class="n">location</span><span class="p">)</span>
|
||||
<span class="c1"># else Circle</span>
|
||||
<span class="n">radius</span> <span class="o">=</span> <span class="n">conic</span><span class="o">.</span><span class="n">radius</span>
|
||||
<span class="k">return</span> <span class="n">Circle</span><span class="p">(</span><span class="n">radius</span><span class="p">)</span><span class="o">.</span><span class="n">ch_cs</span><span class="p">(</span><span class="n">cs_lg</span><span class="p">)</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="o">*</span><span class="n">location</span><span class="p">)</span>
|
||||
<span class="c1"># else Arc</span>
|
||||
<span class="c1"># points relative to the location</span>
|
||||
<span class="n">v1</span><span class="p">,</span> <span class="n">v2</span> <span class="o">=</span> <span class="n">p1</span> <span class="o">-</span> <span class="n">location</span><span class="p">,</span> <span class="n">p2</span> <span class="o">-</span> <span class="n">location</span>
|
||||
<span class="c1">#ang1, ang2 = vector.ang(x, v1), vector.ang(x, v2)</span>
|
||||
<span class="c1"># relative points transformed into circle coordinate system</span>
|
||||
<span class="c1"># relative point lay in local xy-plane</span>
|
||||
<span class="n">vl1</span><span class="p">,</span> <span class="n">vl2</span> <span class="o">=</span> <span class="n">vector</span><span class="p">(</span><span class="n">v1</span><span class="p">)</span><span class="o">.</span><span class="n">ch_cs</span><span class="p">(</span><span class="n">cs_gl</span><span class="p">),</span> <span class="n">vector</span><span class="p">(</span><span class="n">v2</span><span class="p">)</span><span class="o">.</span><span class="n">ch_cs</span><span class="p">(</span><span class="n">cs_gl</span><span class="p">)</span>
|
||||
<span class="n">ang1</span><span class="p">,</span> <span class="n">ang2</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">atan2</span><span class="p">(</span><span class="o">*</span><span class="n">vl1</span><span class="p">[:</span><span class="mi">2</span><span class="p">][::</span><span class="o">-</span><span class="mi">1</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="o">*</span><span class="n">vl2</span><span class="p">[:</span><span class="mi">2</span><span class="p">][::</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">ellipse</span><span class="p">:</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">conic</span><span class="o">.</span><span class="n">semi_axis_1</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="n">conic</span><span class="o">.</span><span class="n">semi_axis_2</span>
|
||||
<span class="k">return</span> <span class="n">ArcEllipse</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="n">ang1</span><span class="p">,</span> <span class="n">ang2</span><span class="p">)</span><span class="o">.</span><span class="n">ch_cs</span><span class="p">(</span><span class="n">cs_lg</span><span class="p">)</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="o">*</span><span class="n">location</span><span class="p">)</span>
|
||||
<span class="n">radius</span> <span class="o">=</span> <span class="n">conic</span><span class="o">.</span><span class="n">radius</span>
|
||||
<span class="k">return</span> <span class="n">ArcCircle</span><span class="p">(</span><span class="n">radius</span><span class="p">,</span> <span class="n">ang1</span><span class="p">,</span> <span class="n">ang2</span><span class="p">)</span><span class="o">.</span><span class="n">ch_cs</span><span class="p">(</span><span class="n">cs_lg</span><span class="p">)</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="o">*</span><span class="n">location</span><span class="p">)</span></div>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">copy</span>
|
||||
<div class="viewcode-block" id="b_spline_curve_with_knots_geometry"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.b_spline_curve_with_knots_geometry">[docs]</a><span class="k">def</span> <span class="nf">b_spline_curve_with_knots_geometry</span><span class="p">(</span><span class="n">b_spline</span><span class="p">,</span> <span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="sd"> Currently only clamped b_spline curves and assumed, i. e. closed</span>
|
||||
<span class="sd"> = False.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">control_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span><span class="o">.</span><span class="n">coordinates</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">b_spline</span><span class="o">.</span><span class="n">control_points</span><span class="p">]</span>
|
||||
<span class="c1"># es_near = [vector.isclose(p1, i.coordinates, abs_tol=2.1) for i in b_spline.control_points].index(True)</span>
|
||||
<span class="n">es_near</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">b_spline</span><span class="o">.</span><span class="n">control_points</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">-</span> <span class="p">[</span><span class="n">vector</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">abs_tol</span><span class="o">=</span><span class="mf">2.1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">b_spline</span><span class="o">.</span><span class="n">control_points</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="c1"># ee_near = len(b_spline.control_points) - 1 - [vector.isclose(p2, i.coordinates, abs_tol=2.1) for i in b_spline.control_points[::-1]].index(True)</span>
|
||||
<span class="n">ee_near</span> <span class="o">=</span> <span class="p">[</span><span class="n">vector</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="n">p2</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">abs_tol</span><span class="o">=</span><span class="mf">2.1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">b_spline</span><span class="o">.</span><span class="n">control_points</span><span class="p">]</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="n">knots</span> <span class="o">=</span> <span class="p">[</span><span class="n">b_spline</span><span class="o">.</span><span class="n">knots</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="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">b_spline</span><span class="o">.</span><span class="n">knots</span><span class="p">))</span> <span class="k">for</span>
|
||||
<span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">b_spline</span><span class="o">.</span><span class="n">knot_multiplicities</span><span class="p">[</span><span class="n">i</span><span class="p">])]</span>
|
||||
<span class="c1"># print('bs es, ee in:', es_near, ee_near,</span>
|
||||
<span class="c1"># knots[es_near], knots[ee_near+b_spline.degree])</span>
|
||||
<span class="c1"># print(' knots, knote:', knots[0], knots[-1], len(knots))</span>
|
||||
<span class="k">if</span> <span class="n">es_near</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">ee_near</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1">#print('yes')</span>
|
||||
<span class="n">bs</span> <span class="o">=</span> <span class="n">ArcBSplineCurveWithKnots</span><span class="p">(</span>
|
||||
<span class="n">b_spline</span><span class="o">.</span><span class="n">degree</span><span class="p">,</span> <span class="n">control_points</span><span class="p">,</span> <span class="n">b_spline</span><span class="o">.</span><span class="n">knot_multiplicities</span><span class="p">,</span>
|
||||
<span class="n">b_spline</span><span class="o">.</span><span class="n">knots</span><span class="p">,</span> <span class="n">knots</span><span class="p">[</span><span class="n">es_near</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span> <span class="n">knots</span><span class="p">[</span><span class="n">ee_near</span><span class="o">+</span><span class="n">b_spline</span><span class="o">.</span><span class="n">degree</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="n">bs</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">copy</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">p1</span><span class="p">)]</span> <span class="o">+</span> <span class="n">bs</span><span class="o">.</span><span class="n">_points</span> <span class="o">+</span> <span class="p">[</span><span class="n">copy</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">p2</span><span class="p">)]</span>
|
||||
<span class="k">return</span> <span class="n">bs</span>
|
||||
<span class="c1"># +1 so not the last near point but the following, also -1</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'error'</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">B_spline_curve_with_knots</span><span class="p">(</span>
|
||||
<span class="n">b_spline</span><span class="o">.</span><span class="n">degree</span><span class="p">,</span> <span class="n">control_points</span><span class="p">,</span> <span class="n">b_spline</span><span class="o">.</span><span class="n">knot_multiplicities</span><span class="p">,</span>
|
||||
<span class="n">b_spline</span><span class="o">.</span><span class="n">knots</span><span class="p">)</span></div>
|
||||
|
||||
<span class="c1"># TODO: backup solution to draw each edge_curve,</span>
|
||||
<span class="c1"># new is to put edge_curves to edge_loops and draw these loops</span>
|
||||
<span class="c1"># see data_dict_to_geometry_world</span>
|
||||
<div class="viewcode-block" id="data_dict_to_geometry_world_edge_curve"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.data_dict_to_geometry_world_edge_curve">[docs]</a><span class="k">def</span> <span class="nf">data_dict_to_geometry_world_edge_curve</span><span class="p">(</span><span class="n">data_dict</span><span class="p">):</span>
|
||||
<span class="n">w</span> <span class="o">=</span> <span class="n">World</span><span class="p">()</span>
|
||||
<span class="n">data_dict_edge_curve_to_geometry</span><span class="p">(</span><span class="n">data_dict</span><span class="p">)</span>
|
||||
<span class="n">edges</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'geometry_edge_curves'</span><span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">edges</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
<span class="n">w</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">w</span></div>
|
||||
|
||||
<div class="viewcode-block" id="data_dict_edge_curve_to_geometry"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.data_dict_edge_curve_to_geometry">[docs]</a><span class="k">def</span> <span class="nf">data_dict_edge_curve_to_geometry</span><span class="p">(</span><span class="n">data_dict</span><span class="p">):</span>
|
||||
<span class="n">edges</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">edge_curve</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_curve'</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="n">p1</span> <span class="o">=</span> <span class="n">Point</span><span class="p">(</span><span class="o">*</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_start</span><span class="o">.</span><span class="n">vertex_geometry</span><span class="o">.</span><span class="n">coordinates</span><span class="p">)</span>
|
||||
<span class="n">p2</span> <span class="o">=</span> <span class="n">Point</span><span class="p">(</span><span class="o">*</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_end</span><span class="o">.</span><span class="n">vertex_geometry</span><span class="o">.</span><span class="n">coordinates</span><span class="p">)</span>
|
||||
<span class="n">idn</span> <span class="o">=</span> <span class="n">edge_curve</span><span class="o">.</span><span class="n">idn</span>
|
||||
|
||||
<span class="c1"># if SURFACE_CURVE or SEAM_CURVE, b/c SEAM_CURVE(SURFACE_CURVE)</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="p">,</span> <span class="n">SURFACE_CURVE</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="o">.</span><span class="n">curve_3d</span><span class="p">,</span> <span class="n">LINE</span><span class="p">):</span>
|
||||
<span class="n">edges</span><span class="p">[</span><span class="n">idn</span><span class="p">]</span> <span class="o">=</span> <span class="n">line_geometry</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="o">.</span><span class="n">curve_3d</span><span class="p">,</span> <span class="n">CIRCLE</span><span class="p">):</span>
|
||||
<span class="n">circle</span> <span class="o">=</span> <span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="o">.</span><span class="n">curve_3d</span>
|
||||
<span class="n">edges</span><span class="p">[</span><span class="n">idn</span><span class="p">]</span> <span class="o">=</span> <span class="n">arc_circle_geometry</span><span class="p">(</span><span class="n">circle</span><span class="p">,</span> <span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="o">.</span><span class="n">curve_3d</span><span class="p">,</span> <span class="n">ELLIPSE</span><span class="p">):</span>
|
||||
<span class="n">ellipse</span> <span class="o">=</span> <span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="o">.</span><span class="n">curve_3d</span>
|
||||
<span class="n">edges</span><span class="p">[</span><span class="n">idn</span><span class="p">]</span> <span class="o">=</span> <span class="n">arc_circle_geometry</span><span class="p">(</span><span class="n">ellipse</span><span class="p">,</span> <span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="o">.</span><span class="n">curve_3d</span><span class="p">,</span> <span class="n">B_SPLINE_CURVE_WITH_KNOTS</span><span class="p">):</span>
|
||||
<span class="n">b_spline</span> <span class="o">=</span> <span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="o">.</span><span class="n">curve_3d</span>
|
||||
<span class="n">edges</span><span class="p">[</span><span class="n">idn</span><span class="p">]</span> <span class="o">=</span> <span class="n">b_spline_curve_with_knots_geometry</span><span class="p">(</span><span class="n">b_spline</span><span class="p">,</span> <span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'edge_curve'</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="s1">'unknown SURFACE_CURVE'</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="p">(</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="o">.</span><span class="n">curve_3d</span><span class="p">))</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="p">,</span> <span class="n">LINE</span><span class="p">):</span>
|
||||
<span class="n">edges</span><span class="p">[</span><span class="n">idn</span><span class="p">]</span> <span class="o">=</span> <span class="n">line_geometry</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="p">,</span> <span class="n">CIRCLE</span><span class="p">):</span>
|
||||
<span class="n">circle</span> <span class="o">=</span> <span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span>
|
||||
<span class="n">edges</span><span class="p">[</span><span class="n">idn</span><span class="p">]</span> <span class="o">=</span> <span class="n">arc_circle_geometry</span><span class="p">(</span><span class="n">circle</span><span class="p">,</span> <span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span><span class="p">,</span> <span class="n">B_SPLINE_CURVE_WITH_KNOTS</span><span class="p">):</span>
|
||||
<span class="n">b_spline</span> <span class="o">=</span> <span class="n">edge_curve</span><span class="o">.</span><span class="n">edge_geometry</span>
|
||||
<span class="n">edges</span><span class="p">[</span><span class="n">idn</span><span class="p">]</span> <span class="o">=</span> <span class="n">b_spline_curve_with_knots_geometry</span><span class="p">(</span><span class="n">b_spline</span><span class="p">,</span> <span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span> <span class="c1"># fallback to straight line</span>
|
||||
<span class="n">edges</span><span class="p">[</span><span class="n">idn</span><span class="p">]</span> <span class="o">=</span> <span class="n">line_geometry</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'edge_curve'</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="s1">'unknown type'</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">edge_curve</span><span class="p">))</span>
|
||||
<span class="n">data_dict</span><span class="p">[</span><span class="s1">'geometry_edge_curves'</span><span class="p">]</span> <span class="o">=</span> <span class="n">edges</span></div>
|
||||
|
||||
<div class="viewcode-block" id="data_dict_to_geometry_world"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.data_dict_to_geometry_world">[docs]</a><span class="k">def</span> <span class="nf">data_dict_to_geometry_world</span><span class="p">(</span><span class="n">data_dict</span><span class="p">):</span>
|
||||
<span class="n">w</span> <span class="o">=</span> <span class="n">World</span><span class="p">()</span>
|
||||
|
||||
<span class="n">data_dict_edge_curve_to_geometry</span><span class="p">(</span><span class="n">data_dict</span><span class="p">)</span>
|
||||
<span class="n">edges</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'geometry_edge_curves'</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># add all but the last point, it is a path.</span>
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="nb">iter</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">edge_loop</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_loop'</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="n">points</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">last_end_point</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">for</span> <span class="n">oriented_edge</span> <span class="ow">in</span> <span class="n">edge_loop</span><span class="o">.</span><span class="n">edge_list</span><span class="p">:</span>
|
||||
<span class="n">edge_curve</span> <span class="o">=</span> <span class="n">oriented_edge</span><span class="o">.</span><span class="n">edge_element</span>
|
||||
<span class="n">idn</span> <span class="o">=</span> <span class="n">edge_curve</span><span class="o">.</span><span class="n">idn</span>
|
||||
<span class="k">if</span> <span class="n">idn</span> <span class="ow">in</span> <span class="n">edges</span><span class="p">:</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="n">edges</span><span class="p">[</span><span class="n">idn</span><span class="p">]</span><span class="o">.</span><span class="n">points</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">oriented_edge</span><span class="o">.</span><span class="n">orientation</span><span class="p">:</span>
|
||||
<span class="c1">#[points.append(i) for i in pts[:-1]]</span>
|
||||
<span class="p">[</span><span class="n">points</span><span class="o">.</span><span class="n">append</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">pts</span><span class="p">]</span>
|
||||
<span class="n">start_point</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">end_point</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1">#[points.append(i) for i in pts[:0:-1]]</span>
|
||||
<span class="p">[</span><span class="n">points</span><span class="o">.</span><span class="n">append</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">pts</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<span class="n">start_point</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">end_point</span> <span class="o">=</span> <span class="n">pts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">last_end_point</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># TODO: some points are only near because of the current</span>
|
||||
<span class="c1"># b-spline cut in b_spline_curve_with_knots_geometry</span>
|
||||
<span class="n">isclose</span> <span class="o">=</span> <span class="nb">all</span><span class="p">([</span><span class="n">math</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">abs_tol</span><span class="o">=</span><span class="mf">1e-3</span><span class="p">)</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="n">start_point</span><span class="p">,</span> <span class="n">last_end_point</span><span class="p">)])</span>
|
||||
<span class="k">if</span> <span class="n">isclose</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">isclose</span><span class="p">,</span> <span class="n">start_point</span><span class="p">,</span> <span class="n">last_end_point</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="c1">#print('start of loop')</span>
|
||||
<span class="n">last_end_point</span> <span class="o">=</span> <span class="n">end_point</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'error'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">points</span><span class="p">:</span>
|
||||
<span class="c1"># add last end point of path</span>
|
||||
<span class="c1"># if oriented_edge.orientation:</span>
|
||||
<span class="c1"># points.append(Point(*edge_curve.edge_end.vertex_geometry.coordinates))</span>
|
||||
<span class="c1"># else:</span>
|
||||
<span class="c1"># points.append(Point(*edge_curve.edge_start.vertex_geometry.coordinates))</span>
|
||||
<span class="c1">#points.append(Point(*oriented_edge.edge_end.vertex_geometry.coordinates))</span>
|
||||
<span class="n">w</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Polyline</span><span class="p">(</span><span class="o">*</span><span class="n">points</span><span class="p">))</span>
|
||||
<span class="c1"># if iter == 4:</span>
|
||||
<span class="c1"># print()</span>
|
||||
<span class="c1"># print(key)</span>
|
||||
<span class="c1"># break</span>
|
||||
<span class="c1"># iter += 1</span>
|
||||
<span class="k">return</span> <span class="n">w</span></div>
|
||||
|
||||
<span class="c1"># TODO: delete this testing def</span>
|
||||
<div class="viewcode-block" id="print_edge_loop"><a class="viewcode-back" href="../../pylib.data_step.html#pylib.data_step.print_edge_loop">[docs]</a><span class="k">def</span> <span class="nf">print_edge_loop</span><span class="p">(</span><span class="n">data_dict</span><span class="p">,</span> <span class="n">instance_name</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">pylib.mathematics</span> <span class="kn">import</span> <span class="n">vector</span>
|
||||
<span class="kn">from</span> <span class="nn">pylib.data_step_std</span> <span class="kn">import</span> <span class="n">LINE</span><span class="p">,</span> <span class="n">B_SPLINE_CURVE_WITH_KNOTS</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'edge_loop:'</span><span class="p">,</span> <span class="n">instance_name</span><span class="p">,</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_loop'</span><span class="p">][</span><span class="n">instance_name</span><span class="p">]</span><span class="o">.</span><span class="n">idn</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">oriented_edge</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">'edge_loop'</span><span class="p">][</span><span class="n">instance_name</span><span class="p">]</span><span class="o">.</span><span class="n">edge_list</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' orientation: '</span><span class="p">,</span> <span class="n">oriented_edge</span><span class="o">.</span><span class="n">orientation</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' edge_start: '</span><span class="p">,</span> <span class="n">oriented_edge</span><span class="o">.</span><span class="n">edge_start</span><span class="o">.</span><span class="n">vertex_geometry</span><span class="o">.</span><span class="n">coordinates</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' edge_end: '</span><span class="p">,</span> <span class="n">oriented_edge</span><span class="o">.</span><span class="n">edge_end</span><span class="o">.</span><span class="n">vertex_geometry</span><span class="o">.</span><span class="n">coordinates</span><span class="p">)</span>
|
||||
<span class="n">edge_element</span> <span class="o">=</span> <span class="n">oriented_edge</span><span class="o">.</span><span class="n">edge_element</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' edge_element'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' same_sense: '</span><span class="p">,</span> <span class="n">edge_element</span><span class="o">.</span><span class="n">same_sense</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' edge_start: '</span><span class="p">,</span> <span class="n">edge_element</span><span class="o">.</span><span class="n">edge_start</span><span class="o">.</span><span class="n">vertex_geometry</span><span class="o">.</span><span class="n">coordinates</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' edge_end: '</span><span class="p">,</span> <span class="n">edge_element</span><span class="o">.</span><span class="n">edge_end</span><span class="o">.</span><span class="n">vertex_geometry</span><span class="o">.</span><span class="n">coordinates</span><span class="p">)</span>
|
||||
<span class="n">curve_3d</span> <span class="o">=</span> <span class="n">edge_element</span><span class="o">.</span><span class="n">edge_geometry</span><span class="o">.</span><span class="n">curve_3d</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' edge_geometry.curve_3d'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' type: '</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">curve_3d</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">curve_3d</span><span class="p">,</span> <span class="n">LINE</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' es in: '</span><span class="p">,</span>
|
||||
<span class="n">vector</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="n">edge_element</span><span class="o">.</span><span class="n">edge_start</span><span class="o">.</span><span class="n">vertex_geometry</span><span class="o">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">curve_3d</span><span class="o">.</span><span class="n">pnt</span><span class="o">.</span><span class="n">coordinates</span><span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' ee in: '</span><span class="p">,</span>
|
||||
<span class="n">vector</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="n">edge_element</span><span class="o">.</span><span class="n">edge_end</span><span class="o">.</span><span class="n">vertex_geometry</span><span class="o">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">curve_3d</span><span class="o">.</span><span class="n">pnt</span><span class="o">.</span><span class="n">coordinates</span><span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' pnt: '</span><span class="p">,</span> <span class="n">curve_3d</span><span class="o">.</span><span class="n">pnt</span><span class="o">.</span><span class="n">coordinates</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' pnt2: '</span><span class="p">,</span> <span class="p">[</span><span class="n">curve_3d</span><span class="o">.</span><span class="n">dir</span><span class="o">.</span><span class="n">magnitude</span><span class="o">*</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="n">curve_3d</span><span class="o">.</span><span class="n">dir</span><span class="o">.</span><span class="n">orientation</span><span class="o">.</span><span class="n">direction_ratios</span><span class="p">,</span> <span class="n">curve_3d</span><span class="o">.</span><span class="n">pnt</span><span class="o">.</span><span class="n">coordinates</span><span class="p">)])</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">curve_3d</span><span class="p">,</span> <span class="n">B_SPLINE_CURVE_WITH_KNOTS</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' es in: '</span><span class="p">,</span>
|
||||
<span class="nb">any</span><span class="p">([</span><span class="n">vector</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="n">edge_element</span><span class="o">.</span><span class="n">edge_start</span><span class="o">.</span><span class="n">vertex_geometry</span><span class="o">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">abs_tol</span><span class="o">=</span><span class="mf">2.1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">curve_3d</span><span class="o">.</span><span class="n">control_points</span><span class="p">]))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' ee in: '</span><span class="p">,</span>
|
||||
<span class="nb">any</span><span class="p">([</span><span class="n">vector</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="n">edge_element</span><span class="o">.</span><span class="n">edge_end</span><span class="o">.</span><span class="n">vertex_geometry</span><span class="o">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">abs_tol</span><span class="o">=</span><span class="mf">2.1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">curve_3d</span><span class="o">.</span><span class="n">control_points</span><span class="p">]))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' control_points'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' '</span><span class="p">,</span> <span class="n">curve_3d</span><span class="o">.</span><span class="n">control_points</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="s1">'...'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">' '</span><span class="p">,</span> <span class="n">curve_3d</span><span class="o">.</span><span class="n">control_points</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">coordinates</span><span class="p">)</span></div>
|
||||
<span class="c1"># print()</span>
|
||||
<span class="c1"># print_edge_loop(data_dict, '#1306')</span>
|
||||
|
||||
</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>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
|
||||
</ul>
|
||||
|
||||
<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>
|
||||
1102
docs/build/html/_modules/pylib/data_step_std.html
vendored
Normal file
1102
docs/build/html/_modules/pylib/data_step_std.html
vendored
Normal file
File diff suppressed because it is too large
Load Diff
255
docs/build/html/_modules/pylib/function.html
vendored
255
docs/build/html/_modules/pylib/function.html
vendored
@@ -44,10 +44,12 @@
|
||||
<span class="sd"> :synopsis: Mathematical equations.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
|
||||
<span class="sd">Functions returns function to apply conditions.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">math</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>
|
||||
<span class="kn">from</span> <span class="nn">.data</span> <span class="kn">import</span> <span class="n">seq</span>
|
||||
<span class="kn">from</span> <span class="nn">.mathematics</span> <span class="kn">import</span> <span class="n">lcm</span>
|
||||
|
||||
<div class="viewcode-block" id="transformation"><a class="viewcode-back" href="../../pylib.function.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>
|
||||
@@ -114,12 +116,13 @@
|
||||
|
||||
<span class="sd"> :results: sine wave function of spatial variable x and optional</span>
|
||||
<span class="sd"> time t</span>
|
||||
<span class="sd"> :rtype: function</span>
|
||||
|
||||
<span class="sd"> In general, the function is:</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> y(x,t) = A\sin(kx + 2\pi f t + \varphi) + D \\</span>
|
||||
<span class="sd"> y(x,t) = A\sin(kx + \omega t + \varphi) + D</span>
|
||||
<span class="sd"> y(x,t) = A\sin(kx + \omega t + \varphi) + D \\</span>
|
||||
<span class="sd"> y(x,t) = A\sin(kx + 2\pi f t + \varphi) + D</span>
|
||||
|
||||
<span class="sd"> where:</span>
|
||||
|
||||
@@ -178,6 +181,7 @@
|
||||
|
||||
<span class="sd"> :results: sine wave function of spatial variable x and optional</span>
|
||||
<span class="sd"> time t</span>
|
||||
<span class="sd"> :rtype: function</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`sine_wave`</span>
|
||||
@@ -188,12 +192,225 @@
|
||||
<span class="n">phi</span> <span class="o">=</span> <span class="n">phi</span> <span class="o">+</span> <span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span>
|
||||
<span class="k">return</span> <span class="n">sine_wave</span><span class="p">(</span><span class="n">A</span><span class="o">=</span><span class="n">A</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="n">k</span><span class="p">,</span> <span class="n">f</span><span class="o">=</span><span class="n">f</span><span class="p">,</span> <span class="n">phi</span><span class="o">=</span><span class="n">phi</span><span class="p">,</span> <span class="n">D</span><span class="o">=</span><span class="n">D</span><span class="p">,</span> <span class="n">degree</span><span class="o">=</span><span class="n">degree</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="b_spline_basis"><a class="viewcode-back" href="../../pylib.function.html#pylib.function.b_spline_basis">[docs]</a><span class="k">def</span> <span class="nf">b_spline_basis</span><span class="p">(</span><span class="n">knots</span><span class="p">,</span> <span class="n">knot_span</span><span class="p">,</span> <span class="n">degree</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Cox-de Boor algorithm / recursion formula.</span>
|
||||
|
||||
<span class="sd"> Calculate the i-th B-spline basis function of degree p: N_{i,p}(u)</span>
|
||||
|
||||
<span class="sd"> :param knots: Knot vector U. m + 1 non-decreasing numbers / knots,</span>
|
||||
<span class="sd"> :math:`u_0 <= u_1 <= u_2 <= ... <= u_m`</span>
|
||||
<span class="sd"> :type knots: list</span>
|
||||
<span class="sd"> :param knot_span: i-th knot span</span>
|
||||
<span class="sd"> :type knot_span: int</span>
|
||||
<span class="sd"> :param degree: degree of B-spline basis function</span>
|
||||
<span class="sd"> :type degree: int</span>
|
||||
|
||||
<span class="sd"> :returns: B-spline basis function using variable, u \in [u_0, u_m]</span>
|
||||
<span class="sd"> :rtype: function</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> N_{i,0}(u) &= \begin{cases} 1 & \text{if } u_i \le u \lt u_{i+1} \\</span>
|
||||
<span class="sd"> 0 & \text{otherwise}\end{cases} \\</span>
|
||||
<span class="sd"> N_{i,p}(u) &= \frac{u - u_i}{u_{i+p} - u_i} N_{i,p-1}(u) +</span>
|
||||
<span class="sd"> \frac{u_{i+p+1} - u}{u_{i+p+1} - u_{i+1}} N_{i+1,p-1}(u)</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">U</span> <span class="o">=</span> <span class="n">knots</span>
|
||||
<span class="n">N</span> <span class="o">=</span> <span class="n">b_spline_basis</span>
|
||||
<span class="n">i</span> <span class="o">=</span> <span class="n">knot_span</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="n">degree</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">p</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">Np</span><span class="p">(</span><span class="n">u</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">U</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o"><=</span> <span class="n">u</span> <span class="o"><</span> <span class="n">U</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="k">else</span> <span class="mi">0</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">Np</span><span class="p">(</span><span class="n">u</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">term1</span> <span class="o">=</span> <span class="p">(</span><span class="n">u</span> <span class="o">-</span> <span class="n">U</span><span class="p">[</span><span class="n">i</span><span class="p">])</span><span class="o">/</span><span class="p">(</span><span class="n">U</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="n">p</span><span class="p">]</span> <span class="o">-</span> <span class="n">U</span><span class="p">[</span><span class="n">i</span><span class="p">])</span><span class="o">*</span><span class="n">N</span><span class="p">(</span><span class="n">U</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">p</span><span class="o">-</span><span class="mi">1</span><span class="p">)(</span><span class="n">u</span><span class="p">)</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="n">term1</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">term2</span> <span class="o">=</span> <span class="p">(</span><span class="n">U</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="n">p</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">u</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">U</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="n">p</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">U</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span><span class="o">*</span><span class="n">N</span><span class="p">(</span><span class="n">U</span><span class="p">,</span> <span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">p</span><span class="o">-</span><span class="mi">1</span><span class="p">)(</span><span class="n">u</span><span class="p">)</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="n">term2</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">return</span> <span class="n">term1</span> <span class="o">+</span> <span class="n">term2</span>
|
||||
<span class="k">return</span> <span class="n">Np</span></div>
|
||||
|
||||
<span class="c1"># TODO: other types than clamped?</span>
|
||||
<div class="viewcode-block" id="b_spline_knots"><a class="viewcode-back" href="../../pylib.function.html#pylib.function.b_spline_knots">[docs]</a><span class="k">def</span> <span class="nf">b_spline_knots</span><span class="p">(</span><span class="n">control_point_spans</span><span class="p">,</span> <span class="n">degree</span><span class="o">=</span><span class="mi">3</span><span class="p">):</span>
|
||||
<span class="sd">"""B-spline knots to generate a clamped uniform B-spline curve</span>
|
||||
<span class="sd"> of degree p (order + 1).</span>
|
||||
|
||||
<span class="sd"> The internal knots are equally spaced (uniform B-spline curve)</span>
|
||||
|
||||
<span class="sd"> :param control_point_spans: number of control points + 1</span>
|
||||
<span class="sd"> :type control_point_spans: int</span>
|
||||
<span class="sd"> :param degree: degree of B-spline basis functions (default = 3)</span>
|
||||
<span class="sd"> :type degree: int</span>
|
||||
|
||||
<span class="sd"> :returns: knot vector</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`b_spline_curve_with_knots`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="n">degree</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="n">control_point_spans</span>
|
||||
<span class="n">m</span> <span class="o">=</span> <span class="n">n</span> <span class="o">+</span> <span class="n">p</span> <span class="o">+</span> <span class="mi">1</span> <span class="c1"># number of knot spans</span>
|
||||
|
||||
<span class="c1"># number of</span>
|
||||
<span class="n">U_outer</span> <span class="o">=</span> <span class="n">p</span> <span class="o">+</span> <span class="mi">1</span> <span class="c1"># at each of the vector</span>
|
||||
<span class="n">U_inner</span> <span class="o">=</span> <span class="n">m</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">2</span><span class="o">*</span><span class="p">(</span><span class="n">U_outer</span><span class="p">)</span>
|
||||
|
||||
<span class="n">U</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">U_outer</span><span class="p">)</span>
|
||||
<span class="n">U</span> <span class="o">+=</span> <span class="p">[</span><span class="n">i</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="mi">1</span><span class="p">,</span> <span class="n">U_inner</span><span class="p">)]</span>
|
||||
<span class="n">U</span> <span class="o">+=</span> <span class="p">[</span><span class="n">U_inner</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">U_outer</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">U</span><span class="p">)</span> <span class="c1"># tuples are hashable</span></div>
|
||||
|
||||
<div class="viewcode-block" id="b_spline_curve_with_knots"><a class="viewcode-back" href="../../pylib.function.html#pylib.function.b_spline_curve_with_knots">[docs]</a><span class="k">def</span> <span class="nf">b_spline_curve_with_knots</span><span class="p">(</span><span class="n">degree</span><span class="p">,</span> <span class="n">control_points</span><span class="p">,</span> <span class="n">knots</span><span class="p">):</span>
|
||||
<span class="sd">"""B-spline curve of degree p (order + 1) on a given set of knots.</span>
|
||||
|
||||
<span class="sd"> n, m and p must satisfy m = n + p + 1.</span>
|
||||
|
||||
<span class="sd"> :param degree: degree of B-spline basis functions</span>
|
||||
<span class="sd"> :type degree: int</span>
|
||||
<span class="sd"> :param control_points: control points P, n + 1 control points</span>
|
||||
<span class="sd"> :type control_points: list</span>
|
||||
<span class="sd"> :param knots: Knot vector U. m + 1 non-decreasing numbers / knots,</span>
|
||||
<span class="sd"> :math:`u_0 <= u_1 <= u_2 <= ... <= u_m`</span>
|
||||
<span class="sd"> :type knots: list</span>
|
||||
|
||||
<span class="sd"> :returns: B-spline curve using variable, u \in [u_0, u_m]</span>
|
||||
<span class="sd"> :rtype: function</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> \mathbf{C}_p(u) = \sum\limits_{i=0}^{n} N_{i,p}(u) \mathbf{P}_i</span>
|
||||
|
||||
<span class="sd"> * open B-spline curves</span>
|
||||
|
||||
<span class="sd"> * the curve will not touch the first and last legs of the</span>
|
||||
<span class="sd"> control polyline</span>
|
||||
<span class="sd"> * the knot vector does not have any particular structure</span>
|
||||
<span class="sd"> * for degree p, intervals [u_0, u_p) and [u_{n-p}, u_n) will not</span>
|
||||
<span class="sd"> have "full support" of basis functions and are ignored when a</span>
|
||||
<span class="sd"> B-spline curve is open. For open B-spline curves, the domain</span>
|
||||
<span class="sd"> is inteval [u_p, u_{n-p}]</span>
|
||||
|
||||
<span class="sd"> * clamped B-spline curves, nonperiodic B-spline curves</span>
|
||||
|
||||
<span class="sd"> * the curve is tangent to the first and the last legs just like</span>
|
||||
<span class="sd"> a Bézier curve</span>
|
||||
<span class="sd"> * the first knot and the last knot must be repeated p+1 times</span>
|
||||
<span class="sd"> (i. e., of multiplicity p+1)</span>
|
||||
|
||||
<span class="sd"> * closed B-spline curves</span>
|
||||
|
||||
<span class="sd"> * the start and the end of the generated curve join together</span>
|
||||
<span class="sd"> forming a closed loop</span>
|
||||
<span class="sd"> * repeating some knots and control points # TODO: which?</span>
|
||||
|
||||
<span class="sd"> * uniform B-spline curves</span>
|
||||
|
||||
<span class="sd"> * internal knots are equally spaced</span>
|
||||
|
||||
<span class="sd"> * Bézier curves</span>
|
||||
|
||||
<span class="sd"> * a B-spline with no internal knots.</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`b_spline_knots`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">dim</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">control_points</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">def</span> <span class="nf">C</span><span class="p">(</span><span class="n">u</span><span class="p">):</span>
|
||||
<span class="n">NiPi</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">dim</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="nb">len</span><span class="p">(</span><span class="n">control_points</span><span class="p">)):</span>
|
||||
<span class="n">Ni</span> <span class="o">=</span> <span class="n">b_spline_basis</span><span class="p">(</span><span class="n">knots</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">degree</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">dim</span><span class="p">):</span>
|
||||
<span class="n">NiPi</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">+=</span> <span class="n">Ni</span><span class="p">(</span><span class="n">u</span><span class="p">)</span><span class="o">*</span><span class="n">control_points</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">NiPi</span>
|
||||
<span class="k">return</span> <span class="n">C</span></div>
|
||||
|
||||
<div class="viewcode-block" id="sample_half_open"><a class="viewcode-back" href="../../pylib.function.html#pylib.function.sample_half_open">[docs]</a><span class="k">def</span> <span class="nf">sample_half_open</span><span class="p">(</span><span class="n">f</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="n">n</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span> <span class="n">endpoint_epsilon</span><span class="o">=</span><span class="mf">1e-7</span><span class="p">):</span>
|
||||
<span class="c1"># hack to sample close to the endpoint</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">seq</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="p">(</span><span class="n">b</span><span class="o">-</span><span class="n">a</span><span class="p">)</span><span class="o">/</span><span class="n">n</span><span class="p">)</span> <span class="o">+</span> <span class="p">[</span><span class="n">b</span><span class="o">-</span><span class="n">endpoint_epsilon</span><span class="p">]</span>
|
||||
<span class="c1"># Sample the function</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">f</span><span class="p">(</span><span class="n">xi</span><span class="p">)</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="sample_half_open_seq"><a class="viewcode-back" href="../../pylib.function.html#pylib.function.sample_half_open_seq">[docs]</a><span class="k">def</span> <span class="nf">sample_half_open_seq</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">endpoint_epsilon</span><span class="o">=</span><span class="mf">1e-7</span><span class="p">):</span>
|
||||
<span class="c1"># hack to sample close to the endpoint, x[-1] can be present</span>
|
||||
<span class="c1"># multiple times.</span>
|
||||
<span class="n">xend</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</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="p">[</span><span class="n">xi</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span> <span class="k">if</span> <span class="n">xi</span> <span class="o">!=</span> <span class="n">xend</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="n">xend</span><span class="o">-</span><span class="n">endpoint_epsilon</span><span class="p">]</span>
|
||||
<span class="c1"># Sample the function</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">f</span><span class="p">(</span><span class="n">xi</span><span class="p">)</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]</span></div>
|
||||
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># Parametric equations</span>
|
||||
<span class="c1"># roulette</span>
|
||||
<span class="c1">#</span>
|
||||
|
||||
<div class="viewcode-block" id="circle"><a class="viewcode-back" href="../../pylib.function.html#pylib.function.circle">[docs]</a><span class="k">def</span> <span class="nf">circle</span><span class="p">(</span><span class="n">r</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Circle</span>
|
||||
|
||||
<span class="sd"> :param r: radius of the circle</span>
|
||||
<span class="sd"> :type r: float</span>
|
||||
|
||||
<span class="sd"> :results: functions for x of theta and y of theta and the interval</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> x(\theta) = r\cos\theta \\</span>
|
||||
<span class="sd"> y(\theta) = r\sin\theta \\</span>
|
||||
<span class="sd"> \theta = \left[0, 2\pi\right]</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * r *</span>
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * *</span>
|
||||
|
||||
<span class="sd"> >>> x, y = circle(20)[:2]</span>
|
||||
<span class="sd"> >>> x, y, _ = circle(20)</span>
|
||||
<span class="sd"> >>> x, y, interval = circle(20)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">ellipse</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">r</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ellipse"><a class="viewcode-back" href="../../pylib.function.html#pylib.function.ellipse">[docs]</a><span class="k">def</span> <span class="nf">ellipse</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">"""Ellipse</span>
|
||||
|
||||
<span class="sd"> :param a: semi-major axis</span>
|
||||
<span class="sd"> :type a: float</span>
|
||||
<span class="sd"> :param b: semi-minor axis</span>
|
||||
<span class="sd"> :type b: float</span>
|
||||
|
||||
<span class="sd"> :results: functions for x of theta and y of theta and the interval</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> x(\theta) = a\cos\theta \\</span>
|
||||
<span class="sd"> y(\theta) = b\sin\theta \\</span>
|
||||
<span class="sd"> \theta = \left[0, 2\pi\right]</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> * .*</span>
|
||||
<span class="sd"> * b : *</span>
|
||||
<span class="sd"> * :......*</span>
|
||||
<span class="sd"> * a *</span>
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * *</span>
|
||||
|
||||
<span class="sd"> >>> x, y = ellipse(10, 5)[:2]</span>
|
||||
<span class="sd"> >>> x, y, _ = ellipse(10, 5)</span>
|
||||
<span class="sd"> >>> x, y, interval = ellipse(10, 5)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="n">a</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">y</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="n">b</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="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="p">]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="hypotrochoid"><a class="viewcode-back" href="../../pylib.function.html#pylib.function.hypotrochoid">[docs]</a><span class="k">def</span> <span class="nf">hypotrochoid</span><span class="p">(</span><span class="n">R</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Hypotrochoid</span>
|
||||
|
||||
@@ -208,7 +425,7 @@
|
||||
<span class="sd"> :param d: distance from the center of the interior circle</span>
|
||||
<span class="sd"> :type d: float</span>
|
||||
|
||||
<span class="sd"> :results: functions for x of theta and y of theta</span>
|
||||
<span class="sd"> :results: functions for x of theta and y of theta and the interval</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
@@ -223,7 +440,7 @@
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * * * *</span>
|
||||
<span class="sd"> * * r **</span>
|
||||
<span class="sd"> * * .... *</span>
|
||||
<span class="sd"> * * ,.. *</span>
|
||||
<span class="sd"> * * d *</span>
|
||||
<span class="sd"> * * **</span>
|
||||
<span class="sd"> * * * *</span>
|
||||
@@ -231,16 +448,16 @@
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * * *</span>
|
||||
|
||||
<span class="sd"> >>> x, y = hyotrochoid(20, 6, 6)[:1]</span>
|
||||
<span class="sd"> >>> x, y, theta_end = hyotrochoid(20, 6, 6)</span>
|
||||
<span class="sd"> >>> x, y = hyotrochoid(20, 6, 6)[:2]</span>
|
||||
<span class="sd"> >>> x, y, _ = hyotrochoid(20, 6, 6)</span>
|
||||
<span class="sd"> >>> x, y, interval = hyotrochoid(20, 6, 6)</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`pylib.mathematics.lcm`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">-</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">+</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">((</span><span class="n">R</span><span class="o">-</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">-</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">((</span><span class="n">R</span><span class="o">-</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
|
||||
<span class="n">theta_end</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="n">lcm</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">R</span><span class="p">)</span><span class="o">/</span><span class="n">R</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">theta_end</span></div>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="n">lcm</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">R</span><span class="p">)</span><span class="o">/</span><span class="n">R</span><span class="p">]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="epitrochoid"><a class="viewcode-back" href="../../pylib.function.html#pylib.function.epitrochoid">[docs]</a><span class="k">def</span> <span class="nf">epitrochoid</span><span class="p">(</span><span class="n">R</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Epitrochoid</span>
|
||||
@@ -256,7 +473,7 @@
|
||||
<span class="sd"> :param d: distance from the center of the exterior circle</span>
|
||||
<span class="sd"> :type d: float</span>
|
||||
|
||||
<span class="sd"> :results: functions for x of theta and y of theta</span>
|
||||
<span class="sd"> :results: functions for x of theta and y of theta and the interval</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
@@ -271,7 +488,7 @@
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * * * *</span>
|
||||
<span class="sd"> * * * r *</span>
|
||||
<span class="sd"> * ** .... *</span>
|
||||
<span class="sd"> * ** .., *</span>
|
||||
<span class="sd"> * ** d *</span>
|
||||
<span class="sd"> * * * *</span>
|
||||
<span class="sd"> * * * *</span>
|
||||
@@ -279,13 +496,13 @@
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * * *</span>
|
||||
|
||||
<span class="sd"> >>> x, y = epitrochoid(3, 1, 0.5)[:1]</span>
|
||||
<span class="sd"> >>> x, y, theta_end = epitrochoid(3, 1, 0.5)</span>
|
||||
<span class="sd"> >>> x, y = epitrochoid(3, 1, 0.5)[:2]</span>
|
||||
<span class="sd"> >>> x, y, _ = epitrochoid(3, 1, 0.5)</span>
|
||||
<span class="sd"> >>> x, y, interval = epitrochoid(3, 1, 0.5)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">((</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">((</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
|
||||
<span class="n">theta_end</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">theta_end</span></div>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="p">]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="to_str"><a class="viewcode-back" href="../../pylib.function.html#pylib.function.to_str">[docs]</a><span class="k">def</span> <span class="nf">to_str</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="n">x_0</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">x_1</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">t</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">w</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">density</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">char_set</span><span class="o">=</span><span class="s2">"line"</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent functions as string frame with a specific character set.</span>
|
||||
@@ -299,7 +516,7 @@
|
||||
<span class="sd"> :type w: int</span>
|
||||
|
||||
<span class="sd"> :param char_set: either "braille" or "block". "braille" uses Unicode</span>
|
||||
<span class="sd"> Characters in the Braille Patterns Block (fisrt index U+2800, last</span>
|
||||
<span class="sd"> Characters in the Braille Patterns Block (first index U+2800, last</span>
|
||||
<span class="sd"> index U+28FF [CUDB]_) and the "block" uses part of the Unicode</span>
|
||||
<span class="sd"> Characters in the Block Elements Block (fisrt index U+2580, last</span>
|
||||
<span class="sd"> index U+259F [CUDB]_). Alias for braille is line and alias for</span>
|
||||
@@ -433,7 +650,9 @@
|
||||
<span class="c1"># divide step width of the sequence by 2 (double density, 2 dots/pixel per char)</span>
|
||||
<span class="c1"># multiplicate x by 2 (2 dots/pixel per char)</span>
|
||||
<span class="k">for</span> <span class="n">x_i</span> <span class="ow">in</span> <span class="n">seq</span><span class="p">(</span><span class="n">x_0</span><span class="o">*</span><span class="n">window_factor</span><span class="o">*</span><span class="n">pixels_horizontal</span><span class="p">,</span> <span class="n">x_1</span><span class="o">*</span><span class="n">window_factor</span><span class="o">*</span><span class="n">pixels_horizontal</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="n">density</span><span class="p">):</span>
|
||||
<span class="n">canvas</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">x_i</span><span class="p">,</span> <span class="n">f</span><span class="p">(</span><span class="n">x_i</span><span class="p">,</span> <span class="n">t</span><span class="p">))</span>
|
||||
<span class="n">y_i</span> <span class="o">=</span> <span class="n">f</span><span class="p">(</span><span class="n">x_i</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="mi">0</span> <span class="o">>=</span> <span class="n">y_i</span> <span class="o">>=</span> <span class="o">-</span><span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="p">:</span>
|
||||
<span class="n">canvas</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">x_i</span><span class="p">,</span> <span class="n">y_i</span><span class="p">)</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="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>
|
||||
|
||||
201
docs/build/html/_modules/pylib/geometry.html
vendored
201
docs/build/html/_modules/pylib/geometry.html
vendored
@@ -45,8 +45,8 @@
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
|
||||
<span class="sd">Affine transforms</span>
|
||||
<span class="sd">-----------------</span>
|
||||
|
||||
<span class="sd">.. rubric:: Affine transforms</span>
|
||||
|
||||
<span class="sd">Functions in augmented space, in homogenous coordinates.</span>
|
||||
<span class="sd">Points are augment to 4 dimensions, by adding a dummy coordinate.</span>
|
||||
@@ -56,12 +56,21 @@
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="kn">import</span> <span class="nn">copy</span>
|
||||
<span class="kn">from</span> <span class="nn">.data</span> <span class="kn">import</span> <span class="n">seq</span>
|
||||
<span class="kn">from</span> <span class="nn">.mathematics</span> <span class="kn">import</span> <span class="n">vector</span><span class="p">,</span> <span class="n">matrix</span>
|
||||
<span class="kn">from</span> <span class="nn">.function</span> <span class="kn">import</span> <span class="n">circle</span><span class="p">,</span> <span class="n">ellipse</span><span class="p">,</span> <span class="n">b_spline_curve_with_knots</span>
|
||||
|
||||
<div class="viewcode-block" id="Properties"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Properties">[docs]</a><span class="k">class</span> <span class="nc">Properties</span><span class="p">():</span>
|
||||
<span class="n">circle_sectors</span> <span class="o">=</span> <span class="mi">12</span> <span class="c1"># 12 = 30°</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Direction"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Direction">[docs]</a><span class="k">class</span> <span class="nc">Direction</span><span class="p">(</span><span class="n">vector</span><span class="p">):</span>
|
||||
<span class="sd">"""Direction in local coordinate system"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</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="mi">0</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</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="n">z</span><span class="p">,</span> <span class="mi">0</span><span class="p">])</span></div>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</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="n">z</span><span class="p">,</span> <span class="mi">0</span><span class="p">])</span>
|
||||
|
||||
<div class="viewcode-block" id="Direction.cross"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Direction.cross">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">cross</span><span class="p">(</span><span class="bp">cls</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="bp">cls</span><span class="p">(</span><span class="o">*</span><span class="n">vector</span><span class="o">.</span><span class="n">cross</span><span class="p">(</span><span class="n">a</span><span class="p">[:</span><span class="mi">3</span><span class="p">],</span> <span class="n">b</span><span class="p">[:</span><span class="mi">3</span><span class="p">]))</span></div></div>
|
||||
|
||||
<div class="viewcode-block" id="Point"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Point">[docs]</a><span class="k">class</span> <span class="nc">Point</span><span class="p">(</span><span class="n">vector</span><span class="p">):</span>
|
||||
<span class="sd">"""Point in local coordinate system"""</span>
|
||||
@@ -79,32 +88,41 @@
|
||||
<div class="viewcode-block" id="CS"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS">[docs]</a><span class="k">class</span> <span class="nc">CS</span><span class="p">(</span><span class="n">matrix</span><span class="p">):</span>
|
||||
<span class="sd">"""Coordinate system</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="o">=</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">y</span><span class="o">=</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">z</span><span class="o">=</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="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">([[</span><span class="o">*</span><span class="n">x</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">y</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">z</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">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="n">Direction</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">y</span><span class="o">=</span><span class="n">Direction</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">z</span><span class="o">=</span><span class="n">Direction</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="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</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="n">z</span><span class="p">,</span> <span class="n">vector</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>
|
||||
|
||||
<div class="viewcode-block" id="CS.x90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.x90">[docs]</a> <span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">x90</span><span class="p">():</span>
|
||||
<span class="k">return</span> <span class="n">CS</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="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</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></div>
|
||||
<div class="viewcode-block" id="CS.init_xyz"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.init_xyz">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">init_xyz</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">x</span><span class="o">=</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">y</span><span class="o">=</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">z</span><span class="o">=</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="bp">cls</span><span class="p">(</span><span class="n">Direction</span><span class="p">(</span><span class="o">*</span><span class="n">x</span><span class="p">),</span> <span class="n">Direction</span><span class="p">(</span><span class="o">*</span><span class="n">y</span><span class="p">),</span> <span class="n">Direction</span><span class="p">(</span><span class="o">*</span><span class="n">z</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CS.xm90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.xm90">[docs]</a> <span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">xm90</span><span class="p">():</span>
|
||||
<span class="k">return</span> <span class="n">CS</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="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="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span></div>
|
||||
<div class="viewcode-block" id="CS.x90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.x90">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">x90</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">Direction</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">Direction</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="o">-</span><span class="mi">1</span><span class="p">),</span>
|
||||
<span class="n">Direction</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></div>
|
||||
|
||||
<div class="viewcode-block" id="CS.y90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.y90">[docs]</a> <span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">y90</span><span class="p">():</span>
|
||||
<span class="k">return</span> <span class="n">CS</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="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="o">-</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></div>
|
||||
<div class="viewcode-block" id="CS.xm90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.xm90">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">xm90</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">Direction</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">Direction</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">Direction</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CS.ym90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.ym90">[docs]</a> <span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">ym90</span><span class="p">():</span>
|
||||
<span class="k">return</span> <span class="n">CS</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="o">-</span><span class="mi">1</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="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></div>
|
||||
<div class="viewcode-block" id="CS.y90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.y90">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">y90</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">Direction</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">Direction</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">Direction</span><span class="p">(</span><span class="o">-</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></div>
|
||||
|
||||
<div class="viewcode-block" id="CS.ym90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.ym90">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">ym90</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">Direction</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="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="n">Direction</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">Direction</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></div>
|
||||
|
||||
<div class="viewcode-block" id="CS.get_coordinates"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.get_coordinates">[docs]</a> <span class="k">def</span> <span class="nf">get_coordinates</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Get coordinates in 3d space"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="p">[:</span><span class="mi">3</span><span class="p">,:</span><span class="mi">3</span><span class="p">]</span></div></div>
|
||||
|
||||
<span class="c1"># TODO: Wireframe(list) or Wireframe(matrix) ?</span>
|
||||
<span class="c1"># TODO: Polyline(list) or Polyline(matrix) ?</span>
|
||||
<span class="c1"># list of Points</span>
|
||||
<div class="viewcode-block" id="Wireframe"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe">[docs]</a><span class="k">class</span> <span class="nc">Wireframe</span><span class="p">:</span>
|
||||
<div class="viewcode-block" id="Polyline"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline">[docs]</a><span class="k">class</span> <span class="nc">Polyline</span><span class="p">:</span>
|
||||
<span class="sd">"""Open and closed wireframe object in local coordinate system</span>
|
||||
|
||||
<span class="sd"> This class create its own points (copy).</span>
|
||||
@@ -113,44 +131,48 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">copy</span><span class="o">.</span><span class="n">copy</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">points</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="o">=</span> <span class="n">closed</span>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.__str__"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.__str__">[docs]</a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Polyline.__str__"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.__str__">[docs]</a> <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="s1">'['</span> <span class="o">+</span> <span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">point</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">])</span> <span class="o">+</span> <span class="s1">']'</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.__iter__"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.__iter__">[docs]</a> <span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Polyline.__repr__"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.__repr__">[docs]</a> <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="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">+</span> \
|
||||
<span class="s1">'('</span> <span class="o">+</span> <span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">point</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">])</span> <span class="o">+</span> <span class="s1">')'</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Polyline.__iter__"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.__iter__">[docs]</a> <span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Returns the Iterator object"""</span>
|
||||
<span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">points</span><span class="p">())</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.points"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.points">[docs]</a> <span class="k">def</span> <span class="nf">points</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Polyline.points"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.points">[docs]</a> <span class="k">def</span> <span class="nf">points</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Get coordinates in 3d space"""</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="p">[</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="o">.</span><span class="n">_points</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">result</span> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="k">else</span> <span class="n">result</span> <span class="o">+</span> <span class="p">[</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.xy"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.xy">[docs]</a> <span class="k">def</span> <span class="nf">xy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Polyline.xy"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.xy">[docs]</a> <span class="k">def</span> <span class="nf">xy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Get coordinates in 3d space"""</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">i</span><span class="p">[:</span><span class="mi">2</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="o">.</span><span class="n">points</span><span class="p">()]))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.xyz"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.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>
|
||||
<div class="viewcode-block" id="Polyline.xyz"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.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="sd">"""Get coordinates in 3d space"""</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">i</span><span class="p">[:</span><span class="mi">3</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="o">.</span><span class="n">points</span><span class="p">()]))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.rotate_x"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.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>
|
||||
<div class="viewcode-block" id="Polyline.rotate_x"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.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="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">rotate_x</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.rotate_y"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.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>
|
||||
<div class="viewcode-block" id="Polyline.rotate_y"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.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="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">rotate_y</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.rotate_z"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.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>
|
||||
<div class="viewcode-block" id="Polyline.rotate_z"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.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="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">rotate_z</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.translate"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.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>
|
||||
<div class="viewcode-block" id="Polyline.translate"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.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="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">translate</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="k">for</span>
|
||||
<span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.scale"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.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>
|
||||
<div class="viewcode-block" id="Polyline.scale"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.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="c1"># if not sy is not suitable because 0 is also false</span>
|
||||
<span class="k">if</span> <span class="n">sy</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">sy</span> <span class="o">=</span> <span class="n">sx</span>
|
||||
@@ -159,28 +181,113 @@
|
||||
<span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Wireframe.ch_cs"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.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>
|
||||
<div class="viewcode-block" id="Polyline.ch_cs"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polyline.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="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">ch_cs</span><span class="p">(</span><span class="n">cs</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div></div>
|
||||
|
||||
<div class="viewcode-block" id="Line"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Line">[docs]</a><span class="k">class</span> <span class="nc">Line</span><span class="p">(</span><span class="n">Wireframe</span><span class="p">):</span>
|
||||
<span class="sd">"""Line a open wireframe object in local coordinate system"""</span>
|
||||
<div class="viewcode-block" id="Line"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Line">[docs]</a><span class="k">class</span> <span class="nc">Line</span><span class="p">(</span><span class="n">Polyline</span><span class="p">):</span>
|
||||
<span class="sd">"""Line, an open wireframe object in local coordinate system"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">point1</span><span class="o">=</span><span class="n">Point</span><span class="p">(</span><span class="o">-</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">point2</span><span class="o">=</span><span class="n">Point</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="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">point1</span><span class="p">,</span> <span class="n">point2</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Polygon"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polygon">[docs]</a><span class="k">class</span> <span class="nc">Polygon</span><span class="p">(</span><span class="n">Wireframe</span><span class="p">):</span>
|
||||
<span class="c1"># TODO: combining wit non Arc version?</span>
|
||||
<div class="viewcode-block" id="ArcCircle"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.ArcCircle">[docs]</a><span class="k">class</span> <span class="nc">ArcCircle</span><span class="p">(</span><span class="n">Polyline</span><span class="p">):</span>
|
||||
<span class="sd">"""Arc of a circle, an open wireframe object in local coordinate</span>
|
||||
<span class="sd"> system</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">radius</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">ang1</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ang2</span><span class="o">=</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="kc">None</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="n">interval</span> <span class="o">=</span> <span class="n">circle</span><span class="p">(</span><span class="n">radius</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">n</span><span class="p">:</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="n">Properties</span><span class="o">.</span><span class="n">circle_sectors</span>
|
||||
<span class="n">delta</span> <span class="o">=</span> <span class="n">interval</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">/</span><span class="n">n</span>
|
||||
<span class="n">points</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="n">x</span><span class="p">(</span><span class="n">ang1</span><span class="p">),</span> <span class="n">y</span><span class="p">(</span><span class="n">ang1</span><span class="p">),</span> <span class="mi">0</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">ang1</span> <span class="o">></span> <span class="n">ang2</span> <span class="p">:</span>
|
||||
<span class="n">ang1</span> <span class="o">=</span> <span class="n">ang1</span> <span class="o">-</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span>
|
||||
<span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">ang1</span> <span class="o">//</span> <span class="n">delta</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">ang2</span> <span class="o">//</span> <span class="n">delta</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</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">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
||||
<span class="n">points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="n">x</span><span class="p">(</span><span class="n">i</span><span class="o">*</span><span class="n">delta</span><span class="p">),</span> <span class="n">y</span><span class="p">(</span><span class="n">i</span><span class="o">*</span><span class="n">delta</span><span class="p">),</span> <span class="mi">0</span><span class="p">))</span>
|
||||
<span class="n">points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="n">x</span><span class="p">(</span><span class="n">ang2</span><span class="p">),</span> <span class="n">y</span><span class="p">(</span><span class="n">ang2</span><span class="p">),</span> <span class="mi">0</span><span class="p">))</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">points</span><span class="p">)</span></div>
|
||||
|
||||
<span class="c1"># TODO: combining wit non Arc version?</span>
|
||||
<div class="viewcode-block" id="ArcEllipse"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.ArcEllipse">[docs]</a><span class="k">class</span> <span class="nc">ArcEllipse</span><span class="p">(</span><span class="n">Polyline</span><span class="p">):</span>
|
||||
<span class="sd">"""Arc of an ellipse, an open wireframe object in local</span>
|
||||
<span class="sd"> coordinate system</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="mi">1</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">ang1</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ang2</span><span class="o">=</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="kc">None</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="n">interval</span> <span class="o">=</span> <span class="n">ellipse</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">if</span> <span class="ow">not</span> <span class="n">n</span><span class="p">:</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="n">Properties</span><span class="o">.</span><span class="n">circle_sectors</span>
|
||||
<span class="n">delta</span> <span class="o">=</span> <span class="n">interval</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">/</span><span class="n">n</span>
|
||||
<span class="n">points</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="n">x</span><span class="p">(</span><span class="n">ang1</span><span class="p">),</span> <span class="n">y</span><span class="p">(</span><span class="n">ang1</span><span class="p">),</span> <span class="mi">0</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">ang1</span> <span class="o">></span> <span class="n">ang2</span> <span class="p">:</span>
|
||||
<span class="n">ang1</span> <span class="o">=</span> <span class="n">ang1</span> <span class="o">-</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span>
|
||||
<span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">ang1</span> <span class="o">//</span> <span class="n">delta</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">ang2</span> <span class="o">//</span> <span class="n">delta</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</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">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
||||
<span class="n">points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="n">x</span><span class="p">(</span><span class="n">i</span><span class="o">*</span><span class="n">delta</span><span class="p">),</span> <span class="n">y</span><span class="p">(</span><span class="n">i</span><span class="o">*</span><span class="n">delta</span><span class="p">),</span> <span class="mi">0</span><span class="p">))</span>
|
||||
<span class="n">points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="n">x</span><span class="p">(</span><span class="n">ang2</span><span class="p">),</span> <span class="n">y</span><span class="p">(</span><span class="n">ang2</span><span class="p">),</span> <span class="mi">0</span><span class="p">))</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">points</span><span class="p">)</span></div>
|
||||
|
||||
<span class="c1"># redefining the .function.sample_half_open(f, a, b, n=50, endpoint_epsilon=1e-7)</span>
|
||||
<span class="c1"># to create a list of Points</span>
|
||||
<div class="viewcode-block" id="sample_half_open"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.sample_half_open">[docs]</a><span class="k">def</span> <span class="nf">sample_half_open</span><span class="p">(</span><span class="n">f</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="n">n</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span> <span class="n">endpoint_epsilon</span><span class="o">=</span><span class="mf">1e-7</span><span class="p">):</span>
|
||||
<span class="c1"># hack to sample close to the endpoint</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">seq</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="p">(</span><span class="n">b</span><span class="o">-</span><span class="n">a</span><span class="p">)</span><span class="o">/</span><span class="n">n</span><span class="p">)</span> <span class="o">+</span> <span class="p">[</span><span class="n">b</span><span class="o">-</span><span class="n">endpoint_epsilon</span><span class="p">]</span>
|
||||
<span class="c1"># Sample the function</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">Point</span><span class="p">(</span><span class="o">*</span><span class="n">f</span><span class="p">(</span><span class="n">xi</span><span class="p">))</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]</span></div>
|
||||
|
||||
<span class="c1"># TODO: naming? combining wit non Arc version?</span>
|
||||
<div class="viewcode-block" id="ArcBSplineCurveWithKnots"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.ArcBSplineCurveWithKnots">[docs]</a><span class="k">class</span> <span class="nc">ArcBSplineCurveWithKnots</span><span class="p">(</span><span class="n">Polyline</span><span class="p">):</span>
|
||||
<span class="sd">"""B-spline curve with knots, an open wireframe object in local</span>
|
||||
<span class="sd"> coordinate system"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">degree</span><span class="p">,</span> <span class="n">control_points</span><span class="p">,</span> <span class="n">knot_multiplicities</span><span class="p">,</span>
|
||||
<span class="n">knots</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">5</span><span class="p">):</span>
|
||||
<span class="n">knots</span> <span class="o">=</span> <span class="p">[</span><span class="n">knots</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="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">knots</span><span class="p">))</span> <span class="k">for</span>
|
||||
<span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">knot_multiplicities</span><span class="p">[</span><span class="n">i</span><span class="p">])]</span>
|
||||
<span class="c1">#u = seq(knots[0], knots[-1], (knots[-1]-knots[0])/n) + [knots[-1]-1e-7]</span>
|
||||
<span class="n">C</span> <span class="o">=</span> <span class="n">b_spline_curve_with_knots</span><span class="p">(</span><span class="n">degree</span><span class="p">,</span> <span class="n">control_points</span><span class="p">,</span> <span class="n">knots</span><span class="p">)</span>
|
||||
<span class="c1">#points = [Point(*C(ui)) for ui in u]</span>
|
||||
<span class="n">points</span> <span class="o">=</span> <span class="n">sample_half_open</span><span class="p">(</span><span class="n">C</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="n">n</span><span class="p">,</span> <span class="n">endpoint_epsilon</span><span class="o">=</span><span class="mf">1e-7</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">points</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="B_spline_curve_with_knots"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.B_spline_curve_with_knots">[docs]</a><span class="k">class</span> <span class="nc">B_spline_curve_with_knots</span><span class="p">(</span><span class="n">Polyline</span><span class="p">):</span>
|
||||
<span class="sd">"""B-spline curve with knots, an open wireframe object in local</span>
|
||||
<span class="sd"> coordinate system"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">degree</span><span class="p">,</span> <span class="n">control_points</span><span class="p">,</span> <span class="n">knot_multiplicities</span><span class="p">,</span>
|
||||
<span class="n">knots</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">5</span><span class="p">):</span>
|
||||
<span class="n">knots</span> <span class="o">=</span> <span class="p">[</span><span class="n">knots</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="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">knots</span><span class="p">))</span> <span class="k">for</span>
|
||||
<span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">knot_multiplicities</span><span class="p">[</span><span class="n">i</span><span class="p">])]</span>
|
||||
<span class="c1">#u = seq(knots[0], knots[-1], (knots[-1]-knots[0])/n) + [knots[-1]-1e-7]</span>
|
||||
<span class="n">C</span> <span class="o">=</span> <span class="n">b_spline_curve_with_knots</span><span class="p">(</span><span class="n">degree</span><span class="p">,</span> <span class="n">control_points</span><span class="p">,</span> <span class="n">knots</span><span class="p">)</span>
|
||||
<span class="c1">#points = [Point(*C(ui)) for ui in u]</span>
|
||||
<span class="n">points</span> <span class="o">=</span> <span class="n">sample_half_open</span><span class="p">(</span><span class="n">C</span><span class="p">,</span> <span class="n">knots</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">knots</span><span class="p">[</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="n">n</span><span class="p">,</span> <span class="n">endpoint_epsilon</span><span class="o">=</span><span class="mf">1e-7</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">points</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Polygon"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polygon">[docs]</a><span class="k">class</span> <span class="nc">Polygon</span><span class="p">(</span><span class="n">Polyline</span><span class="p">):</span>
|
||||
<span class="sd">"""Polygon as closed wireframe object in local coordinate system"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">points</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">points</span><span class="p">,</span> <span class="n">closed</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Circle"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Circle">[docs]</a><span class="k">class</span> <span class="nc">Circle</span><span class="p">(</span><span class="n">Polygon</span><span class="p">):</span>
|
||||
<span class="sd">"""Circle a closed wireframe object in local coordinate system"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">radius</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">points</span> <span class="o">=</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">n</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">radius</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">i</span><span class="o">*</span><span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="n">n</span><span class="p">)</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">radius</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">i</span><span class="o">*</span><span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="n">n</span><span class="p">)</span>
|
||||
<span class="n">points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Point</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="mi">0</span><span class="p">))</span>
|
||||
<span class="sd">"""Circle, a closed wireframe object in local coordinate system"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">radius</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="kc">None</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="n">interval</span> <span class="o">=</span> <span class="n">circle</span><span class="p">(</span><span class="n">radius</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">n</span><span class="p">:</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="n">Properties</span><span class="o">.</span><span class="n">circle_sectors</span>
|
||||
<span class="n">delta</span> <span class="o">=</span> <span class="n">interval</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">/</span><span class="n">n</span>
|
||||
<span class="n">points</span> <span class="o">=</span> <span class="p">[</span><span class="n">Point</span><span class="p">(</span><span class="n">x</span><span class="p">(</span><span class="n">i</span><span class="o">*</span><span class="n">delta</span><span class="p">),</span> <span class="n">y</span><span class="p">(</span><span class="n">i</span><span class="o">*</span><span class="n">delta</span><span class="p">),</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">n</span><span class="p">)]</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">points</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Ellipse"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Ellipse">[docs]</a><span class="k">class</span> <span class="nc">Ellipse</span><span class="p">(</span><span class="n">Polygon</span><span class="p">):</span>
|
||||
<span class="sd">"""Circle, a closed wireframe object in local coordinate system"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="mi">1</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="kc">None</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="n">interval</span> <span class="o">=</span> <span class="n">ellipse</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">if</span> <span class="ow">not</span> <span class="n">n</span><span class="p">:</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="n">Properties</span><span class="o">.</span><span class="n">circle_sectors</span>
|
||||
<span class="n">delta</span> <span class="o">=</span> <span class="n">interval</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">/</span><span class="n">n</span>
|
||||
<span class="n">points</span> <span class="o">=</span> <span class="p">[</span><span class="n">Point</span><span class="p">(</span><span class="n">x</span><span class="p">(</span><span class="n">i</span><span class="o">*</span><span class="n">delta</span><span class="p">),</span> <span class="n">y</span><span class="p">(</span><span class="n">i</span><span class="o">*</span><span class="n">delta</span><span class="p">),</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">n</span><span class="p">)]</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">points</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Solid"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Solid">[docs]</a><span class="k">class</span> <span class="nc">Solid</span><span class="p">:</span>
|
||||
@@ -240,6 +347,13 @@
|
||||
<span class="sd">"""Returns the Iterator object"""</span>
|
||||
<span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">objects</span><span class="p">())</span></div>
|
||||
|
||||
<div class="viewcode-block" id="World.__str__"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.__str__">[docs]</a> <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="n">result</span> <span class="o">=</span> <span class="s1">'World(</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">objects</span><span class="p">():</span>
|
||||
<span class="n">result</span> <span class="o">+=</span> <span class="s1">' '</span> <span class="o">+</span> <span class="nb">repr</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">+</span> <span class="s1">',</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="n">result</span> <span class="o">+=</span> <span class="s1">')'</span>
|
||||
<span class="k">return</span> <span class="n">result</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_store_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Initialize or reset calculated values, because a new object</span>
|
||||
<span class="sd"> was added.</span>
|
||||
@@ -279,7 +393,7 @@
|
||||
<div class="viewcode-block" id="World.wireframes"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.wireframes">[docs]</a> <span class="k">def</span> <span class="nf">wireframes</span><span class="p">(</span><span class="bp">self</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">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">objects</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Wireframe</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Polyline</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="n">i</span><span class="o">.</span><span class="n">points</span><span class="p">())</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Solid</span><span class="p">):</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="n">j</span><span class="o">.</span><span class="n">points</span><span class="p">())</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">i</span><span class="o">.</span><span class="n">wireframes</span><span class="p">()]</span>
|
||||
@@ -288,7 +402,7 @@
|
||||
<div class="viewcode-block" id="World.wireframes_xy"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.wireframes_xy">[docs]</a> <span class="k">def</span> <span class="nf">wireframes_xy</span><span class="p">(</span><span class="bp">self</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">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">objects</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Wireframe</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Polyline</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="n">i</span><span class="o">.</span><span class="n">xy</span><span class="p">())</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Solid</span><span class="p">):</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="n">j</span><span class="o">.</span><span class="n">xy</span><span class="p">())</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">i</span><span class="o">.</span><span class="n">wireframes</span><span class="p">()]</span>
|
||||
@@ -297,7 +411,7 @@
|
||||
<div class="viewcode-block" id="World.wireframes_xyz"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.wireframes_xyz">[docs]</a> <span class="k">def</span> <span class="nf">wireframes_xyz</span><span class="p">(</span><span class="bp">self</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">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">objects</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Wireframe</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Polyline</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="n">i</span><span class="o">.</span><span class="n">xyz</span><span class="p">())</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Solid</span><span class="p">):</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="n">j</span><span class="o">.</span><span class="n">xyz</span><span class="p">())</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">i</span><span class="o">.</span><span class="n">wireframes</span><span class="p">()]</span>
|
||||
@@ -308,6 +422,7 @@
|
||||
|
||||
<div class="viewcode-block" id="World.add"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">objects</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_store_init</span><span class="p">()</span> <span class="c1"># calculated values are not correct anymore</span>
|
||||
<span class="c1"># [] + [] not possible bc objects are vectors</span>
|
||||
<span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_objects</span><span class="o">.</span><span class="n">append</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">objects</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
|
||||
@@ -262,13 +262,18 @@
|
||||
<span class="n">fig</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">mpl_connect</span><span class="p">(</span><span class="s1">'resize_event'</span><span class="p">,</span>
|
||||
<span class="k">lambda</span> <span class="n">event</span><span class="p">:</span> <span class="n">onresize</span><span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">world</span><span class="p">))</span>
|
||||
|
||||
<span class="c1"># 'rotate: ←left, right, up, down, ctrl+left, ctrl+right\n' +</span>
|
||||
<span class="c1"># 'pan: shift+left, shift+right, shift+up, shift+down\n' +</span>
|
||||
<span class="c1"># 'zoom: ctrl+up, ctrl+down\n' +</span>
|
||||
<span class="c1"># 'view: f (front), l (left), r (right), t (top), b (bottom)\n' +</span>
|
||||
<span class="c1"># ' i (isometric), d (dimetric)',</span>
|
||||
<span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
|
||||
<span class="mi">0</span><span class="o">+.</span><span class="mi">01</span><span class="p">,</span> <span class="mi">1</span><span class="o">-.</span><span class="mi">015</span><span class="p">,</span>
|
||||
<span class="s1">'rotate: left, right, up, down, ctrl+left, ctrl+right</span><span class="se">\n</span><span class="s1">'</span> <span class="o">+</span>
|
||||
<span class="s1">'pan: shift+left, shift+right, shift+up, shift+down</span><span class="se">\n</span><span class="s1">'</span> <span class="o">+</span>
|
||||
<span class="s1">'zoom: ctrl+up, ctrl+down</span><span class="se">\n</span><span class="s1">'</span> <span class="o">+</span>
|
||||
<span class="s1">'view: f (front), l (left), r (right), t (top), b (bottom)</span><span class="se">\n</span><span class="s1">'</span> <span class="o">+</span>
|
||||
<span class="s1">' i (isometric), d (dimetric)'</span><span class="p">,</span>
|
||||
<span class="s1">'rotate: [←], [→], [↑], [↓], [Ctrl][←], [Ctrl][→]</span><span class="se">\n</span><span class="s1">'</span> <span class="o">+</span>
|
||||
<span class="s1">'pan: [Shift][←], [Shift][→], [Shift][↑], [Shift][↓]</span><span class="se">\n</span><span class="s1">'</span> <span class="o">+</span>
|
||||
<span class="s1">'zoom: [Ctrl][↑], [Ctrl][↓]</span><span class="se">\n</span><span class="s1">'</span> <span class="o">+</span>
|
||||
<span class="s1">'view: [f]ront, [l]eft, [r]ight, [t]op, [b]ottom</span><span class="se">\n</span><span class="s1">'</span> <span class="o">+</span>
|
||||
<span class="s1">' [i]sometric, [d]imetric'</span><span class="p">,</span>
|
||||
<span class="n">horizontalalignment</span><span class="o">=</span><span class="s1">'left'</span><span class="p">,</span>
|
||||
<span class="n">verticalalignment</span><span class="o">=</span><span class="s1">'top'</span><span class="p">,</span>
|
||||
<span class="n">transform</span><span class="o">=</span><span class="n">fig</span><span class="o">.</span><span class="n">transFigure</span><span class="p">,</span>
|
||||
|
||||
151
docs/build/html/_modules/pylib/helper.html
vendored
Normal file
151
docs/build/html/_modules/pylib/helper.html
vendored
Normal file
@@ -0,0 +1,151 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.helper — pylib 2019.12.21 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.helper</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Helper objects.</span>
|
||||
|
||||
<span class="sd">:Date: 2020-01-01</span>
|
||||
|
||||
<span class="sd">.. module:: helper</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Helper objects.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">time</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="kn">import</span> <span class="n">ContextDecorator</span>
|
||||
|
||||
<div class="viewcode-block" id="timeit"><a class="viewcode-back" href="../../pylib.helper.html#pylib.helper.timeit">[docs]</a><span class="k">class</span> <span class="nc">timeit</span><span class="p">(</span><span class="n">ContextDecorator</span><span class="p">):</span>
|
||||
<span class="sd">"""Meassure time for a function or code block.</span>
|
||||
|
||||
<span class="sd"> :param description: description for the function or code block</span>
|
||||
<span class="sd"> used for the print-out</span>
|
||||
<span class="sd"> :type description: str</span>
|
||||
|
||||
<span class="sd"> :Example:</span>
|
||||
|
||||
<span class="sd"> >>> with timeit('section_test'):</span>
|
||||
<span class="sd"> ... # code</span>
|
||||
<span class="sd"> section_test took 0.006 ms</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> @timeit('func')</span>
|
||||
<span class="sd"> def func():</span>
|
||||
<span class="sd"> # code</span>
|
||||
|
||||
<span class="sd"> >>> func()</span>
|
||||
<span class="sd"> func took 0.006 ms</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="bp">self</span> <span class="c1"># to use as: with Timit() as t:</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">exc</span><span class="p">):</span> <span class="c1"># exc: type, value, traceback</span>
|
||||
<span class="n">elapsed_time_ms</span> <span class="o">=</span> <span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_time</span><span class="p">)</span> <span class="o">*</span> <span class="mi">1000</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="si">{:s}</span><span class="s1"> took </span><span class="si">{:.3f}</span><span class="s1"> ms'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> <span class="n">elapsed_time_ms</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="kc">False</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>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
|
||||
</ul>
|
||||
|
||||
<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>
|
||||
320
docs/build/html/_modules/pylib/mathematics.html
vendored
320
docs/build/html/_modules/pylib/mathematics.html
vendored
@@ -130,7 +130,7 @@
|
||||
<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="c1"># use the list.__getitem__ 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></div>
|
||||
|
||||
@@ -385,12 +385,11 @@
|
||||
|
||||
<div class="viewcode-block" id="vector.full"><a class="viewcode-back" href="../../pylib.mathematics.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">"""Returns a vector of length m 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"> :param fill_value: fill value</span>
|
||||
<span class="sd"> :Type fill_value: scalar</span>
|
||||
|
||||
<span class="sd"> :Example:</span>
|
||||
@@ -403,15 +402,14 @@
|
||||
|
||||
<div class="viewcode-block" id="vector.zeros"><a class="viewcode-back" href="../../pylib.mathematics.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">"""Returns a zero vector of length m 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"> >>> v = vector.zeros(3)</span>
|
||||
<span class="sd"> >>> print(v)</span>
|
||||
<span class="sd"> [0.0, 0.0, 0.0]</span>
|
||||
<span class="sd"> """</span>
|
||||
@@ -419,40 +417,42 @@
|
||||
|
||||
<div class="viewcode-block" id="vector.ones"><a class="viewcode-back" href="../../pylib.mathematics.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">"""Returns a vector of length m 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"> >>> v = vector.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.mathematics.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,</span>
|
||||
<span class="sd"> n columns filled with random numbers.</span>
|
||||
<span class="k">def</span> <span class="nf">random</span><span class="p">(</span><span class="n">length</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 filled with random</span>
|
||||
<span class="sd"> numbers.</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 = random(3)</span>
|
||||
<span class="sd"> >>> v = vector.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"> >>> v = vector.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>
|
||||
<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">length</span><span class="p">)])</span></div>
|
||||
|
||||
<div class="viewcode-block" id="vector.normalize"><a class="viewcode-back" href="../../pylib.mathematics.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>
|
||||
<div class="viewcode-block" id="vector.normalized"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.normalized">[docs]</a> <span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">normalized</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>
|
||||
@@ -468,7 +468,12 @@
|
||||
|
||||
<div class="viewcode-block" id="vector.ang"><a class="viewcode-back" href="../../pylib.mathematics.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>
|
||||
<span class="n">x</span> <span class="o">=</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>
|
||||
<span class="c1"># decimal floating-point numbers are only approximated by the</span>
|
||||
<span class="c1"># binary floating-point numbers actually stored in the machine.</span>
|
||||
<span class="c1"># https://docs.python.org/3.8/tutorial/floatingpoint.html</span>
|
||||
<span class="n">xr15</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="mi">15</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">xr15</span><span class="p">)</span> <span class="k">if</span> <span class="o">-</span><span class="mi">1</span> <span class="o"><=</span> <span class="n">xr15</span> <span class="o"><=</span> <span class="mi">1</span> <span class="k">else</span> <span class="n">math</span><span class="o">.</span><span class="n">acos</span><span class="p">(</span><span class="n">x</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="vector.conjugate"><a class="viewcode-back" href="../../pylib.mathematics.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>
|
||||
@@ -524,9 +529,30 @@
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> \mathbf{c} = \mathbf{a} \times \mathbf{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>
|
||||
<span class="k">return</span> <span class="n">vector</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.isclose"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.isclose">[docs]</a> <span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">isclose</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="n">rel_tol</span><span class="o">=</span><span class="mf">0.05</span><span class="p">,</span> <span class="n">abs_tol</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">all</span><span class="p">([</span><span class="n">math</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">rel_tol</span><span class="o">=</span><span class="n">rel_tol</span><span class="p">,</span> <span class="n">abs_tol</span><span class="o">=</span><span class="n">abs_tol</span><span class="p">)</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="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)])</span></div>
|
||||
|
||||
<div class="viewcode-block" id="vector.iscloseto"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.iscloseto">[docs]</a> <span class="k">def</span> <span class="nf">iscloseto</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">return</span> <span class="n">vector</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="vector.normalize"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.normalize">[docs]</a> <span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="bp">self</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"> \mathbf{\hat{a}} = \frac{\mathbf{a}}{|\mathbf{a}|}</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`__abs__` for a norm (magnitude) of a vector</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">vector</span><span class="o">.</span><span class="n">normalized</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
<div class="viewcode-block" id="vector.rotate_x"><a class="viewcode-back" href="../../pylib.mathematics.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>
|
||||
@@ -649,8 +675,16 @@
|
||||
|
||||
<span class="sd"> >>> m = matrix([[1, 2, 3, 0], [4, 5, 6, 0], [7, 8, 9, 0], \</span>
|
||||
<span class="sd"> [0, 0, 0, 0]])</span>
|
||||
<span class="sd"> >>> print(m[:])</span>
|
||||
<span class="sd"> [[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[2, :])</span>
|
||||
<span class="sd"> [7, 8, 9, 0]</span>
|
||||
<span class="sd"> >>> print(m[:, 2])</span>
|
||||
<span class="sd"> [3, 6, 9, 0]</span>
|
||||
<span class="sd"> >>> print(m[2, 2])</span>
|
||||
<span class="sd"> 9</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>
|
||||
@@ -658,15 +692,143 @@
|
||||
<span class="sd"> >>> print(m[::2, ::2])</span>
|
||||
<span class="sd"> [[1, 3], [7, 9]]</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># TODO single row or column = vector (1d list)?</span>
|
||||
<span class="c1"># index: slice(stop), slice(start, stop[, step])</span>
|
||||
<span class="c1"># for 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="c1"># use the list.__getitem__ method and convert result to matrix</span>
|
||||
<span class="c1">#print(index)</span>
|
||||
<span class="k">try</span><span class="p">:</span> <span class="c1"># 2d slicing (tuple of sclices)</span>
|
||||
<span class="k">try</span><span class="p">:</span> <span class="c1"># range:range or range:single: [:, 2]</span>
|
||||
<span class="c1">#print(1)</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"># single:range: [2, :], [2, 2]</span>
|
||||
<span class="c1">#print(2)</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="mi">0</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">1</span><span class="p">])</span>
|
||||
<span class="k">except</span><span class="p">:</span> <span class="c1"># 1d slicing: [:], [2], [2][2]</span>
|
||||
<span class="c1">#print(3)</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>
|
||||
<span class="c1">#print(item)</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="ow">and</span> \
|
||||
<span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">0</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>
|
||||
|
||||
<div class="viewcode-block" id="matrix.__setitem__"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.__setitem__">[docs]</a> <span class="k">def</span> <span class="fm">__setitem__</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="n">value</span><span class="p">):</span>
|
||||
<span class="c1">#print(index, value)</span>
|
||||
<span class="k">try</span><span class="p">:</span> <span class="c1"># [2, 2]</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="o">.</span><span class="fm">__setitem__</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="n">value</span><span class="p">)</span>
|
||||
<span class="k">except</span><span class="p">:</span> <span class="c1"># [2], [2][2]</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__setitem__</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span></div>
|
||||
<span class="c1">#print(self)</span>
|
||||
|
||||
<div class="viewcode-block" id="matrix.__mul__"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.__mul__">[docs]</a> <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. (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</span>
|
||||
<span class="sd"> for 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], \</span>
|
||||
<span class="sd"> [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], \</span>
|
||||
<span class="sd"> [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]]) * \</span>
|
||||
<span class="sd"> 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]]) * \</span>
|
||||
<span class="sd"> 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></div>
|
||||
|
||||
<div class="viewcode-block" id="matrix.__rmul__"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.__rmul__">[docs]</a> <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. (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</span>
|
||||
<span class="sd"> for 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], \</span>
|
||||
<span class="sd"> [9, 10, 11, 12], [0, 0, 0, 1]])</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], \</span>
|
||||
<span class="sd"> [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__` and :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></div>
|
||||
|
||||
<div class="viewcode-block" id="matrix.__str__"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.__str__">[docs]</a> <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></div>
|
||||
|
||||
<div class="viewcode-block" id="matrix.__repr__"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.__repr__">[docs]</a> <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>
|
||||
|
||||
<div class="viewcode-block" id="matrix.zeros"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.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">m</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
|
||||
<span class="sd">"""Returns a zero matrix of size mxn; m rows and n columns</span>
|
||||
<span class="sd"> filled with zeros.</span>
|
||||
|
||||
<span class="sd"> :param m: number of rows of the matrix, e. g. 3</span>
|
||||
<span class="sd"> :type m: int</span>
|
||||
<span class="sd"> :param n: number of columns of the matrix, e. g. 3</span>
|
||||
<span class="sd"> :type n: int</span>
|
||||
|
||||
<span class="sd"> :Example:</span>
|
||||
|
||||
<span class="sd"> >>> m = matrix.zeros(3, 3)</span>
|
||||
<span class="sd"> >>> print(m)\</span>
|
||||
<span class="sd"> [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">matrix</span><span class="p">([[</span><span class="mf">0.</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">n</span><span class="p">)]</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">m</span><span class="p">)])</span></div>
|
||||
|
||||
<div class="viewcode-block" id="matrix.rx"><a class="viewcode-back" href="../../pylib.mathematics.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>
|
||||
@@ -809,97 +971,23 @@
|
||||
<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.__mul__"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.__mul__">[docs]</a> <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. (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</span>
|
||||
<span class="sd"> for 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], \</span>
|
||||
<span class="sd"> [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], \</span>
|
||||
<span class="sd"> [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]]) * \</span>
|
||||
<span class="sd"> 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]]) * \</span>
|
||||
<span class="sd"> 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>
|
||||
<div class="viewcode-block" id="matrix.transposed"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.transposed">[docs]</a> <span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">transposed</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
|
||||
<span class="sd">"""Transpose</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></div>
|
||||
<span class="n">m</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="nb">len</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="n">new</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">m</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">m</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||||
<span class="n">new</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">new</span></div>
|
||||
|
||||
<div class="viewcode-block" id="matrix.__rmul__"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.__rmul__">[docs]</a> <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. (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</span>
|
||||
<span class="sd"> for 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], \</span>
|
||||
<span class="sd"> [9, 10, 11, 12], [0, 0, 0, 1]])</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], \</span>
|
||||
<span class="sd"> [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__` and :meth:`vector.__mul__` for vector * matrix</span>
|
||||
<div class="viewcode-block" id="matrix.transpose"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.transpose">[docs]</a> <span class="k">def</span> <span class="nf">transpose</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Transpose</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></div>
|
||||
|
||||
<div class="viewcode-block" id="matrix.__str__"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.__str__">[docs]</a> <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></div>
|
||||
|
||||
<div class="viewcode-block" id="matrix.__repr__"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.__repr__">[docs]</a> <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>
|
||||
<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">transposed</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
<div class="viewcode-block" id="matrix.rotate_x"><a class="viewcode-back" href="../../pylib.mathematics.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>
|
||||
|
||||
100
docs/build/html/_modules/pylib/numerical/ode.html
vendored
100
docs/build/html/_modules/pylib/numerical/ode.html
vendored
@@ -35,7 +35,7 @@
|
||||
<h1>Source code for pylib.numerical.ode</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Numerical solver of ordinary differential equations.</span>
|
||||
<span class="sa">r</span><span class="sd">"""Numerical solver of ordinary differential equations.</span>
|
||||
|
||||
<span class="sd">Solves the initial value problem for systems of first order</span>
|
||||
<span class="sd">ordinary differential equations.</span>
|
||||
@@ -47,9 +47,14 @@
|
||||
<span class="sd"> :synopsis: Numerical solver.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</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="sd">Approximate the solution :math:`x(t)` of the initial value problem</span>
|
||||
|
||||
<span class="sd">.. math ::</span>
|
||||
<span class="sd"> \frac{\mathrm{d}x}{\mathrm{d}t} = \dot{x} &= f(t,x) \\</span>
|
||||
<span class="sd"> x(t_0) &= x_0 \\</span>
|
||||
<span class="sd"> t &\in [t_0, t_n]</span>
|
||||
<span class="sd">"""</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="kn">import</span> <span class="n">norm</span><span class="p">,</span> <span class="n">inv</span>
|
||||
|
||||
@@ -73,20 +78,21 @@
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
|
||||
<span class="sd"> Approximate the solution of the initial value problem</span>
|
||||
<span class="sd"> Approximate the solution :math:`x(t)` of the initial value problem</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \dot{x} &= f(t,x) \\</span>
|
||||
<span class="sd"> x(t_0) &= x_0</span>
|
||||
<span class="sd"> x(t_0) &= x_0 \\</span>
|
||||
<span class="sd"> t &\in [t_0, t_n]</span>
|
||||
|
||||
<span class="sd"> Choose a value h for the size of every step and set</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> t_i = t_0 + i h ~,\quad i=1,2,\ldots,n</span>
|
||||
<span class="sd"> t_{i+1} = t_0 + i h = t_i + h ~,\quad i=0,1,2,\ldots,n-1</span>
|
||||
|
||||
<span class="sd"> The derivative of the solution is approximated as the forward</span>
|
||||
<span class="sd"> difference equation</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \dot{x}_i = f(t_i, x_i) = \frac{x_{i+1} - x_i}{t_{i+1}-t_i}</span>
|
||||
|
||||
@@ -166,13 +172,23 @@
|
||||
<span class="sd"> the step size, and the global error (error at a given time) is</span>
|
||||
<span class="sd"> proportional to the step size.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x0</span> <span class="c1"># Initial condition gives solution at first t</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="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span> <span class="c1"># Calculation loop</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">dxdt</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="c1"># Approximate solution at next value of x</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span> <span class="o">+</span> <span class="n">dxdt</span><span class="o">*</span><span class="n">Dt</span>
|
||||
<span class="kn">from</span> <span class="nn">pylib.data</span> <span class="kn">import</span> <span class="n">issequence</span>
|
||||
<span class="k">if</span> <span class="n">issequence</span><span class="p">(</span><span class="n">x0</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x0</span> <span class="c1"># Initial condition gives solution at first t</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="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span> <span class="c1"># Calculation loop</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">dxdt</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="c1"># Approximate solution at next value of x</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span> <span class="o">+</span> <span class="n">dxdt</span><span class="o">*</span><span class="n">Dt</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)))</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">x0</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="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span> <span class="c1"># Calculation loop</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">dxdt</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="c1"># Approximate solution at next value of x</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">dxdt</span><span class="o">*</span><span class="n">Dt</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Numerical integration of ODE using explicit '</span> <span class="o">+</span>
|
||||
<span class="s1">'first-order method (Euler / Runge-Kutta) was successful.'</span><span class="p">)</span>
|
||||
@@ -218,6 +234,31 @@
|
||||
<span class="sd"> ...)</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
|
||||
<span class="sd"> Problem</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \dot{y} &= f(t, y) \\</span>
|
||||
<span class="sd"> y(t_0) &= y_0 \\</span>
|
||||
<span class="sd"> t &\in [t_0, t_n]</span>
|
||||
|
||||
<span class="sd"> Increment :math:`\delta t = t_{i+1}-t_i ~,~~ i=0,1,2,\ldots,n-1`</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> y_{n+1} &= y_{i} + \tfrac{1}{6}(</span>
|
||||
<span class="sd"> \delta y_{i,1} + 2\delta y_{i,2} + 2\delta y_{i,3} +</span>
|
||||
<span class="sd"> \delta y_{i,4}) \\</span>
|
||||
<span class="sd"> & \qquad \text{with} \\</span>
|
||||
<span class="sd"> \delta y_{i,1} &= \delta t \cdot y'(t_{i}, ~ y_{i}) \\</span>
|
||||
<span class="sd"> \delta y_{i,2} &= \delta t \cdot</span>
|
||||
<span class="sd"> y'(t_{i}+\tfrac{1}{2}\delta t, ~</span>
|
||||
<span class="sd"> y_{i}+\tfrac{1}{2}\delta y_{i,1}) \\</span>
|
||||
<span class="sd"> \delta y_{i,3} &= \delta t \cdot</span>
|
||||
<span class="sd"> y'(t_{i}+\tfrac{1}{2}\delta t, ~</span>
|
||||
<span class="sd"> y_{i}+\tfrac{1}{2}\delta y_{i,2}) \\</span>
|
||||
<span class="sd"> \delta y_{i,4} &= \delta t \cdot</span>
|
||||
<span class="sd"> y'(t_{i}+\delta t, ~ y_{i}+\delta y_{i,3})</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x0</span> <span class="c1"># Initial condition</span>
|
||||
@@ -237,7 +278,7 @@
|
||||
<div class="viewcode-block" id="fpi"><a class="viewcode-back" href="../../../pylib.numerical.ode.html#pylib.numerical.ode.fpi">[docs]</a><span class="k">def</span> <span class="nf">fpi</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">xi</span><span class="p">,</span> <span class="n">ti</span><span class="p">,</span> <span class="n">ti1</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">max_iterations</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">tol</span><span class="o">=</span><span class="mf">1e-9</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">"""Fixed-point iteration.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> :param f: the function to iterate :math:`f = \dot{x}(x,t)`</span>
|
||||
<span class="sd"> :type f: function</span>
|
||||
<span class="sd"> :param xi: initial condition :math:`x_i`</span>
|
||||
@@ -255,19 +296,19 @@
|
||||
<span class="sd"> :type tol: float</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> :returns: :math:`x_{i}`</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> x_{i,j=0} = x_{i}</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> x_{i,j+1} = x_i + \dot{x}(x_{i,j}, t_{i+1})\cdot(t_{i+1}-t_i)</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \text{residuum} = \frac{\lVert x_{i,j+1}-x_{i,j}\rVert}</span>
|
||||
<span class="sd"> {\lVert x_{i,j+1} \rVert} < \varepsilon</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> x_{i} = x_{i,j=\text{end}}</span>
|
||||
<span class="sd"> """</span>
|
||||
@@ -301,7 +342,7 @@
|
||||
<span class="sd"> :type tol: float</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> The backward Euler method has order one and is A-stable.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">iterations</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="mi">1</span><span class="p">))</span>
|
||||
@@ -313,8 +354,9 @@
|
||||
<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="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">xi</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span>
|
||||
<span class="n">xi</span><span class="p">,</span> <span class="n">iteration</span> <span class="o">=</span> <span class="n">fpi</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">xi</span><span class="p">,</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">max_iterations</span><span class="p">,</span>
|
||||
<span class="n">tol</span><span class="p">,</span> <span class="n">verbose</span><span class="p">)</span>
|
||||
<span class="n">xi</span><span class="p">,</span> <span class="n">iteration</span> <span class="o">=</span> <span class="n">fpi</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">xi</span><span class="p">,</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span>
|
||||
<span class="n">max_iterations</span><span class="o">=</span><span class="n">max_iterations</span><span class="p">,</span> <span class="n">tol</span><span class="o">=</span><span class="n">tol</span><span class="p">,</span>
|
||||
<span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">xi</span>
|
||||
<span class="n">iterations</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">iteration</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
@@ -382,7 +424,7 @@
|
||||
<span class="n">dot</span><span class="p">(</span><span class="n">dNp</span><span class="p">,</span> <span class="p">(</span><span class="n">xp1</span><span class="o">-</span><span class="n">xpi</span><span class="p">))))</span>
|
||||
<span class="n">xp1</span> <span class="o">=</span> <span class="n">xpi</span> <span class="o">+</span> <span class="n">Dt</span><span class="o">*</span><span class="p">(</span> <span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">gamma</span><span class="p">)</span><span class="o">*</span><span class="n">xppi</span> <span class="o">+</span> <span class="n">gamma</span><span class="o">*</span><span class="n">xpp11</span> <span class="p">)</span>
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="n">xi</span> <span class="o">+</span> <span class="n">Dt</span><span class="o">*</span><span class="n">xpi</span> <span class="o">+</span> <span class="n">Dt</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="p">(</span> <span class="p">(</span><span class="o">.</span><span class="mi">5</span><span class="o">-</span><span class="n">beta</span><span class="p">)</span><span class="o">*</span><span class="n">xppi</span> <span class="o">+</span> <span class="n">beta</span><span class="o">*</span><span class="n">xpp11</span> <span class="p">)</span>
|
||||
|
||||
|
||||
<span class="n">residuum</span> <span class="o">=</span> <span class="n">norm</span><span class="p">(</span><span class="n">xpp11</span><span class="o">-</span><span class="n">xpp1</span><span class="p">)</span><span class="o">/</span><span class="n">norm</span><span class="p">(</span><span class="n">xpp11</span><span class="p">)</span>
|
||||
<span class="n">xpp1</span> <span class="o">=</span> <span class="n">xpp11</span>
|
||||
<span class="k">if</span> <span class="n">residuum</span> <span class="o"><</span> <span class="n">tol</span><span class="p">:</span>
|
||||
@@ -398,10 +440,12 @@
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">xp</span><span class="p">,</span> <span class="n">xpp</span><span class="p">,</span> <span class="n">iterations</span></div>
|
||||
<span class="c1"># x = concatenate((x, xp, xpp), axis=1)</span>
|
||||
|
||||
<div class="viewcode-block" id="newmark_newtonraphson_rdk"><a class="viewcode-back" href="../../../pylib.numerical.ode.html#pylib.numerical.ode.newmark_newtonraphson_rdk">[docs]</a><span class="k">def</span> <span class="nf">newmark_newtonraphson_rdk</span><span class="p">(</span><span class="n">fnm</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">xp0</span><span class="p">,</span> <span class="n">xpp0</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">gamma</span><span class="o">=.</span><span class="mi">5</span><span class="p">,</span>
|
||||
<div class="viewcode-block" id="newmark_newtonraphson_mdk"><a class="viewcode-back" href="../../../pylib.numerical.ode.html#pylib.numerical.ode.newmark_newtonraphson_mdk">[docs]</a><span class="k">def</span> <span class="nf">newmark_newtonraphson_mdk</span><span class="p">(</span><span class="n">fmdk</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">xp0</span><span class="p">,</span> <span class="n">xpp0</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">gamma</span><span class="o">=.</span><span class="mi">5</span><span class="p">,</span>
|
||||
<span class="n">beta</span><span class="o">=.</span><span class="mi">25</span><span class="p">,</span> <span class="n">max_iterations</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">tol</span><span class="o">=</span><span class="mf">1e-9</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">"""Newmark method.</span>
|
||||
|
||||
<span class="sd"> Using m mass, d damping and k stiffness formulation.</span>
|
||||
|
||||
<span class="sd"> :param f: the function to solve</span>
|
||||
<span class="sd"> :type f: function</span>
|
||||
<span class="sd"> :param x0: initial condition</span>
|
||||
@@ -435,9 +479,9 @@
|
||||
<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="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
|
||||
<span class="n">rm</span><span class="p">,</span> <span class="n">rmx</span><span class="p">,</span> <span class="n">rmxpp</span><span class="p">,</span> <span class="n">rd</span><span class="p">,</span> <span class="n">rdx</span><span class="p">,</span> <span class="n">rdxp</span><span class="p">,</span> <span class="n">rk</span><span class="p">,</span> <span class="n">rkx</span><span class="p">,</span> <span class="n">f</span> <span class="o">=</span> <span class="n">fnm</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span>
|
||||
<span class="n">rm</span><span class="p">,</span> <span class="n">rmx</span><span class="p">,</span> <span class="n">rmxpp</span><span class="p">,</span> <span class="n">rd</span><span class="p">,</span> <span class="n">rdx</span><span class="p">,</span> <span class="n">rdxp</span><span class="p">,</span> <span class="n">rk</span><span class="p">,</span> <span class="n">rkx</span><span class="p">,</span> <span class="n">f</span> <span class="o">=</span> <span class="n">fmdk</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span>
|
||||
<span class="n">xp</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span> <span class="n">xpp</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="n">xi</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">.</span><span class="n">reshape</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="n">xpi</span> <span class="o">=</span> <span class="n">xp</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">.</span><span class="n">reshape</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="n">xppi</span> <span class="o">=</span> <span class="n">xpp</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||
@@ -450,7 +494,7 @@
|
||||
<span class="c1"># Approximate solution at next value of x</span>
|
||||
<span class="c1">#x11 = x[i,:] + dxdt*Dt</span>
|
||||
|
||||
<span class="n">r</span> <span class="o">=</span> <span class="p">(</span><span class="n">rmx</span><span class="o">+</span><span class="n">rdx</span><span class="o">+</span><span class="n">rkx</span><span class="p">)</span><span class="o">*</span><span class="n">Dt</span><span class="o">**</span><span class="mf">2.</span><span class="o">/</span><span class="mi">4</span> <span class="o">+</span> <span class="n">rdxp</span><span class="o">*</span><span class="n">Dt</span><span class="o">/</span><span class="mi">2</span> <span class="o">+</span> <span class="n">rmxpp</span>
|
||||
<span class="n">r</span> <span class="o">=</span> <span class="p">(</span><span class="n">rmx</span><span class="o">+</span><span class="n">rdx</span><span class="o">+</span><span class="n">rkx</span><span class="p">)</span><span class="o">*</span><span class="n">Dt</span><span class="o">**</span><span class="mf">2.</span><span class="o">/</span><span class="mi">4</span> <span class="o">+</span> <span class="n">rdxp</span><span class="o">*</span><span class="n">Dt</span><span class="o">/</span><span class="mi">2</span> <span class="o">+</span> <span class="n">rmxpp</span>
|
||||
<span class="n">rp</span> <span class="o">=</span> <span class="n">f</span> <span class="o">-</span> <span class="p">(</span><span class="n">rm</span> <span class="o">+</span> <span class="n">dot</span><span class="p">(</span><span class="n">rmx</span><span class="p">,</span> <span class="p">(</span><span class="n">Dt</span><span class="o">*</span><span class="n">xpi</span><span class="o">+</span><span class="n">Dt</span><span class="o">**</span><span class="mf">2.</span><span class="o">/</span><span class="mi">4</span><span class="o">*</span><span class="n">xppi</span><span class="p">))</span> <span class="o">-</span> \
|
||||
<span class="n">dot</span><span class="p">(</span><span class="n">rmxpp</span><span class="p">,</span> <span class="n">xppi</span><span class="p">)</span> <span class="o">+</span> \
|
||||
<span class="n">rd</span> <span class="o">+</span> <span class="n">dot</span><span class="p">(</span><span class="n">rdx</span><span class="p">,</span> <span class="p">(</span><span class="n">Dt</span><span class="o">*</span><span class="n">xpi</span><span class="o">+</span><span class="n">Dt</span><span class="o">**</span><span class="mf">2.</span><span class="o">/</span><span class="mi">4</span><span class="o">*</span><span class="n">xppi</span><span class="p">))</span> <span class="o">+</span> \
|
||||
|
||||
@@ -37,10 +37,10 @@
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Mathmatical models governed by ordinary differential equations.</span>
|
||||
|
||||
<span class="sd">Describes initial value problems as systems of first order ordinary differential</span>
|
||||
<span class="sd">equations.</span>
|
||||
<span class="sd">Describes initial value problems as systems of first order ordinary</span>
|
||||
<span class="sd">differential equations.</span>
|
||||
|
||||
<span class="sd">:Date: 2019-05-25</span>
|
||||
<span class="sd">:Date: 2020-01-08</span>
|
||||
|
||||
<span class="sd">.. module:: ode_model</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
@@ -48,111 +48,172 @@
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</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="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="kn">import</span> <span class="n">inv</span>
|
||||
|
||||
<div class="viewcode-block" id="disk"><a class="viewcode-back" href="../../../pylib.numerical.ode_model.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>
|
||||
<div class="viewcode-block" id="disk"><a class="viewcode-back" href="../../../pylib.numerical.ode_model.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">d</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">T</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s1">''</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Rotation of an eccentric disk.</span>
|
||||
|
||||
<span class="sd"> :param x: values of the function</span>
|
||||
<span class="sd"> :type x: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function</span>
|
||||
<span class="sd"> :param d: diameter</span>
|
||||
<span class="sd"> :type d: float</span>
|
||||
<span class="sd"> :param e: eccentricity</span>
|
||||
<span class="sd"> :type e: float</span>
|
||||
<span class="sd"> :param T: torque</span>
|
||||
<span class="sd"> :type T: float</span>
|
||||
<span class="sd"> :param method: the method to use, default = ''.</span>
|
||||
<span class="sd"> :type method:</span>
|
||||
<span class="sd"> :returns: disk function. This function is independent of the time.</span>
|
||||
|
||||
<span class="sd"> * diameter</span>
|
||||
<span class="sd"> * eccentricity</span>
|
||||
<span class="sd"> * torque</span>
|
||||
<span class="sd"> * For method = '': f(x, t=0) -> (xp1, xp2, xp3, xp4, xp5, xp6).</span>
|
||||
<span class="sd"> x is (x, y, phi, x', y', phi') and the return values are (x',</span>
|
||||
<span class="sd"> y', phi', x'', y'', phi'')</span>
|
||||
<span class="sd"> * For method = 'nm': f(xn, xpn, xppn, t=0) -> (N, dN, dNp, dNpp).</span>
|
||||
<span class="sd"> xn are the values of the function (x, y, phi), xpn are first</span>
|
||||
<span class="sd"> derivative values of the function (x', y', phi') and xppn are</span>
|
||||
<span class="sd"> the second derivative values of the function (x'', y'', phi'').</span>
|
||||
<span class="sd"> The return values are (N, dN, dNp, dNpp)</span>
|
||||
<span class="sd"> * For method = 'nmmdk': f(xn, xpn, xppn, t=0) -></span>
|
||||
<span class="sd"> (rm, rmx, rmxpp, rd, rdx, rdxp, rk, rkx, f).</span>
|
||||
<span class="sd"> xn are the values of the function (x, y, phi), xpn are first</span>
|
||||
<span class="sd"> derivative values of the function (x', y', phi') and xppn are</span>
|
||||
<span class="sd"> the second derivative values of the function (x'', y'', phi'').</span>
|
||||
<span class="sd"> The return values are (rm, rmx, rmxpp, rd, rdx, rdxp, rk, rkx,</span>
|
||||
<span class="sd"> f)</span>
|
||||
|
||||
<span class="sd"> :rtype: function</span>
|
||||
|
||||
<span class="sd"> Model</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \begin{vmatrix}</span>
|
||||
<span class="sd"> \ddot{x} + \cos(\varphi)\ddot{\varphi} + 2d \,\dot{x} - \sin(\varphi) \,\dot{\varphi}^2 + 2d\cos(\varphi)\, \dot{\varphi} + x &=&</span>
|
||||
<span class="sd"> 0 \\</span>
|
||||
<span class="sd"> \ddot{y} - \sin(\varphi)\ddot{\varphi} + 2d \,\dot{y} - \cos(\varphi) \,\dot{\varphi}^2 + 2d\sin(\varphi)\, \dot{\varphi} + y &=&</span>
|
||||
<span class="sd"> 0 \\</span>
|
||||
<span class="sd"> \ddot{\varphi} + e\,y\sin(\varphi) - e\,x\cos(\varphi) &=& t</span>
|
||||
<span class="sd"> \end{vmatrix}</span>
|
||||
<span class="sd"> \\</span>
|
||||
<span class="sd"> \begin{vmatrix}</span>
|
||||
<span class="sd"> \ddot{x} + \cos(\varphi)\ddot{\varphi} &=&</span>
|
||||
<span class="sd"> -2d \,\dot{x} + \sin(\varphi) \,\dot{\varphi}^2 -2d\cos(\varphi)\, \dot{\varphi} - x \\</span>
|
||||
<span class="sd"> \ddot{y} - \sin(\varphi)\ddot{\varphi} &=&</span>
|
||||
<span class="sd"> -2d \,\dot{y} + \cos(\varphi) \,\dot{\varphi}^2 -2d\sin(\varphi)\, \dot{\varphi} - y \\</span>
|
||||
<span class="sd"> \ddot{\varphi} &=& t - e\,y\sin(\varphi) + e\,x\cos(\varphi)</span>
|
||||
<span class="sd"> \end{vmatrix}</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \mathbf{M}(\mathbf{x}) \cdot \mathbf{\ddot{x}} &=</span>
|
||||
<span class="sd"> \mathbf{f}(\mathbf{x}, \mathbf{\dot{x}})</span>
|
||||
<span class="sd"> \\</span>
|
||||
<span class="sd"> \begin{bmatrix}</span>
|
||||
<span class="sd"> 1 & 0 & \cos \varphi \\</span>
|
||||
<span class="sd"> 0 & 1 & -\sin \varphi \\</span>
|
||||
<span class="sd"> 0 & 0 & 1</span>
|
||||
<span class="sd"> \end{bmatrix} \cdot</span>
|
||||
<span class="sd"> \begin{bmatrix}</span>
|
||||
<span class="sd"> \ddot{x} \\ \ddot{y} \\ \ddot{\varphi}</span>
|
||||
<span class="sd"> \end{bmatrix} &= \begin{bmatrix}</span>
|
||||
<span class="sd"> -2d \,\dot{x} + \sin(\varphi) \,\dot{\varphi}^2 -2d\cos(\varphi)\, \dot{\varphi} - x \\</span>
|
||||
<span class="sd"> -2d \,\dot{y} + \cos(\varphi) \,\dot{\varphi}^2 -2d\sin(\varphi)\, \dot{\varphi} - y \\</span>
|
||||
<span class="sd"> t - e\,y\sin(\varphi) + e\,x\cos(\varphi)</span>
|
||||
<span class="sd"> \end{bmatrix}</span>
|
||||
|
||||
|
||||
<span class="sd"> returns</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> x_1 &= x &\quad x_4 &= \dot{x}_1 = \dot{x} &\quad \dot{x}_4 &= \ddot{x} \\</span>
|
||||
<span class="sd"> x_2 &= y &\quad x_5 &= \dot{x}_2 = \dot{y} &\quad \dot{x}_5 &= \ddot{y} \\</span>
|
||||
<span class="sd"> x_3 &= \varphi &\quad x_6 &= \dot{x}_3 = \dot{\varphi} &\quad \dot{x}_6 &= \ddot{\varphi} \\</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \dot{q} &= f(x) \\</span>
|
||||
<span class="sd"> \begin{bmatrix}</span>
|
||||
<span class="sd"> \dot{x}_1 \\</span>
|
||||
<span class="sd"> \dot{x}_2 \\</span>
|
||||
<span class="sd"> \dot{x}_3 \\</span>
|
||||
<span class="sd"> \dot{x}_4 \\</span>
|
||||
<span class="sd"> \dot{x}_5 \\</span>
|
||||
<span class="sd"> \dot{x}_6</span>
|
||||
<span class="sd"> \end{bmatrix} &= \begin{bmatrix}</span>
|
||||
<span class="sd"> x_4 \\</span>
|
||||
<span class="sd"> x_5 \\</span>
|
||||
<span class="sd"> x_6 \\</span>
|
||||
<span class="sd"> \begin{bmatrix}</span>
|
||||
<span class="sd"> 1 & 0 & \cos x_3 \\</span>
|
||||
<span class="sd"> 0 & 1 & -\sin x_3 \\</span>
|
||||
<span class="sd"> 0 & 0 & 1</span>
|
||||
<span class="sd"> \end{bmatrix}^{-1} \cdot \begin{bmatrix}</span>
|
||||
<span class="sd"> -2d \,x_4 + \sin(x_3) \,x_6^2 -2d\cos(x_3)\, x_6 - x_1 \\</span>
|
||||
<span class="sd"> -2d \,x_5 + \cos(x_3) \,x_6^2 -2d\sin(x_3)\, x_6 - x_2 \\</span>
|
||||
<span class="sd"> t - e\,x_2\sin(x_3) + e\,x_1\cos(x_3)</span>
|
||||
<span class="sd"> \end{bmatrix}</span>
|
||||
<span class="sd"> \end{bmatrix}</span>
|
||||
|
||||
<span class="sd"> Three explicit differential equations of order 2 reducted to a</span>
|
||||
<span class="sd"> system of 3x2 first-order differential equations.</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`pylib.numerical.ode.newmark_newtonraphson` and</span>
|
||||
<span class="sd"> :meth:`pylib.numerical.ode.newmark_newtonraphson_mdk`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">qp1</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
|
||||
<span class="n">qp2</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
|
||||
<span class="n">qp3</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span>
|
||||
<span class="n">M</span> <span class="o">=</span> <span class="n">array</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">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</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">y</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">-</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> \
|
||||
<span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">-</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> \
|
||||
<span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">+</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])]])</span>
|
||||
<span class="n">qp46</span> <span class="o">=</span> <span class="n">dot</span><span class="p">(</span><span class="n">inv</span><span class="p">(</span><span class="n">M</span><span class="p">),</span> <span class="n">y</span><span class="p">)</span>
|
||||
<span class="n">qp4</span><span class="p">,</span> <span class="n">qp5</span><span class="p">,</span> <span class="n">qp6</span> <span class="o">=</span> <span class="n">qp46</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span> <span class="c1"># 2d array to 1d array to list</span>
|
||||
<span class="k">return</span> <span class="n">qp1</span><span class="p">,</span> <span class="n">qp2</span><span class="p">,</span> <span class="n">qp3</span><span class="p">,</span> <span class="n">qp4</span><span class="p">,</span> <span class="n">qp5</span><span class="p">,</span> <span class="n">qp6</span></div>
|
||||
|
||||
<div class="viewcode-block" id="disk_nm"><a class="viewcode-back" href="../../../pylib.numerical.ode_model.html#pylib.numerical.ode_model.disk_nm">[docs]</a><span class="k">def</span> <span class="nf">disk_nm</span><span class="p">(</span><span class="n">xn</span><span class="p">,</span> <span class="n">xpn</span><span class="p">,</span> <span class="n">xppn</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"> :param xn: values of the function</span>
|
||||
<span class="sd"> :type xn: list</span>
|
||||
<span class="sd"> :param xpn: first derivative values of the function</span>
|
||||
<span class="sd"> :type xpn: list</span>
|
||||
<span class="sd"> :param xppn: second derivative values of the function</span>
|
||||
<span class="sd"> :type xppn: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function</span>
|
||||
|
||||
<span class="sd"> * diameter</span>
|
||||
<span class="sd"> * eccentricity</span>
|
||||
<span class="sd"> * torque</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">N</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">+</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">+</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]]])</span>
|
||||
<span class="n">dN</span> <span class="o">=</span> <span class="n">array</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="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])]])</span>
|
||||
<span class="n">dNp</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">2</span><span class="o">*</span><span class="n">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">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</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="n">dNpp</span> <span class="o">=</span> <span class="n">array</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">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</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="k">return</span> <span class="n">N</span><span class="p">,</span> <span class="n">dN</span><span class="p">,</span> <span class="n">dNp</span><span class="p">,</span> <span class="n">dNpp</span></div>
|
||||
|
||||
<div class="viewcode-block" id="disk_nmmdk"><a class="viewcode-back" href="../../../pylib.numerical.ode_model.html#pylib.numerical.ode_model.disk_nmmdk">[docs]</a><span class="k">def</span> <span class="nf">disk_nmmdk</span><span class="p">(</span><span class="n">xn</span><span class="p">,</span> <span class="n">xpn</span><span class="p">,</span> <span class="n">xppn</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"> :param xn: values of the function</span>
|
||||
<span class="sd"> :type xn: list</span>
|
||||
<span class="sd"> :param xpn: derivative values of the function</span>
|
||||
<span class="sd"> :type xpn: list</span>
|
||||
<span class="sd"> :param xppn: second derivative values of the function</span>
|
||||
<span class="sd"> :type xppn: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function</span>
|
||||
|
||||
<span class="sd"> * diameter</span>
|
||||
<span class="sd"> * eccentricity</span>
|
||||
<span class="sd"> * torque</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">rm</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]]])</span>
|
||||
<span class="n">rmx</span> <span class="o">=</span> <span class="n">array</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="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</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="n">rmxpp</span> <span class="o">=</span> <span class="n">array</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">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</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">rd</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">]])</span>
|
||||
<span class="n">rdx</span> <span class="o">=</span> <span class="n">array</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="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</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="n">rdxp</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">2</span><span class="o">*</span><span class="n">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">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</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="n">rk</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])]])</span>
|
||||
<span class="n">rkx</span> <span class="o">=</span> <span class="n">array</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="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="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])]])</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="n">array</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="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]]])</span>
|
||||
<span class="k">return</span> <span class="n">rm</span><span class="p">,</span> <span class="n">rmx</span><span class="p">,</span> <span class="n">rmxpp</span><span class="p">,</span> <span class="n">rd</span><span class="p">,</span> <span class="n">rdx</span><span class="p">,</span> <span class="n">rdxp</span><span class="p">,</span> <span class="n">rk</span><span class="p">,</span> <span class="n">rkx</span><span class="p">,</span> <span class="n">f</span></div>
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span>
|
||||
<span class="kc">True</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">T</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">method</span> <span class="o">==</span> <span class="s1">''</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">t</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="n">xp1</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
|
||||
<span class="n">xp2</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
|
||||
<span class="n">xp3</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span>
|
||||
<span class="n">M</span> <span class="o">=</span> <span class="n">array</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">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</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">y</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">-</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> \
|
||||
<span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">-</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> \
|
||||
<span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">+</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])]])</span>
|
||||
<span class="n">xp46</span> <span class="o">=</span> <span class="n">dot</span><span class="p">(</span><span class="n">inv</span><span class="p">(</span><span class="n">M</span><span class="p">),</span> <span class="n">y</span><span class="p">)</span>
|
||||
<span class="n">xp4</span><span class="p">,</span> <span class="n">xp5</span><span class="p">,</span> <span class="n">xp6</span> <span class="o">=</span> <span class="n">xp46</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span> <span class="c1"># 2d array to 1d array to list</span>
|
||||
<span class="k">return</span> <span class="n">xp1</span><span class="p">,</span> <span class="n">xp2</span><span class="p">,</span> <span class="n">xp3</span><span class="p">,</span> <span class="n">xp4</span><span class="p">,</span> <span class="n">xp5</span><span class="p">,</span> <span class="n">xp6</span>
|
||||
<span class="k">elif</span> <span class="n">method</span> <span class="o">==</span> <span class="s1">'nm'</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">xn</span><span class="p">,</span> <span class="n">xpn</span><span class="p">,</span> <span class="n">xppn</span><span class="p">,</span> <span class="n">t</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="n">N</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">+</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">+</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]]])</span>
|
||||
<span class="n">dN</span> <span class="o">=</span> <span class="n">array</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="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])]])</span>
|
||||
<span class="n">dNp</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">2</span><span class="o">*</span><span class="n">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">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</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="n">dNpp</span> <span class="o">=</span> <span class="n">array</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">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</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="k">return</span> <span class="n">N</span><span class="p">,</span> <span class="n">dN</span><span class="p">,</span> <span class="n">dNp</span><span class="p">,</span> <span class="n">dNpp</span>
|
||||
<span class="k">elif</span> <span class="n">method</span> <span class="o">==</span> <span class="s1">'nmmdk'</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">xn</span><span class="p">,</span> <span class="n">xpn</span><span class="p">,</span> <span class="n">xppn</span><span class="p">,</span> <span class="n">t</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="n">rm</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]]])</span>
|
||||
<span class="n">rmx</span> <span class="o">=</span> <span class="n">array</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="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</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="n">rmxpp</span> <span class="o">=</span> <span class="n">array</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">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</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">rd</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">]])</span>
|
||||
<span class="n">rdx</span> <span class="o">=</span> <span class="n">array</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="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</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="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</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="n">rdxp</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">2</span><span class="o">*</span><span class="n">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">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</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="n">rk</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])]])</span>
|
||||
<span class="n">rkx</span> <span class="o">=</span> <span class="n">array</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="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="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])]])</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="n">array</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="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]]])</span>
|
||||
<span class="k">return</span> <span class="n">rm</span><span class="p">,</span> <span class="n">rmx</span><span class="p">,</span> <span class="n">rmxpp</span><span class="p">,</span> <span class="n">rd</span><span class="p">,</span> <span class="n">rdx</span><span class="p">,</span> <span class="n">rdxp</span><span class="p">,</span> <span class="n">rk</span><span class="p">,</span> <span class="n">rkx</span><span class="p">,</span> <span class="n">f</span>
|
||||
<span class="k">return</span> <span class="n">f</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
7
docs/build/html/_sources/pylib.data_step.rst.txt
vendored
Normal file
7
docs/build/html/_sources/pylib.data_step.rst.txt
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
pylib.data\_step module
|
||||
=======================
|
||||
|
||||
.. automodule:: pylib.data_step
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
7
docs/build/html/_sources/pylib.data_step_std.rst.txt
vendored
Normal file
7
docs/build/html/_sources/pylib.data_step_std.rst.txt
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
pylib.data\_step\_std module
|
||||
============================
|
||||
|
||||
.. automodule:: pylib.data_step_std
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
7
docs/build/html/_sources/pylib.helper.rst.txt
vendored
Normal file
7
docs/build/html/_sources/pylib.helper.rst.txt
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
pylib.helper module
|
||||
===================
|
||||
|
||||
.. automodule:: pylib.helper
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
3
docs/build/html/_sources/pylib.rst.txt
vendored
3
docs/build/html/_sources/pylib.rst.txt
vendored
@@ -19,6 +19,8 @@ Submodules
|
||||
.. toctree::
|
||||
|
||||
pylib.data
|
||||
pylib.data_step
|
||||
pylib.data_step_std
|
||||
pylib.date
|
||||
pylib.drawblock
|
||||
pylib.function
|
||||
@@ -27,5 +29,6 @@ Submodules
|
||||
pylib.geometry2d_plot
|
||||
pylib.geometry_plot
|
||||
pylib.geometry_plot_pylab
|
||||
pylib.helper
|
||||
pylib.mathematics
|
||||
pylib.time_of_day
|
||||
|
||||
6
docs/build/html/_static/alabaster.css
vendored
6
docs/build/html/_static/alabaster.css
vendored
@@ -259,8 +259,8 @@ dt:target, .highlight {
|
||||
}
|
||||
|
||||
div.warning {
|
||||
background-color: #FCC;
|
||||
border: 1px solid #FAA;
|
||||
background-color: rgb(82, 0, 0);
|
||||
border: 1px solid rgb(170, 0, 0);
|
||||
}
|
||||
|
||||
div.danger {
|
||||
@@ -455,7 +455,7 @@ dl pre, blockquote pre, li pre {
|
||||
}
|
||||
|
||||
tt, code {
|
||||
background-color: #ecf0f3;
|
||||
background-color: #25272c;
|
||||
color: #b2b2b2;
|
||||
/* padding: 1px 2px; */
|
||||
}
|
||||
|
||||
7
docs/build/html/_static/custom.css
vendored
7
docs/build/html/_static/custom.css
vendored
@@ -11,3 +11,10 @@ table.indextable tr.cap {
|
||||
position: relative;
|
||||
top: -1.5em;
|
||||
}
|
||||
/* sidebar_header is only set for normal screen size */
|
||||
@media screen and (max-width: 875px) {
|
||||
div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
|
||||
div.sphinxsidebar h3 a {
|
||||
color: #b2b2b2;
|
||||
}
|
||||
}
|
||||
|
||||
280
docs/build/html/genindex.html
vendored
280
docs/build/html/genindex.html
vendored
@@ -82,7 +82,7 @@
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.__iadd__">__iadd__() (vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.__iter__">__iter__() (Wireframe method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.__iter__">__iter__() (Polyline method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.__iter__">(World method)</a>
|
||||
@@ -94,14 +94,14 @@
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.__matmul__">__matmul__() (vector method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.__mul__">__mul__() (matrix method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.__mul__">(vector method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.__neg__">__neg__() (vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.__pos__">__pos__() (vector method)</a>
|
||||
@@ -109,6 +109,8 @@
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.__repr__">__repr__() (matrix method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.__repr__">(Polyline method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.__repr__">(vector method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
@@ -118,12 +120,20 @@
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.__rmul__">(vector method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.__str__">__str__() (matrix method)</a>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.__setitem__">__setitem__() (matrix method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.CARTESIAN_POINT.__str__">__str__() (CARTESIAN_POINT method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.__str__">(matrix method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.__str__">(Polyline method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.__str__">(vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.__str__">(Wireframe method)</a>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.VERTEX_POINT.__str__">(VERTEX_POINT method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.__str__">(World method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.__sub__">__sub__() (vector method)</a>
|
||||
@@ -139,14 +149,26 @@
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.add">add() (World method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.ang">ang() (vector static method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.angle">angle() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.arc_circle_geometry">arc_circle_geometry() (in module pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.ArcBSplineCurveWithKnots">ArcBSplineCurveWithKnots (class in pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.angle">angle() (in module pylib.geometry2d)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.ArcCircle">ArcCircle (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.ArcEllipse">ArcEllipse (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.arg">arg() (vector static method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.date.html#pylib.date.ascension_of_jesus">ascension_of_jesus() (in module pylib.date)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.AXIS2_PLACEMENT_2D">AXIS2_PLACEMENT_2D (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.AXIS2_PLACEMENT_3D">AXIS2_PLACEMENT_3D (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -154,6 +176,28 @@
|
||||
<h2 id="B">B</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.function.html#pylib.function.b_spline_basis">b_spline_basis() (in module pylib.function)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.B_SPLINE_CURVE">B_SPLINE_CURVE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.B_SPLINE_CURVE_WITH_KNOTS">B_SPLINE_CURVE_WITH_KNOTS (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.B_spline_curve_with_knots">B_spline_curve_with_knots (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.function.html#pylib.function.b_spline_curve_with_knots">b_spline_curve_with_knots() (in module pylib.function)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.b_spline_curve_with_knots_geometry">b_spline_curve_with_knots_geometry() (in module pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.function.html#pylib.function.b_spline_knots">b_spline_knots() (in module pylib.function)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.boolean_choose">boolean_choose() (in module pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.BOOLEAN_to_bool">BOOLEAN_to_bool() (in module pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.BOUNDED_CURVE">BOUNDED_CURVE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.bounding_box">bounding_box() (World method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
@@ -163,29 +207,43 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry_plot_pylab.html#pylib.geometry_plot_pylab.cad_wireframe">cad_wireframe() (in module pylib.geometry_plot_pylab)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.CARTESIAN_POINT">CARTESIAN_POINT (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.center">center() (World method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Solid.ch_cs">ch_cs() (Solid method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.ch_cs">ch_cs() (Polyline method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.ch_cs">(vector method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Solid.ch_cs">(Solid method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.ch_cs">(Wireframe method)</a>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.ch_cs">(vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.ch_cs">(World method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.CIRCLE">CIRCLE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Circle">Circle (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.function.html#pylib.function.circle">circle() (in module pylib.function)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Properties.circle_sectors">circle_sectors (Properties attribute)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.CONIC">CONIC (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.conjugate">conjugate() (vector static method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.function.html#pylib.function.cosine_wave">cosine_wave() (in module pylib.function)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.cross">cross() (vector static method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Direction.cross">cross() (Direction class method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.cross">(vector static method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.CS">CS (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.cs">cs() (World method)</a>
|
||||
@@ -195,6 +253,8 @@
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.cubic_deg">cubic_deg() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.cubics">cubics() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.CURVE">CURVE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -204,21 +264,35 @@
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data.html#module-data">data (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.data_cmds_to_data_dict">data_cmds_to_data_dict() (in module pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.data_dict_edge_curve_to_geometry">data_dict_edge_curve_to_geometry() (in module pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.data_dict_to_geometry_world">data_dict_to_geometry_world() (in module pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.data_dict_to_geometry_world_edge_curve">data_dict_to_geometry_world_edge_curve() (in module pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.data_section_dict">data_section_dict() (in module pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step.html#module-data_step">data_step (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#module-data_step_std">data_step_std (module)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.date.html#module-date">date (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.time_of_day.html#pylib.time_of_day.days">days() (in module pylib.time_of_day)</a>
|
||||
</li>
|
||||
<li><a href="pylib.time_of_day.html#pylib.time_of_day.days_norm">days_norm() (in module pylib.time_of_day)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.dimension_of">dimension_of() (in module pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.DIRECTION">DIRECTION (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Direction">Direction (class in pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.numerical.ode_model.html#pylib.numerical.ode_model.disk">disk() (in module pylib.numerical.ode_model)</a>
|
||||
</li>
|
||||
<li><a href="pylib.numerical.ode_model.html#pylib.numerical.ode_model.disk_nm">disk_nm() (in module pylib.numerical.ode_model)</a>
|
||||
</li>
|
||||
<li><a href="pylib.numerical.ode_model.html#pylib.numerical.ode_model.disk_nmmdk">disk_nmmdk() (in module pylib.numerical.ode_model)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.distance">distance() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
@@ -236,13 +310,25 @@
|
||||
</li>
|
||||
<li><a href="pylib.numerical.ode.html#pylib.numerical.ode.e4">e4() (in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.date.html#pylib.date.easter_friday">easter_friday() (in module pylib.date)</a>
|
||||
</li>
|
||||
<li><a href="pylib.date.html#pylib.date.easter_monday">easter_monday() (in module pylib.date)</a>
|
||||
</li>
|
||||
<li><a href="pylib.date.html#pylib.date.easter_sunday">easter_sunday() (in module pylib.date)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.EDGE">EDGE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.EDGE_CURVE">EDGE_CURVE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.EDGE_LOOP">EDGE_LOOP (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.ELLIPSE">ELLIPSE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Ellipse">Ellipse (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.function.html#pylib.function.ellipse">ellipse() (in module pylib.function)</a>
|
||||
</li>
|
||||
<li><a href="pylib.function.html#pylib.function.epitrochoid">epitrochoid() (in module pylib.function)</a>
|
||||
</li>
|
||||
@@ -252,6 +338,8 @@
|
||||
<h2 id="F">F</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data.html#pylib.data.find_last">find_last() (in module pylib.data)</a>
|
||||
</li>
|
||||
<li><a href="pylib.numerical.fit.html#module-fit">fit (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.fold_list">fold_list() (in module pylib.data)</a>
|
||||
@@ -276,12 +364,14 @@
|
||||
</li>
|
||||
<li><a href="pylib.date.html#pylib.date.gaußsche_osterformel">gaußsche_osterformel() (in module pylib.date)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#module-geometry">geometry (module)</a>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.GEOMETRIC_REPRESENTATION_ITEM">GEOMETRIC_REPRESENTATION_ITEM (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d.html#module-geometry2d">geometry2d (module)</a>
|
||||
<li><a href="pylib.geometry.html#module-geometry">geometry (module)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry2d.html#module-geometry2d">geometry2d (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d_plot.html#module-geometry2d_plot">geometry2d_plot (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry_plot.html#module-geometry_plot">geometry_plot (module)</a>
|
||||
@@ -298,6 +388,8 @@
|
||||
<h2 id="H">H</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.helper.html#module-helper">helper (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Hexahedron">Hexahedron (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.drawblock.html#pylib.drawblock.histogram">histogram() (in module pylib.drawblock)</a>
|
||||
@@ -317,16 +409,24 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.numerical.ode.html#pylib.numerical.ode.i1">i1() (in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.REPRESENTATION_ITEM.idn">idn (REPRESENTATION_ITEM attribute)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.im">im() (vector static method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.time_of_day.html#pylib.time_of_day.in_seconds">in_seconds() (in module pylib.time_of_day)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.CS.init_xyz">init_xyz() (CS class method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.numerical.integration.html#module-integration">integration (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.interpolate_hermite">interpolate_hermite() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.isclose">isclose() (vector static method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.iscloseto">iscloseto() (vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.issequence">issequence() (in module pylib.data)</a>
|
||||
</li>
|
||||
@@ -337,16 +437,24 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.lcm">lcm() (in module pylib.mathematics)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.LINE">LINE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Line">Line (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.line">line() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.line">line() (in module pylib.geometry2d)</a>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.line_geometry">line_geometry() (in module pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.lines">lines() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.list_to_array">list_to_array() (in module pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.load">load() (in module pylib.data)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.LOOP">LOOP (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -371,12 +479,14 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.numerical.ode.html#pylib.numerical.ode.newmark_newtonraphson">newmark_newtonraphson() (in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
<li><a href="pylib.numerical.ode.html#pylib.numerical.ode.newmark_newtonraphson_mdk">newmark_newtonraphson_mdk() (in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.numerical.ode.html#pylib.numerical.ode.newmark_newtonraphson_rdk">newmark_newtonraphson_rdk() (in module pylib.numerical.ode)</a>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.normalize">normalize() (vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.normalize">normalize() (vector static method)</a>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.normalized">normalized() (vector static method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -393,6 +503,8 @@
|
||||
<li><a href="pylib.numerical.ode_model.html#module-ode_model">ode_model (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.ones">ones() (vector static method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.ORIENTED_EDGE">ORIENTED_EDGE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -400,32 +512,52 @@
|
||||
<h2 id="P">P</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.PATH">PATH (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.path_head_to_tail">path_head_to_tail() (in module pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.date.html#pylib.date.pentecost">pentecost() (in module pylib.date)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.PLACEMENT">PLACEMENT (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d_plot.html#pylib.geometry2d_plot.plot_cubic_lines">plot_cubic_lines() (in module pylib.geometry2d_plot)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d_plot.html#pylib.geometry2d_plot.plot_lines">plot_lines() (in module pylib.geometry2d_plot)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry_plot_pylab.html#pylib.geometry_plot_pylab.plot_post">plot_post() (in module pylib.geometry_plot_pylab)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.POINT">POINT (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Point">Point (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.points">points() (Wireframe method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.points">points() (Polyline method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polygon">Polygon (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline">Polyline (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.print_edge_loop">print_edge_loop() (in module pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.print_list">print_list() (in module pylib.data)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Point.projection">projection() (Point method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Properties">Properties (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.html#module-pylib">pylib (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#module-pylib.data">pylib.data (module)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data_step.html#module-pylib.data_step">pylib.data_step (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#module-pylib.data_step_std">pylib.data_step_std (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.date.html#module-pylib.date">pylib.date (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.drawblock.html#module-pylib.drawblock">pylib.drawblock (module)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.function.html#module-pylib.function">pylib.function (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#module-pylib.geometry">pylib.geometry (module)</a>
|
||||
@@ -437,6 +569,8 @@
|
||||
<li><a href="pylib.geometry_plot.html#module-pylib.geometry_plot">pylib.geometry_plot (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry_plot_pylab.html#module-pylib.geometry_plot_pylab">pylib.geometry_plot_pylab (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.helper.html#module-pylib.helper">pylib.helper (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#module-pylib.mathematics">pylib.mathematics (module)</a>
|
||||
</li>
|
||||
@@ -463,8 +597,12 @@
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.re">re() (vector static method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.read">read() (in module pylib.data)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.read_columns">read_columns() (in module pylib.data)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.rectangle">rectangle() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.REPRESENTATION_ITEM">REPRESENTATION_ITEM (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.rotate">rotate() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
@@ -473,23 +611,23 @@
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.rotate_x">rotate_x() (matrix method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.rotate_x">(vector method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.rotate_x">(Polyline method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.rotate_x">(Wireframe method)</a>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.rotate_x">(vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.rotate_x">(World method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.rotate_xy">rotate_xy() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.rotate_xy">rotate_xy() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.rotate_y">rotate_y() (matrix method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.rotate_y">(vector method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.rotate_y">(Polyline method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.rotate_y">(Wireframe method)</a>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.rotate_y">(vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.rotate_y">(World method)</a>
|
||||
</li>
|
||||
@@ -497,9 +635,9 @@
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.rotate_z">rotate_z() (matrix method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.rotate_z">(vector method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.rotate_z">(Polyline method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.rotate_z">(Wireframe method)</a>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.rotate_z">(vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.rotate_z">(World method)</a>
|
||||
</li>
|
||||
@@ -517,25 +655,35 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.s">s() (matrix static method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.function.html#pylib.function.sample_half_open">sample_half_open() (in module pylib.function)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.sample_half_open">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pylib.function.html#pylib.function.sample_half_open_seq">sample_half_open_seq() (in module pylib.function)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.scale">scale() (matrix method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.scale">(Polyline method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Solid.scale">(Solid method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.scale">(vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.scale">(Wireframe method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.scale">(World method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.SEAM_CURVE">SEAM_CURVE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.time_of_day.html#pylib.time_of_day.seconds">seconds() (in module pylib.time_of_day)</a>
|
||||
</li>
|
||||
<li><a href="pylib.time_of_day.html#pylib.time_of_day.seconds_norm">seconds_norm() (in module pylib.time_of_day)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.time_of_day.html#pylib.time_of_day.seconds_norm">seconds_norm() (in module pylib.time_of_day)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.seq">seq() (in module pylib.data)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry_plot_pylab.html#pylib.geometry_plot_pylab.set_aspect_equal">set_aspect_equal() (in module pylib.geometry_plot_pylab)</a>
|
||||
@@ -547,8 +695,18 @@
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.space_diagonal">space_diagonal() (World method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.square">square() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.step">step (class in pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.store">store() (in module pylib.data)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.str_between">str_between() (in module pylib.data)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step.html#pylib.data_step.str_to_cmd_args">str_to_cmd_args() (in module pylib.data_step)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.str_to_list">str_to_list() (in module pylib.data)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.SURFACE_CURVE">SURFACE_CURVE (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -559,8 +717,12 @@
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.t">t() (matrix static method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.time_of_day.html#module-time_of_day">time_of_day (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.helper.html#pylib.helper.timeit">timeit (class in pylib.helper)</a>
|
||||
</li>
|
||||
<li><a href="pylib.function.html#pylib.function.to_str">to_str() (in module pylib.function)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.TOPOLOGICAL_REPRESENTATION_ITEM">TOPOLOGICAL_REPRESENTATION_ITEM (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.time_of_day.html#pylib.time_of_day.transform">transform() (in module pylib.time_of_day)</a>
|
||||
</li>
|
||||
@@ -570,12 +732,12 @@
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.translate">(matrix method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.translate">(Polyline method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Solid.translate">(Solid method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.translate">(vector method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.translate">(Wireframe method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.World.translate">(World method)</a>
|
||||
</li>
|
||||
@@ -583,6 +745,10 @@
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry2d.html#pylib.geometry2d.translate_xy">translate_xy() (in module pylib.geometry2d)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.transpose">transpose() (matrix method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.transposed">transposed() (matrix static method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.numerical.integration.html#pylib.numerical.integration.trapez">trapez() (in module pylib.numerical.integration)</a>
|
||||
</li>
|
||||
@@ -593,6 +759,12 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data.html#pylib.data.unique_ending">unique_ending() (in module pylib.data)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data.html#pylib.data.unique_list">unique_list() (in module pylib.data)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data.html#pylib.data.unique_list_hashable">unique_list_hashable() (in module pylib.data)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -600,7 +772,15 @@
|
||||
<h2 id="V">V</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.VECTOR">VECTOR (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector">vector (class in pylib.mathematics)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.VERTEX">VERTEX (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
<li><a href="pylib.data_step_std.html#pylib.data_step_std.VERTEX_POINT">VERTEX_POINT (class in pylib.data_step_std)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -608,8 +788,6 @@
|
||||
<h2 id="W">W</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe">Wireframe (class in pylib.geometry)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry_plot_pylab.html#pylib.geometry_plot_pylab.wireframe3d">wireframe3d() (in module pylib.geometry_plot_pylab)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Solid.wireframes">wireframes() (Solid method)</a>
|
||||
@@ -634,15 +812,15 @@
|
||||
<h2 id="X">X</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.CS.x90">x90() (CS static method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.CS.x90">x90() (CS class method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.CS.xm90">xm90() (CS static method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.CS.xm90">xm90() (CS class method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.xy">xy() (Wireframe method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.xy">xy() (Polyline method)</a>
|
||||
</li>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.xyz">xyz() (Wireframe method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.Polyline.xyz">xyz() (Polyline method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -650,11 +828,11 @@
|
||||
<h2 id="Y">Y</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.CS.y90">y90() (CS static method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.CS.y90">y90() (CS class method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.CS.ym90">ym90() (CS static method)</a>
|
||||
<li><a href="pylib.geometry.html#pylib.geometry.CS.ym90">ym90() (CS class method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -662,8 +840,12 @@
|
||||
<h2 id="Z">Z</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.zeros">zeros() (vector static method)</a>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.zeros">zeros() (matrix static method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.zeros">(vector static method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
|
||||
8
docs/build/html/modules.html
vendored
8
docs/build/html/modules.html
vendored
@@ -48,17 +48,17 @@
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="pylib.html#submodules">Submodules</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.data.html">pylib.data module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.data_step.html">pylib.data_step module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.data_step_std.html">pylib.data_step_std module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.date.html">pylib.date module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.drawblock.html">pylib.drawblock module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.function.html">pylib.function module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.geometry.html">pylib.geometry module</a><ul>
|
||||
<li class="toctree-l4"><a class="reference internal" href="pylib.geometry.html#affine-transforms">Affine transforms</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.geometry.html">pylib.geometry module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.geometry2d.html">pylib.geometry2d module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.geometry2d_plot.html">pylib.geometry2d_plot module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.geometry_plot.html">pylib.geometry_plot module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.geometry_plot_pylab.html">pylib.geometry_plot_pylab module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.helper.html">pylib.helper module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.mathematics.html">pylib.mathematics module</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="pylib.time_of_day.html">pylib.time_of_day module</a></li>
|
||||
</ul>
|
||||
|
||||
BIN
docs/build/html/objects.inv
vendored
BIN
docs/build/html/objects.inv
vendored
Binary file not shown.
34
docs/build/html/py-modindex.html
vendored
34
docs/build/html/py-modindex.html
vendored
@@ -42,6 +42,7 @@
|
||||
<a href="#cap-d"><strong>d</strong></a> |
|
||||
<a href="#cap-f"><strong>f</strong></a> |
|
||||
<a href="#cap-g"><strong>g</strong></a> |
|
||||
<a href="#cap-h"><strong>h</strong></a> |
|
||||
<a href="#cap-i"><strong>i</strong></a> |
|
||||
<a href="#cap-m"><strong>m</strong></a> |
|
||||
<a href="#cap-o"><strong>o</strong></a> |
|
||||
@@ -58,6 +59,16 @@
|
||||
<td>
|
||||
<a href="pylib.data.html#module-data"><code class="xref">data</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Handle data files and structures.</em></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="pylib.data_step.html#module-data_step"><code class="xref">data_step</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>STEP reader.</em></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="pylib.data_step_std.html#module-data_step_std"><code class="xref">data_step_std</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>STEP Standard structure.</em></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
@@ -110,6 +121,14 @@
|
||||
<a href="pylib.geometry_plot_pylab.html#module-geometry_plot_pylab"><code class="xref">geometry_plot_pylab</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Geometry plotting (pylab).</em></td></tr>
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-h"><td></td><td>
|
||||
<strong>h</strong></td><td></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="pylib.helper.html#module-helper"><code class="xref">helper</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Helper objects.</em></td></tr>
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-i"><td></td><td>
|
||||
<strong>i</strong></td><td></td></tr>
|
||||
<tr>
|
||||
@@ -152,6 +171,16 @@
|
||||
<td>   
|
||||
<a href="pylib.data.html#module-pylib.data"><code class="xref">pylib.data</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.data_step.html#module-pylib.data_step"><code class="xref">pylib.data_step</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.data_step_std.html#module-pylib.data_step_std"><code class="xref">pylib.data_step_std</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
@@ -192,6 +221,11 @@
|
||||
<td>   
|
||||
<a href="pylib.geometry_plot_pylab.html#module-pylib.geometry_plot_pylab"><code class="xref">pylib.geometry_plot_pylab</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.helper.html#module-pylib.helper"><code class="xref">pylib.helper</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
|
||||
139
docs/build/html/pylib.data.html
vendored
139
docs/build/html/pylib.data.html
vendored
@@ -16,7 +16,7 @@
|
||||
<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="next" title="pylib.date module" href="pylib.date.html" />
|
||||
<link rel="next" title="pylib.data_step module" href="pylib.data_step.html" />
|
||||
<link rel="prev" title="pylib.numerical.ode_model module" href="pylib.numerical.ode_model.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
@@ -36,13 +36,34 @@
|
||||
|
||||
<div class="section" id="module-pylib.data">
|
||||
<span id="pylib-data-module"></span><h1>pylib.data module<a class="headerlink" href="#module-pylib.data" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Read and write data to or from file and manipulate data structures.</p>
|
||||
<p>Read and write data to or from file and manipulate data
|
||||
structures.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Date</dt>
|
||||
<dd class="field-odd"><p>2019-10-11</p>
|
||||
<dd class="field-odd"><p>2019-12-28</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-data"></span><dl class="function">
|
||||
<dt id="pylib.data.find_last">
|
||||
<code class="sig-name descname">find_last</code><span class="sig-paren">(</span><em class="sig-param">sequence</em>, <em class="sig-param">pattern</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#find_last"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.find_last" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Find last last occurance in sequence (text)</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>sequence</strong> (<em>str</em>) – text to search in</p></li>
|
||||
<li><p><strong>pattern</strong> (<em>str</em>) – search pattern</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>index (-1 if pattern not in sequence)</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>int</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data.fold_list">
|
||||
<code class="sig-name descname">fold_list</code><span class="sig-paren">(</span><em class="sig-param">lst</em>, <em class="sig-param">n</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#fold_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.fold_list" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Convert one-dimensional kx1 array (list) to two-dimensional mxn
|
||||
@@ -137,14 +158,42 @@ False for int, dict, set</p>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data.print_list">
|
||||
<code class="sig-name descname">print_list</code><span class="sig-paren">(</span><em class="sig-param">lst</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#print_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.print_list" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Print list, one list element per line.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><p><strong>lst</strong> (<em>list</em>) – list to print</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data.read">
|
||||
<code class="sig-name descname">read</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">x_column</em>, <em class="sig-param">y_column</em>, <em class="sig-param">default=None</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.read" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">read</code><span class="sig-paren">(</span><em class="sig-param">file_name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.read" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Read ascii data file.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><p><strong>filename</strong> (<em>str</em>) – file to read</p>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>file content</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>str</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data.read_columns">
|
||||
<code class="sig-name descname">read_columns</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">x_column</em>, <em class="sig-param">y_column</em>, <em class="sig-param">default=None</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#read_columns"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.read_columns" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Read ascii data file.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>filename</strong> (<em>str</em>) – file to read</p></li>
|
||||
<li><p><strong>file_name</strong> (<em>str</em>) – file to read</p></li>
|
||||
<li><p><strong>x_column</strong> (<em>int</em>) – column index for the x data (first column is 0)</p></li>
|
||||
<li><p><strong>y_column</strong> (<em>int</em>) – column index for the y data (first column is 0)</p></li>
|
||||
<li><p><strong>default</strong> (<em>object</em>) – return object if data loading fails</p></li>
|
||||
@@ -203,6 +252,72 @@ between consecutive terms).</p></li>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data.str_between">
|
||||
<code class="sig-name descname">str_between</code><span class="sig-paren">(</span><em class="sig-param">text</em>, <em class="sig-param">left</em>, <em class="sig-param">right</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#str_between"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.str_between" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get text between two pattern.</p>
|
||||
<p>Text can be multi-line.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>text</strong> (<em>str</em>) – text to search in</p></li>
|
||||
<li><p><strong>left</strong> (<em>str</em>) – left pattern</p></li>
|
||||
<li><p><strong>right</strong> (<em>str</em>) – right pattern</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>text between the left and right pattern</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>str</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data.str_to_list">
|
||||
<code class="sig-name descname">str_to_list</code><span class="sig-paren">(</span><em class="sig-param">string</em>, <em class="sig-param">delimiter=';\n'</em>, <em class="sig-param">newline_replacement=''</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#str_to_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.str_to_list" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Converts a string with block information into a list.</p>
|
||||
<p>This function un-wraps multi-line block information into one line.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>string</strong> (<em>str</em>) – string with block information</p></li>
|
||||
<li><p><strong>delimiter</strong> (<em>str</em>) – block delimiter (default = ‘;n’). This will be
|
||||
removed from the resulting list.</p></li>
|
||||
<li><p><strong>newline_replacement</strong> (<em>str</em>) – block lines replacement (default = ‘’)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>list of block information</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>list</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Every line is left striped. Empty line are ignored.</p>
|
||||
</div>
|
||||
<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="n">before</span> <span class="p">(</span><span class="n">string</span><span class="p">):</span>
|
||||
<span class="n">FILE_DESCRIPTION</span><span class="p">((</span><span class="s1">'Open CASCADE Model'</span><span class="p">),</span><span class="s1">'2;1'</span><span class="p">);</span>
|
||||
<span class="n">FILE_NAME</span><span class="p">(</span><span class="s1">'Open CASCADE Shape Model'</span><span class="p">,</span><span class="s1">'2019-10-14T14:32:20'</span><span class="p">,(</span><span class="s1">'Author'</span><span class="p">),(</span>
|
||||
<span class="s1">'Open CASCADE'</span><span class="p">),</span><span class="s1">'Open CASCADE STEP processor 7.1'</span><span class="p">,</span><span class="s1">'Open CASCADE 7.1'</span>
|
||||
<span class="p">,</span><span class="s1">'Unknown'</span><span class="p">);</span>
|
||||
<span class="n">FILE_SCHEMA</span><span class="p">((</span><span class="s1">'AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'</span><span class="p">));</span>
|
||||
|
||||
<span class="n">after</span> <span class="p">(</span><span class="nb">list</span> <span class="n">elements</span> <span class="n">one</span> <span class="n">per</span> <span class="n">line</span><span class="p">):</span>
|
||||
<span class="n">FILE_DESCRIPTION</span><span class="p">((</span><span class="s1">'Open CASCADE Model'</span><span class="p">),</span><span class="s1">'2;1'</span><span class="p">)</span>
|
||||
<span class="n">FILE_NAME</span><span class="p">(</span><span class="s1">'Open CASCADE Shape Model'</span><span class="p">,</span><span class="s1">'2019-10-14T14:32:20'</span><span class="p">,(</span><span class="s1">'Author'</span><span class="p">),(</span><span class="s1">'Open CASCADE'</span><span class="p">),</span><span class="s1">'Open CASCADE STEP processor 7.1'</span><span class="p">,</span><span class="s1">'Open CASCADE 7.1'</span><span class="p">,</span><span class="s1">'Unknown'</span><span class="p">)</span>
|
||||
<span class="n">FILE_SCHEMA</span><span class="p">((</span><span class="s1">'AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data.unique_ending">
|
||||
<code class="sig-name descname">unique_ending</code><span class="sig-paren">(</span><em class="sig-param">ids</em>, <em class="sig-param">n=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#unique_ending"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.unique_ending" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -223,6 +338,18 @@ between consecutive terms).</p></li>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data.unique_list">
|
||||
<code class="sig-name descname">unique_list</code><span class="sig-paren">(</span><em class="sig-param">sequence</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#unique_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.unique_list" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data.unique_list_hashable">
|
||||
<code class="sig-name descname">unique_list_hashable</code><span class="sig-paren">(</span><em class="sig-param">sequence</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#unique_list_hashable"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.unique_list_hashable" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>faster using set() but elements of the sequence must be hashable.
|
||||
unhashable types: ‘list’</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data.write">
|
||||
<code class="sig-name descname">write</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.write" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -271,7 +398,7 @@ between consecutive terms).</p></li>
|
||||
<li><a href="modules.html">pylib</a><ul>
|
||||
<li><a href="pylib.html">pylib package</a><ul>
|
||||
<li>Previous: <a href="pylib.numerical.ode_model.html" title="previous chapter">pylib.numerical.ode_model module</a></li>
|
||||
<li>Next: <a href="pylib.date.html" title="next chapter">pylib.date module</a></li>
|
||||
<li>Next: <a href="pylib.data_step.html" title="next chapter">pylib.data_step module</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
|
||||
246
docs/build/html/pylib.data_step.html
vendored
Normal file
246
docs/build/html/pylib.data_step.html
vendored
Normal file
@@ -0,0 +1,246 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.data_step module — pylib 2019.12.21 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="next" title="pylib.data_step_std module" href="pylib.data_step_std.html" />
|
||||
<link rel="prev" title="pylib.data module" href="pylib.data.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">
|
||||
|
||||
<div class="section" id="module-pylib.data_step">
|
||||
<span id="pylib-data-step-module"></span><h1>pylib.data_step module<a class="headerlink" href="#module-pylib.data_step" title="Permalink to this headline">¶</a></h1>
|
||||
<p>STEP reader.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Date</dt>
|
||||
<dd class="field-odd"><p>2020-01-03</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-data_step"></span><dl class="function">
|
||||
<dt id="pylib.data_step.arc_circle_geometry">
|
||||
<code class="sig-name descname">arc_circle_geometry</code><span class="sig-paren">(</span><em class="sig-param">conic</em>, <em class="sig-param">p1</em>, <em class="sig-param">p2</em>, <em class="sig-param">ellipse=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#arc_circle_geometry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.arc_circle_geometry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data_step.b_spline_curve_with_knots_geometry">
|
||||
<code class="sig-name descname">b_spline_curve_with_knots_geometry</code><span class="sig-paren">(</span><em class="sig-param">b_spline</em>, <em class="sig-param">p1</em>, <em class="sig-param">p2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#b_spline_curve_with_knots_geometry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.b_spline_curve_with_knots_geometry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Currently only clamped b_spline curves and assumed, i. e. closed
|
||||
= False.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data_step.data_cmds_to_data_dict">
|
||||
<code class="sig-name descname">data_cmds_to_data_dict</code><span class="sig-paren">(</span><em class="sig-param">data_cmds</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#data_cmds_to_data_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.data_cmds_to_data_dict" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Create dict with step objects</p>
|
||||
<p>1st it creats keys equal to the number id string and values with
|
||||
the command string.</p>
|
||||
<p>2nd it creats keys for different step object types to dict all
|
||||
commands as new created objects of that type.</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="n">from</span><span class="p">:</span>
|
||||
<span class="p">[</span><span class="s2">"#12 = CARTESIAN_POINT('',(0.E+000,0.E+000,0.E+000))"</span><span class="p">,</span>
|
||||
<span class="s2">"#22 = VERTEX_POINT('',#23)"</span><span class="p">]</span>
|
||||
<span class="n">to</span><span class="p">:</span>
|
||||
<span class="p">{</span><span class="s1">'#12'</span><span class="p">:</span> <span class="s1">'CARTESIAN_POINT('',(0.E+000,0.E+000,0.E+000))'</span><span class="p">,</span>
|
||||
<span class="s1">'#22'</span><span class="p">:</span> <span class="s1">'VERTEX_POINT('',#23)'</span><span class="p">}</span>
|
||||
|
||||
<span class="n">additional</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s1">'cartesian_points'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'#12'</span><span class="p">:</span> <span class="n">pointer_to_new_created_point_object</span><span class="p">,</span>
|
||||
<span class="o">...</span>
|
||||
<span class="p">},</span>
|
||||
<span class="s1">'vertex_points'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'#22'</span><span class="p">:</span> <span class="n">pointer_to_new_created_vertex_object</span><span class="p">,</span>
|
||||
<span class="o">...</span>
|
||||
<span class="p">},</span>
|
||||
<span class="o">...</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data_step.data_dict_edge_curve_to_geometry">
|
||||
<code class="sig-name descname">data_dict_edge_curve_to_geometry</code><span class="sig-paren">(</span><em class="sig-param">data_dict</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#data_dict_edge_curve_to_geometry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.data_dict_edge_curve_to_geometry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data_step.data_dict_to_geometry_world">
|
||||
<code class="sig-name descname">data_dict_to_geometry_world</code><span class="sig-paren">(</span><em class="sig-param">data_dict</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#data_dict_to_geometry_world"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.data_dict_to_geometry_world" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data_step.data_dict_to_geometry_world_edge_curve">
|
||||
<code class="sig-name descname">data_dict_to_geometry_world_edge_curve</code><span class="sig-paren">(</span><em class="sig-param">data_dict</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#data_dict_to_geometry_world_edge_curve"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.data_dict_to_geometry_world_edge_curve" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data_step.data_section_dict">
|
||||
<code class="sig-name descname">data_section_dict</code><span class="sig-paren">(</span><em class="sig-param">step</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#data_section_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.data_section_dict" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data_step.line_geometry">
|
||||
<code class="sig-name descname">line_geometry</code><span class="sig-paren">(</span><em class="sig-param">p1</em>, <em class="sig-param">p2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#line_geometry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.line_geometry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data_step.print_edge_loop">
|
||||
<code class="sig-name descname">print_edge_loop</code><span class="sig-paren">(</span><em class="sig-param">data_dict</em>, <em class="sig-param">instance_name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#print_edge_loop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.print_edge_loop" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.data_step.step">
|
||||
<em class="property">class </em><code class="sig-name descname">step</code><span class="sig-paren">(</span><em class="sig-param">file_name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#step"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.step" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
|
||||
<p>STEP reader class.</p>
|
||||
<p>1st read a STEP file.
|
||||
2nd convert header and data section string to list of commands.</p>
|
||||
<p>The STEP file string can have commands distributed over several
|
||||
lines, the commands are seperated by <code class="docutils literal notranslate"><span class="pre">;\n</span></code>. This class un-wraps
|
||||
each command into one line (remove <code class="docutils literal notranslate"><span class="pre">\n</span></code>) and removes empty lines.</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="n">header</span> <span class="n">part</span> <span class="n">of</span> <span class="n">a</span> <span class="n">step</span> <span class="n">file</span> <span class="p">(</span><span class="n">between</span> <span class="n">HEADER</span><span class="p">;</span> <span class="ow">and</span> <span class="n">ENDSEC</span><span class="p">;):</span>
|
||||
<span class="n">FILE_DESCRIPTION</span><span class="p">((</span><span class="s1">'Open CASCADE Model'</span><span class="p">),</span><span class="s1">'2;1'</span><span class="p">);</span>
|
||||
<span class="n">FILE_NAME</span><span class="p">(</span><span class="s1">'Open CASCADE Shape Model'</span><span class="p">,</span><span class="s1">'2019-10-14T14:32:20'</span><span class="p">,(</span><span class="s1">'Author'</span><span class="p">),(</span>
|
||||
<span class="s1">'Open CASCADE'</span><span class="p">),</span><span class="s1">'Open CASCADE STEP processor 7.1'</span><span class="p">,</span><span class="s1">'Open CASCADE 7.1'</span>
|
||||
<span class="p">,</span><span class="s1">'Unknown'</span><span class="p">);</span>
|
||||
<span class="n">FILE_SCHEMA</span><span class="p">((</span><span class="s1">'AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'</span><span class="p">));</span>
|
||||
|
||||
<span class="n">will</span> <span class="n">result</span> <span class="ow">in</span> <span class="p">(</span><span class="n">but</span> <span class="k">as</span> <span class="n">a</span> <span class="nb">list</span><span class="p">):</span>
|
||||
<span class="n">FILE_DESCRIPTION</span><span class="p">((</span><span class="s1">'Open CASCADE Model'</span><span class="p">),</span><span class="s1">'2;1'</span><span class="p">)</span>
|
||||
<span class="n">FILE_NAME</span><span class="p">(</span><span class="s1">'Open CASCADE Shape Model'</span><span class="p">,</span><span class="s1">'2019-10-14T14:32:20'</span><span class="p">,(</span><span class="s1">'Author'</span><span class="p">),(</span><span class="s1">'Open CASCADE'</span><span class="p">),</span><span class="s1">'Open CASCADE STEP processor 7.1'</span><span class="p">,</span><span class="s1">'Open CASCADE 7.1'</span><span class="p">,</span><span class="s1">'Unknown'</span><span class="p">)</span>
|
||||
<span class="n">FILE_SCHEMA</span><span class="p">((</span><span class="s1">'AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.data_step.str_to_cmd_args">
|
||||
<code class="sig-name descname">str_to_cmd_args</code><span class="sig-paren">(</span><em class="sig-param">cmd_str</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data_step.html#str_to_cmd_args"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data_step.str_to_cmd_args" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Using negative lookahead to match all the commas which are not
|
||||
inside a parenthesis and then split the string at the commas.</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="n">CARTESIAN_POINT</span><span class="p">(</span><span class="s1">''</span><span class="p">,(</span><span class="mf">0.E+000</span><span class="p">,</span><span class="mf">0.E+000</span><span class="p">,</span><span class="mf">0.E+000</span><span class="p">))</span>
|
||||
<span class="n">will</span> <span class="n">become</span>
|
||||
<span class="n">command</span> <span class="o">=</span> <span class="s1">'CARTESIAN_POINT'</span>
|
||||
<span class="n">arguments</span> <span class="o">=</span> <span class="p">[</span><span class="s1">''</span><span class="p">,</span> <span class="s1">'(0.E+000,0.E+000,0.E+000)'</span><span class="p">]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
</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>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
<li><a href="modules.html">pylib</a><ul>
|
||||
<li><a href="pylib.html">pylib package</a><ul>
|
||||
<li>Previous: <a href="pylib.data.html" title="previous chapter">pylib.data module</a></li>
|
||||
<li>Next: <a href="pylib.data_step_std.html" title="next chapter">pylib.data_step_std module</a></li>
|
||||
</ul></li>
|
||||
</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>
|
||||
|
||||
|
|
||||
<a href="_sources/pylib.data_step.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1021
docs/build/html/pylib.data_step_std.html
vendored
Normal file
1021
docs/build/html/pylib.data_step_std.html
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
docs/build/html/pylib.date.html
vendored
4
docs/build/html/pylib.date.html
vendored
@@ -17,7 +17,7 @@
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="pylib.drawblock module" href="pylib.drawblock.html" />
|
||||
<link rel="prev" title="pylib.data module" href="pylib.data.html" />
|
||||
<link rel="prev" title="pylib.data_step_std module" href="pylib.data_step_std.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
<li><a href="modules.html">pylib</a><ul>
|
||||
<li><a href="pylib.html">pylib package</a><ul>
|
||||
<li>Previous: <a href="pylib.data.html" title="previous chapter">pylib.data module</a></li>
|
||||
<li>Previous: <a href="pylib.data_step_std.html" title="previous chapter">pylib.data_step_std module</a></li>
|
||||
<li>Next: <a href="pylib.drawblock.html" title="next chapter">pylib.drawblock module</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
|
||||
235
docs/build/html/pylib.function.html
vendored
235
docs/build/html/pylib.function.html
vendored
@@ -42,7 +42,163 @@
|
||||
<dd class="field-odd"><p>2019-11-15</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-function"></span><dl class="function">
|
||||
<span class="target" id="module-function"></span><p>Functions returns function to apply conditions.</p>
|
||||
<dl class="function">
|
||||
<dt id="pylib.function.b_spline_basis">
|
||||
<code class="sig-name descname">b_spline_basis</code><span class="sig-paren">(</span><em class="sig-param">knots</em>, <em class="sig-param">knot_span</em>, <em class="sig-param">degree</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#b_spline_basis"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.b_spline_basis" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Cox-de Boor algorithm / recursion formula.</p>
|
||||
<p>Calculate the i-th B-spline basis function of degree p: N_{i,p}(u)</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>knots</strong> (<em>list</em>) – Knot vector U. m + 1 non-decreasing numbers / knots,
|
||||
<span class="math notranslate nohighlight">\(u_0 <= u_1 <= u_2 <= ... <= u_m\)</span></p></li>
|
||||
<li><p><strong>knot_span</strong> (<em>int</em>) – i-th knot span</p></li>
|
||||
<li><p><strong>degree</strong> (<em>int</em>) – degree of B-spline basis function</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>B-spline basis function using variable, u in [u_0, u_m]</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>function</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}N_{i,0}(u) &= \begin{cases} 1 & \text{if } u_i \le u \lt u_{i+1} \\
|
||||
0 & \text{otherwise}\end{cases} \\
|
||||
N_{i,p}(u) &= \frac{u - u_i}{u_{i+p} - u_i} N_{i,p-1}(u) +
|
||||
\frac{u_{i+p+1} - u}{u_{i+p+1} - u_{i+1}} N_{i+1,p-1}(u)\end{split}\]</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.function.b_spline_curve_with_knots">
|
||||
<code class="sig-name descname">b_spline_curve_with_knots</code><span class="sig-paren">(</span><em class="sig-param">degree</em>, <em class="sig-param">control_points</em>, <em class="sig-param">knots</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#b_spline_curve_with_knots"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.b_spline_curve_with_knots" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>B-spline curve of degree p (order + 1) on a given set of knots.</p>
|
||||
<p>n, m and p must satisfy m = n + p + 1.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>degree</strong> (<em>int</em>) – degree of B-spline basis functions</p></li>
|
||||
<li><p><strong>control_points</strong> (<em>list</em>) – control points P, n + 1 control points</p></li>
|
||||
<li><p><strong>knots</strong> (<em>list</em>) – Knot vector U. m + 1 non-decreasing numbers / knots,
|
||||
<span class="math notranslate nohighlight">\(u_0 <= u_1 <= u_2 <= ... <= u_m\)</span></p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>B-spline curve using variable, u in [u_0, u_m]</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>function</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\mathbf{C}_p(u) = \sum\limits_{i=0}^{n} N_{i,p}(u) \mathbf{P}_i\]</div>
|
||||
<ul class="simple">
|
||||
<li><p>open B-spline curves</p>
|
||||
<ul>
|
||||
<li><p>the curve will not touch the first and last legs of the
|
||||
control polyline</p></li>
|
||||
<li><p>the knot vector does not have any particular structure</p></li>
|
||||
<li><p>for degree p, intervals [u_0, u_p) and [u_{n-p}, u_n) will not
|
||||
have “full support” of basis functions and are ignored when a
|
||||
B-spline curve is open. For open B-spline curves, the domain
|
||||
is inteval [u_p, u_{n-p}]</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p>clamped B-spline curves, nonperiodic B-spline curves</p>
|
||||
<ul>
|
||||
<li><p>the curve is tangent to the first and the last legs just like
|
||||
a Bézier curve</p></li>
|
||||
<li><p>the first knot and the last knot must be repeated p+1 times
|
||||
(i. e., of multiplicity p+1)</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p>closed B-spline curves</p>
|
||||
<ul>
|
||||
<li><p>the start and the end of the generated curve join together
|
||||
forming a closed loop</p></li>
|
||||
<li><p>repeating some knots and control points # TODO: which?</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p>uniform B-spline curves</p>
|
||||
<ul>
|
||||
<li><p>internal knots are equally spaced</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p>Bézier curves</p>
|
||||
<ul>
|
||||
<li><p>a B-spline with no internal knots.</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<p><a class="reference internal" href="#pylib.function.b_spline_knots" title="pylib.function.b_spline_knots"><code class="xref py py-meth docutils literal notranslate"><span class="pre">b_spline_knots()</span></code></a></p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.function.b_spline_knots">
|
||||
<code class="sig-name descname">b_spline_knots</code><span class="sig-paren">(</span><em class="sig-param">control_point_spans</em>, <em class="sig-param">degree=3</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#b_spline_knots"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.b_spline_knots" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>B-spline knots to generate a clamped uniform B-spline curve
|
||||
of degree p (order + 1).</p>
|
||||
<p>The internal knots are equally spaced (uniform B-spline curve)</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>control_point_spans</strong> (<em>int</em>) – number of control points + 1</p></li>
|
||||
<li><p><strong>degree</strong> (<em>int</em>) – degree of B-spline basis functions (default = 3)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>knot vector</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>tuple</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<p><a class="reference internal" href="#pylib.function.b_spline_curve_with_knots" title="pylib.function.b_spline_curve_with_knots"><code class="xref py py-meth docutils literal notranslate"><span class="pre">b_spline_curve_with_knots()</span></code></a></p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.function.circle">
|
||||
<code class="sig-name descname">circle</code><span class="sig-paren">(</span><em class="sig-param">r</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#circle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.circle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Circle</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><p><strong>r</strong> (<em>float</em>) – radius of the circle</p>
|
||||
</dd>
|
||||
<dt class="field-even">Results</dt>
|
||||
<dd class="field-even"><p>functions for x of theta and y of theta and the interval</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>tuple</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}x(\theta) = r\cos\theta \\
|
||||
y(\theta) = r\sin\theta \\
|
||||
\theta = \left[0, 2\pi\right]\end{split}\]</div>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">*</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="n">r</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">circle</span><span class="p">(</span><span class="mi">20</span><span class="p">)[:</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">circle</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">interval</span> <span class="o">=</span> <span class="n">circle</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.function.cosine_wave">
|
||||
<code class="sig-name descname">cosine_wave</code><span class="sig-paren">(</span><em class="sig-param">A=1</em>, <em class="sig-param">k=1</em>, <em class="sig-param">f=1</em>, <em class="sig-param">phi=0</em>, <em class="sig-param">D=0</em>, <em class="sig-param">degree=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#cosine_wave"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.cosine_wave" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A cosine wave is said to be sinusoidal, because,
|
||||
@@ -67,6 +223,9 @@ interpreted in degrees.</p></li>
|
||||
<dd class="field-even"><p>sine wave function of spatial variable x and optional
|
||||
time t</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>function</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
@@ -74,6 +233,43 @@ time t</p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.function.ellipse">
|
||||
<code class="sig-name descname">ellipse</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/function.html#ellipse"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.ellipse" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Ellipse</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>a</strong> (<em>float</em>) – semi-major axis</p></li>
|
||||
<li><p><strong>b</strong> (<em>float</em>) – semi-minor axis</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Results</dt>
|
||||
<dd class="field-even"><p>functions for x of theta and y of theta and the interval</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>tuple</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}x(\theta) = a\cos\theta \\
|
||||
y(\theta) = b\sin\theta \\
|
||||
\theta = \left[0, 2\pi\right]\end{split}\]</div>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">*</span> <span class="o">.*</span>
|
||||
<span class="o">*</span> <span class="n">b</span> <span class="p">:</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="p">:</span><span class="o">......*</span>
|
||||
<span class="o">*</span> <span class="n">a</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">ellipse</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">5</span><span class="p">)[:</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">ellipse</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">interval</span> <span class="o">=</span> <span class="n">ellipse</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.function.epitrochoid">
|
||||
<code class="sig-name descname">epitrochoid</code><span class="sig-paren">(</span><em class="sig-param">R</em>, <em class="sig-param">r</em>, <em class="sig-param">d</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#epitrochoid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.epitrochoid" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -93,7 +289,7 @@ circle of radius R.</p>
|
||||
<dd class="field-even"><p>float</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Results</dt>
|
||||
<dd class="field-odd"><p>functions for x of theta and y of theta</p>
|
||||
<dd class="field-odd"><p>functions for x of theta and y of theta and the interval</p>
|
||||
</dd>
|
||||
<dt class="field-even">Return type</dt>
|
||||
<dd class="field-even"><p>tuple</p>
|
||||
@@ -108,7 +304,7 @@ y(\theta) = (R + r)\sin\theta - d\sin\left(\frac{R+r}{r}\theta\right) \\
|
||||
<span class="o">*</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="n">r</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">**</span> <span class="o">....</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">**</span> <span class="o">..</span><span class="p">,</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">**</span> <span class="n">d</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span>
|
||||
@@ -117,8 +313,9 @@ y(\theta) = (R + r)\sin\theta - d\sin\left(\frac{R+r}{r}\theta\right) \\
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="o">*</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">epitrochoid</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="mf">0.5</span><span class="p">)[:</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">theta_end</span> <span class="o">=</span> <span class="n">epitrochoid</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="mf">0.5</span><span class="p">)</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">epitrochoid</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="mf">0.5</span><span class="p">)[:</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">epitrochoid</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="mf">0.5</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">interval</span> <span class="o">=</span> <span class="n">epitrochoid</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="mf">0.5</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
@@ -142,7 +339,7 @@ circle of radius R.</p>
|
||||
<dd class="field-even"><p>float</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Results</dt>
|
||||
<dd class="field-odd"><p>functions for x of theta and y of theta</p>
|
||||
<dd class="field-odd"><p>functions for x of theta and y of theta and the interval</p>
|
||||
</dd>
|
||||
<dt class="field-even">Return type</dt>
|
||||
<dd class="field-even"><p>tuple</p>
|
||||
@@ -157,7 +354,7 @@ y(\theta) = (R - r)\sin\theta - d\sin\left(\frac{R-r}{r}\theta\right) \\
|
||||
<span class="o">*</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="n">r</span> <span class="o">**</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="o">....</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="p">,</span><span class="o">..</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="n">d</span> <span class="o">*</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="o">**</span>
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span>
|
||||
@@ -166,8 +363,9 @@ y(\theta) = (R - r)\sin\theta - d\sin\left(\frac{R-r}{r}\theta\right) \\
|
||||
<span class="o">*</span> <span class="o">*</span> <span class="o">*</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">hyotrochoid</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">)[:</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">theta_end</span> <span class="o">=</span> <span class="n">hyotrochoid</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">hyotrochoid</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">)[:</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">hyotrochoid</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">interval</span> <span class="o">=</span> <span class="n">hyotrochoid</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition seealso">
|
||||
@@ -176,6 +374,16 @@ y(\theta) = (R - r)\sin\theta - d\sin\left(\frac{R-r}{r}\theta\right) \\
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.function.sample_half_open">
|
||||
<code class="sig-name descname">sample_half_open</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">a</em>, <em class="sig-param">b</em>, <em class="sig-param">n=50</em>, <em class="sig-param">endpoint_epsilon=1e-07</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#sample_half_open"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.sample_half_open" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.function.sample_half_open_seq">
|
||||
<code class="sig-name descname">sample_half_open_seq</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">x</em>, <em class="sig-param">endpoint_epsilon=1e-07</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#sample_half_open_seq"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.sample_half_open_seq" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.function.sine_wave">
|
||||
<code class="sig-name descname">sine_wave</code><span class="sig-paren">(</span><em class="sig-param">A=1</em>, <em class="sig-param">k=1</em>, <em class="sig-param">f=1</em>, <em class="sig-param">phi=0</em>, <em class="sig-param">D=0</em>, <em class="sig-param">degree=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#sine_wave"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.sine_wave" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -198,11 +406,14 @@ interpreted in degrees.</p></li>
|
||||
<dd class="field-even"><p>sine wave function of spatial variable x and optional
|
||||
time t</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>function</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>In general, the function is:</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}y(x,t) = A\sin(kx + 2\pi f t + \varphi) + D \\
|
||||
y(x,t) = A\sin(kx + \omega t + \varphi) + D\end{split}\]</div>
|
||||
\[\begin{split}y(x,t) = A\sin(kx + \omega t + \varphi) + D \\
|
||||
y(x,t) = A\sin(kx + 2\pi f t + \varphi) + D\end{split}\]</div>
|
||||
<p>where:</p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
@@ -246,7 +457,7 @@ which are normed to the range of [0, 1] to</p>
|
||||
<li><p><strong>h</strong> (<em>int</em>) – number of chars in vertical 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
|
||||
Characters in the Braille Patterns Block (fisrt index U+2800, last
|
||||
Characters in the Braille Patterns Block (first 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
|
||||
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
|
||||
|
||||
244
docs/build/html/pylib.geometry.html
vendored
244
docs/build/html/pylib.geometry.html
vendored
@@ -42,16 +42,47 @@
|
||||
<dd class="field-odd"><p>2019-12-21</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-geometry"></span><div class="section" id="affine-transforms">
|
||||
<h2>Affine transforms<a class="headerlink" href="#affine-transforms" title="Permalink to this headline">¶</a></h2>
|
||||
<span class="target" id="module-geometry"></span><p class="rubric">Affine transforms</p>
|
||||
<p>Functions in augmented space, in homogenous coordinates.
|
||||
Points are augment to 4 dimensions, by adding a dummy coordinate.
|
||||
For points the dummy coordinate is always normalized to 1.
|
||||
With homogenous coordinates translation of points is repesentable
|
||||
as a linear transformation.</p>
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.ArcBSplineCurveWithKnots">
|
||||
<em class="property">class </em><code class="sig-name descname">ArcBSplineCurveWithKnots</code><span class="sig-paren">(</span><em class="sig-param">degree</em>, <em class="sig-param">control_points</em>, <em class="sig-param">knot_multiplicities</em>, <em class="sig-param">knots</em>, <em class="sig-param">start</em>, <em class="sig-param">end</em>, <em class="sig-param">n=5</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#ArcBSplineCurveWithKnots"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.ArcBSplineCurveWithKnots" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Polyline" title="pylib.geometry.Polyline"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Polyline</span></code></a></p>
|
||||
<p>B-spline curve with knots, an open wireframe object in local
|
||||
coordinate system</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.ArcCircle">
|
||||
<em class="property">class </em><code class="sig-name descname">ArcCircle</code><span class="sig-paren">(</span><em class="sig-param">radius=1</em>, <em class="sig-param">ang1=0</em>, <em class="sig-param">ang2=1.5707963267948966</em>, <em class="sig-param">n=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#ArcCircle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.ArcCircle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Polyline" title="pylib.geometry.Polyline"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Polyline</span></code></a></p>
|
||||
<p>Arc of a circle, an open wireframe object in local coordinate
|
||||
system</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.ArcEllipse">
|
||||
<em class="property">class </em><code class="sig-name descname">ArcEllipse</code><span class="sig-paren">(</span><em class="sig-param">a=1</em>, <em class="sig-param">b=1</em>, <em class="sig-param">ang1=0</em>, <em class="sig-param">ang2=1.5707963267948966</em>, <em class="sig-param">n=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#ArcEllipse"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.ArcEllipse" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Polyline" title="pylib.geometry.Polyline"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Polyline</span></code></a></p>
|
||||
<p>Arc of an ellipse, an open wireframe object in local
|
||||
coordinate system</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.B_spline_curve_with_knots">
|
||||
<em class="property">class </em><code class="sig-name descname">B_spline_curve_with_knots</code><span class="sig-paren">(</span><em class="sig-param">degree</em>, <em class="sig-param">control_points</em>, <em class="sig-param">knot_multiplicities</em>, <em class="sig-param">knots</em>, <em class="sig-param">n=5</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#B_spline_curve_with_knots"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.B_spline_curve_with_knots" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Polyline" title="pylib.geometry.Polyline"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Polyline</span></code></a></p>
|
||||
<p>B-spline curve with knots, an open wireframe object in local
|
||||
coordinate system</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.CS">
|
||||
<em class="property">class </em><code class="sig-name descname">CS</code><span class="sig-paren">(</span><em class="sig-param">x=[1, 0, 0], y=[0, 1, 0], z=[0, 0, 1]</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><code class="sig-name descname">CS</code><span class="sig-paren">(</span><em class="sig-param">x=vector([1</em>, <em class="sig-param">0</em>, <em class="sig-param">0</em>, <em class="sig-param">0])</em>, <em class="sig-param">y=vector([0</em>, <em class="sig-param">1</em>, <em class="sig-param">0</em>, <em class="sig-param">0])</em>, <em class="sig-param">z=vector([0</em>, <em class="sig-param">0</em>, <em class="sig-param">1</em>, <em class="sig-param">0])</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="pylib.mathematics.html#pylib.mathematics.matrix" title="pylib.mathematics.matrix"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.mathematics.matrix</span></code></a></p>
|
||||
<p>Coordinate system</p>
|
||||
<dl class="method">
|
||||
@@ -60,33 +91,38 @@ as a linear transformation.</p>
|
||||
<dd><p>Get coordinates in 3d space</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.CS.init_xyz">
|
||||
<em class="property">classmethod </em><code class="sig-name descname">init_xyz</code><span class="sig-paren">(</span><em class="sig-param">x=[1, 0, 0], y=[0, 1, 0], z=[0, 0, 1]</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.init_xyz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.init_xyz" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.CS.x90">
|
||||
<em class="property">static </em><code class="sig-name descname">x90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.x90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.x90" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">classmethod </em><code class="sig-name descname">x90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.x90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.x90" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.CS.xm90">
|
||||
<em class="property">static </em><code class="sig-name descname">xm90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.xm90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.xm90" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">classmethod </em><code class="sig-name descname">xm90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.xm90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.xm90" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.CS.y90">
|
||||
<em class="property">static </em><code class="sig-name descname">y90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.y90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.y90" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">classmethod </em><code class="sig-name descname">y90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.y90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.y90" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.CS.ym90">
|
||||
<em class="property">static </em><code class="sig-name descname">ym90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.ym90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.ym90" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">classmethod </em><code class="sig-name descname">ym90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.ym90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.ym90" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.Circle">
|
||||
<em class="property">class </em><code class="sig-name descname">Circle</code><span class="sig-paren">(</span><em class="sig-param">radius=1</em>, <em class="sig-param">n=10</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Circle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Circle" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><code class="sig-name descname">Circle</code><span class="sig-paren">(</span><em class="sig-param">radius=1</em>, <em class="sig-param">n=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Circle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Circle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Polygon" title="pylib.geometry.Polygon"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Polygon</span></code></a></p>
|
||||
<p>Circle a closed wireframe object in local coordinate system</p>
|
||||
<p>Circle, a closed wireframe object in local coordinate system</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
@@ -94,6 +130,25 @@ as a linear transformation.</p>
|
||||
<em class="property">class </em><code class="sig-name descname">Direction</code><span class="sig-paren">(</span><em class="sig-param">x=1</em>, <em class="sig-param">y=0</em>, <em class="sig-param">z=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Direction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Direction" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="pylib.mathematics.html#pylib.mathematics.vector" title="pylib.mathematics.vector"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.mathematics.vector</span></code></a></p>
|
||||
<p>Direction in local coordinate system</p>
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Direction.cross">
|
||||
<em class="property">classmethod </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/geometry.html#Direction.cross"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Direction.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">
|
||||
\[\mathbf{c} = \mathbf{a} \times \mathbf{b}\]</div>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.Ellipse">
|
||||
<em class="property">class </em><code class="sig-name descname">Ellipse</code><span class="sig-paren">(</span><em class="sig-param">a=1</em>, <em class="sig-param">b=1</em>, <em class="sig-param">n=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Ellipse"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Ellipse" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Polygon" title="pylib.geometry.Polygon"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Polygon</span></code></a></p>
|
||||
<p>Circle, a closed wireframe object in local coordinate system</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
@@ -106,8 +161,8 @@ as a linear transformation.</p>
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.Line">
|
||||
<em class="property">class </em><code class="sig-name descname">Line</code><span class="sig-paren">(</span><em class="sig-param">point1=vector([-1</em>, <em class="sig-param">0</em>, <em class="sig-param">0</em>, <em class="sig-param">1])</em>, <em class="sig-param">point2=vector([1</em>, <em class="sig-param">0</em>, <em class="sig-param">0</em>, <em class="sig-param">1])</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Line"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Line" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Wireframe" title="pylib.geometry.Wireframe"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Wireframe</span></code></a></p>
|
||||
<p>Line a open wireframe object in local coordinate system</p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Polyline" title="pylib.geometry.Polyline"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Polyline</span></code></a></p>
|
||||
<p>Line, an open wireframe object in local coordinate system</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
@@ -126,10 +181,95 @@ as a linear transformation.</p>
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.Polygon">
|
||||
<em class="property">class </em><code class="sig-name descname">Polygon</code><span class="sig-paren">(</span><em class="sig-param">*points</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Polygon"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polygon" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Wireframe" title="pylib.geometry.Wireframe"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Wireframe</span></code></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Polyline" title="pylib.geometry.Polyline"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Polyline</span></code></a></p>
|
||||
<p>Polygon as closed wireframe object in local coordinate system</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.Polyline">
|
||||
<em class="property">class </em><code class="sig-name descname">Polyline</code><span class="sig-paren">(</span><em class="sig-param">*points</em>, <em class="sig-param">closed=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Polyline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
|
||||
<p>Open and closed wireframe object in local coordinate system</p>
|
||||
<p>This class create its own points (copy).</p>
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.__iter__">
|
||||
<code class="sig-name descname">__iter__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Polyline.__iter__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.__iter__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns the Iterator object</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.__repr__">
|
||||
<code class="sig-name descname">__repr__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Polyline.__repr__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.__repr__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return repr(self).</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.__str__">
|
||||
<code class="sig-name descname">__str__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Polyline.__str__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.__str__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return str(self).</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.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/geometry.html#Polyline.ch_cs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.ch_cs" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.points">
|
||||
<code class="sig-name descname">points</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Polyline.points"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.points" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get coordinates in 3d space</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.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/geometry.html#Polyline.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.rotate_x" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.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/geometry.html#Polyline.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.rotate_y" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.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/geometry.html#Polyline.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.rotate_z" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.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/geometry.html#Polyline.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.scale" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.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/geometry.html#Polyline.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.translate" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.xy">
|
||||
<code class="sig-name descname">xy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Polyline.xy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.xy" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get coordinates in 3d space</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Polyline.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/geometry.html#Polyline.xyz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polyline.xyz" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get coordinates in 3d space</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.Properties">
|
||||
<em class="property">class </em><code class="sig-name descname">Properties</code><a class="reference internal" href="_modules/pylib/geometry.html#Properties"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Properties" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
|
||||
<dl class="attribute">
|
||||
<dt id="pylib.geometry.Properties.circle_sectors">
|
||||
<code class="sig-name descname">circle_sectors</code><em class="property"> = 12</em><a class="headerlink" href="#pylib.geometry.Properties.circle_sectors" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.Solid">
|
||||
<em class="property">class </em><code class="sig-name descname">Solid</code><span class="sig-paren">(</span><em class="sig-param">*wireframes</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Solid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Solid" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -159,74 +299,6 @@ The Wireframe class create its own points (copy).</p>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.Wireframe">
|
||||
<em class="property">class </em><code class="sig-name descname">Wireframe</code><span class="sig-paren">(</span><em class="sig-param">*points</em>, <em class="sig-param">closed=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
|
||||
<p>Open and closed wireframe object in local coordinate system</p>
|
||||
<p>This class create its own points (copy).</p>
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.__iter__">
|
||||
<code class="sig-name descname">__iter__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.__iter__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.__iter__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns the Iterator object</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.__str__">
|
||||
<code class="sig-name descname">__str__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.__str__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.__str__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return str(self).</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.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/geometry.html#Wireframe.ch_cs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.ch_cs" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.points">
|
||||
<code class="sig-name descname">points</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.points"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.points" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get coordinates in 3d space</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.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/geometry.html#Wireframe.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.rotate_x" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.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/geometry.html#Wireframe.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.rotate_y" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.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/geometry.html#Wireframe.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.rotate_z" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.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/geometry.html#Wireframe.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.scale" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.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/geometry.html#Wireframe.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.translate" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.xy">
|
||||
<code class="sig-name descname">xy</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.xy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.xy" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get coordinates in 3d space</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.Wireframe.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/geometry.html#Wireframe.xyz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.xyz" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get coordinates in 3d space</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="pylib.geometry.World">
|
||||
<em class="property">class </em><code class="sig-name descname">World</code><a class="reference internal" href="_modules/pylib/geometry.html#World"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -238,6 +310,12 @@ The Wireframe class create its own points (copy).</p>
|
||||
<dd><p>Returns the Iterator object</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.World.__str__">
|
||||
<code class="sig-name descname">__str__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.__str__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.__str__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return str(self).</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.geometry.World.add">
|
||||
<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param">*objects</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.add" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -315,7 +393,11 @@ The Wireframe class create its own points (copy).</p>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<dl class="function">
|
||||
<dt id="pylib.geometry.sample_half_open">
|
||||
<code class="sig-name descname">sample_half_open</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">a</em>, <em class="sig-param">b</em>, <em class="sig-param">n=50</em>, <em class="sig-param">endpoint_epsilon=1e-07</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#sample_half_open"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.sample_half_open" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<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="next" title="pylib.mathematics module" href="pylib.mathematics.html" />
|
||||
<link rel="next" title="pylib.helper module" href="pylib.helper.html" />
|
||||
<link rel="prev" title="pylib.geometry_plot module" href="pylib.geometry_plot.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
@@ -147,7 +147,7 @@ working for 3D.</p>
|
||||
<li><a href="modules.html">pylib</a><ul>
|
||||
<li><a href="pylib.html">pylib package</a><ul>
|
||||
<li>Previous: <a href="pylib.geometry_plot.html" title="previous chapter">pylib.geometry_plot module</a></li>
|
||||
<li>Next: <a href="pylib.mathematics.html" title="next chapter">pylib.mathematics module</a></li>
|
||||
<li>Next: <a href="pylib.helper.html" title="next chapter">pylib.helper module</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
|
||||
152
docs/build/html/pylib.helper.html
vendored
Normal file
152
docs/build/html/pylib.helper.html
vendored
Normal file
@@ -0,0 +1,152 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.helper module — pylib 2019.12.21 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="next" title="pylib.mathematics module" href="pylib.mathematics.html" />
|
||||
<link rel="prev" title="pylib.geometry_plot_pylab module" href="pylib.geometry_plot_pylab.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">
|
||||
|
||||
<div class="section" id="module-pylib.helper">
|
||||
<span id="pylib-helper-module"></span><h1>pylib.helper module<a class="headerlink" href="#module-pylib.helper" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Helper objects.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Date</dt>
|
||||
<dd class="field-odd"><p>2020-01-01</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-helper"></span><dl class="class">
|
||||
<dt id="pylib.helper.timeit">
|
||||
<em class="property">class </em><code class="sig-name descname">timeit</code><span class="sig-paren">(</span><em class="sig-param">description=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/helper.html#timeit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.helper.timeit" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">contextlib.ContextDecorator</span></code></p>
|
||||
<p>Meassure time for a function or code block.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><p><strong>description</strong> (<em>str</em>) – description for the function or code block
|
||||
used for the print-out</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="k">with</span> <span class="n">timeit</span><span class="p">(</span><span class="s1">'section_test'</span><span class="p">):</span>
|
||||
<span class="gp">... </span> <span class="c1"># code</span>
|
||||
<span class="go">section_test took 0.006 ms</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@timeit</span><span class="p">(</span><span class="s1">'func'</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">func</span><span class="p">():</span>
|
||||
<span class="c1"># code</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">func</span><span class="p">()</span>
|
||||
<span class="go">func took 0.006 ms</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
</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>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
<li><a href="modules.html">pylib</a><ul>
|
||||
<li><a href="pylib.html">pylib package</a><ul>
|
||||
<li>Previous: <a href="pylib.geometry_plot_pylab.html" title="previous chapter">pylib.geometry_plot_pylab module</a></li>
|
||||
<li>Next: <a href="pylib.mathematics.html" title="next chapter">pylib.mathematics module</a></li>
|
||||
</ul></li>
|
||||
</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>
|
||||
|
||||
|
|
||||
<a href="_sources/pylib.helper.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
8
docs/build/html/pylib.html
vendored
8
docs/build/html/pylib.html
vendored
@@ -58,17 +58,17 @@
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.data.html">pylib.data module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.data_step.html">pylib.data_step module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.data_step_std.html">pylib.data_step_std module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.date.html">pylib.date module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.drawblock.html">pylib.drawblock module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.function.html">pylib.function module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.geometry.html">pylib.geometry module</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="pylib.geometry.html#affine-transforms">Affine transforms</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.geometry.html">pylib.geometry module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.geometry2d.html">pylib.geometry2d module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.geometry2d_plot.html">pylib.geometry2d_plot module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.geometry_plot.html">pylib.geometry_plot module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.geometry_plot_pylab.html">pylib.geometry_plot_pylab module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.helper.html">pylib.helper module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.mathematics.html">pylib.mathematics module</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pylib.time_of_day.html">pylib.time_of_day module</a></li>
|
||||
</ul>
|
||||
|
||||
109
docs/build/html/pylib.mathematics.html
vendored
109
docs/build/html/pylib.mathematics.html
vendored
@@ -17,7 +17,7 @@
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="pylib.time_of_day module" href="pylib.time_of_day.html" />
|
||||
<link rel="prev" title="pylib.geometry_plot_pylab module" href="pylib.geometry_plot_pylab.html" />
|
||||
<link rel="prev" title="pylib.helper module" href="pylib.helper.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
@@ -62,8 +62,16 @@
|
||||
<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">m</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">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</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="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">7</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">9</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">0</span><span class="p">]])</span>
|
||||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">m</span><span class="p">[:])</span>
|
||||
<span class="go">[[1, 2, 3, 0], [4, 5, 6, 0], [7, 8, 9, 0], [0, 0, 0, 0]]</span>
|
||||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">m</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
||||
<span class="go">[7, 8, 9, 0]</span>
|
||||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">m</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="p">:])</span>
|
||||
<span class="go">[7, 8, 9, 0]</span>
|
||||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">m</span><span class="p">[:,</span> <span class="mi">2</span><span class="p">])</span>
|
||||
<span class="go">[3, 6, 9, 0]</span>
|
||||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">m</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span>
|
||||
<span class="go">9</span>
|
||||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">m</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">:</span><span class="mi">3</span><span class="p">])</span>
|
||||
<span class="go">[[2, 3], [5, 6], [8, 9], [0, 0]]</span>
|
||||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">m</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">:</span><span class="mi">3</span><span class="p">])</span>
|
||||
@@ -160,6 +168,12 @@ for wrong usage (result will be nonsense).</p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.mathematics.matrix.__setitem__">
|
||||
<code class="sig-name descname">__setitem__</code><span class="sig-paren">(</span><em class="sig-param">index</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.__setitem__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.__setitem__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Set self[key] to value.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.mathematics.matrix.__str__">
|
||||
<code class="sig-name descname">__str__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.__str__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.__str__" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -400,6 +414,39 @@ where it should be.</p>
|
||||
\end{bmatrix}\end{split}\]</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.mathematics.matrix.transpose">
|
||||
<code class="sig-name descname">transpose</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.transpose"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.transpose" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Transpose</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.mathematics.matrix.transposed">
|
||||
<em class="property">static </em><code class="sig-name descname">transposed</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#matrix.transposed"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.transposed" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Transpose</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.mathematics.matrix.zeros">
|
||||
<em class="property">static </em><code class="sig-name descname">zeros</code><span class="sig-paren">(</span><em class="sig-param">m</em>, <em class="sig-param">n</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.zeros"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.zeros" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns a zero matrix of size mxn; m rows and n columns
|
||||
filled with zeros.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>m</strong> (<em>int</em>) – number of rows of the matrix, e. g. 3</p></li>
|
||||
<li><p><strong>n</strong> (<em>int</em>) – number of columns of the matrix, e. g. 3</p></li>
|
||||
</ul>
|
||||
</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">m</span> <span class="o">=</span> <span class="n">matrix</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="mi">3</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">m</span><span class="p">)</span> <span class="p">[[</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">],</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">],</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">]]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
@@ -848,13 +895,12 @@ The direction of c can be found with the right-hand rule.</p>
|
||||
<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>
|
||||
<dd><p>Returns a vector of length m 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>
|
||||
<li><p><strong>fill_value</strong> – fill value</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Type fill_value</dt>
|
||||
@@ -878,9 +924,33 @@ columns filled with v.</p>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.mathematics.vector.isclose">
|
||||
<em class="property">static </em><code class="sig-name descname">isclose</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em>, <em class="sig-param">rel_tol=0.05</em>, <em class="sig-param">abs_tol=1e-08</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.isclose"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.isclose" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.mathematics.vector.iscloseto">
|
||||
<code class="sig-name descname">iscloseto</code><span class="sig-paren">(</span><em class="sig-param">other</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.iscloseto"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.iscloseto" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></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>
|
||||
<code class="sig-name descname">normalize</code><span class="sig-paren">(</span><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">
|
||||
\[\mathbf{\hat{a}} = \frac{\mathbf{a}}{|\mathbf{a}|}\]</div>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<p><a class="reference internal" href="#pylib.mathematics.vector.__abs__" title="pylib.mathematics.vector.__abs__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__abs__()</span></code></a> for a norm (magnitude) of a vector</p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="pylib.mathematics.vector.normalized">
|
||||
<em class="property">static </em><code class="sig-name descname">normalized</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.normalized"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.normalized" 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>
|
||||
@@ -895,8 +965,7 @@ columns filled with v.</p>
|
||||
<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>
|
||||
<dd><p>Returns a vector of length m 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>
|
||||
@@ -904,7 +973,7 @@ columns filled with ones.</p>
|
||||
<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>
|
||||
<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">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>
|
||||
@@ -913,17 +982,20 @@ columns filled with ones.</p>
|
||||
|
||||
<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>
|
||||
<em class="property">static </em><code class="sig-name descname">random</code><span class="sig-paren">(</span><em class="sig-param">length</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 filled with random
|
||||
numbers.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Example</dt>
|
||||
<dd class="field-odd"><p></p></dd>
|
||||
<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">random</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
||||
<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">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="n">v</span> <span class="o">=</span> <span class="n">vector</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>
|
||||
@@ -1022,8 +1094,7 @@ where it should be.</p>
|
||||
<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>
|
||||
<dd><p>Returns a zero vector of length m 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>
|
||||
@@ -1031,7 +1102,7 @@ columns filled with zeros.</p>
|
||||
<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>
|
||||
<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">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>
|
||||
@@ -1073,7 +1144,7 @@ columns filled with zeros.</p>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
<li><a href="modules.html">pylib</a><ul>
|
||||
<li><a href="pylib.html">pylib package</a><ul>
|
||||
<li>Previous: <a href="pylib.geometry_plot_pylab.html" title="previous chapter">pylib.geometry_plot_pylab module</a></li>
|
||||
<li>Previous: <a href="pylib.helper.html" title="previous chapter">pylib.helper module</a></li>
|
||||
<li>Next: <a href="pylib.time_of_day.html" title="next chapter">pylib.time_of_day module</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
|
||||
43
docs/build/html/pylib.numerical.ode.html
vendored
43
docs/build/html/pylib.numerical.ode.html
vendored
@@ -44,7 +44,12 @@ ordinary differential equations.</p>
|
||||
<dd class="field-odd"><p>2015-09-21</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-ode"></span><dl class="function">
|
||||
<span class="target" id="module-ode"></span><p>Approximate the solution <span class="math notranslate nohighlight">\(x(t)\)</span> of the initial value problem</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}\frac{\mathrm{d}x}{\mathrm{d}t} = \dot{x} &= f(t,x) \\
|
||||
x(t_0) &= x_0 \\
|
||||
t &\in [t_0, t_n]\end{split}\]</div>
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode.e1">
|
||||
<code class="sig-name descname">e1</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">x0</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode.html#e1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode.e1" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Explicit first-order method /
|
||||
@@ -65,13 +70,14 @@ Euler-Cauchy-Verfahren / Euler-vorwärts-Verfahren</p>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>Approximate the solution of the initial value problem</p>
|
||||
<p>Approximate the solution <span class="math notranslate nohighlight">\(x(t)\)</span> of the initial value problem</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}\dot{x} &= f(t,x) \\
|
||||
x(t_0) &= x_0\end{split}\]</div>
|
||||
x(t_0) &= x_0 \\
|
||||
t &\in [t_0, t_n]\end{split}\]</div>
|
||||
<p>Choose a value h for the size of every step and set</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[t_i = t_0 + i h ~,\quad i=1,2,\ldots,n\]</div>
|
||||
\[t_{i+1} = t_0 + i h = t_i + h ~,\quad i=0,1,2,\ldots,n-1\]</div>
|
||||
<p>The derivative of the solution is approximated as the forward
|
||||
difference equation</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
@@ -169,6 +175,30 @@ proportional to the step size.</p>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>Problem</p>
|
||||
<blockquote>
|
||||
<div><div class="math notranslate nohighlight">
|
||||
\[\begin{split}\dot{y} &= f(t, y) \\
|
||||
y(t_0) &= y_0 \\
|
||||
t &\in [t_0, t_n]\end{split}\]</div>
|
||||
</div></blockquote>
|
||||
<p>Increment <span class="math notranslate nohighlight">\(\delta t = t_{i+1}-t_i ~,~~ i=0,1,2,\ldots,n-1\)</span></p>
|
||||
<blockquote>
|
||||
<div><div class="math notranslate nohighlight">
|
||||
\[\begin{split}y_{n+1} &= y_{i} + \tfrac{1}{6}(
|
||||
\delta y_{i,1} + 2\delta y_{i,2} + 2\delta y_{i,3} +
|
||||
\delta y_{i,4}) \\
|
||||
& \qquad \text{with} \\
|
||||
\delta y_{i,1} &= \delta t \cdot y'(t_{i}, ~ y_{i}) \\
|
||||
\delta y_{i,2} &= \delta t \cdot
|
||||
y'(t_{i}+\tfrac{1}{2}\delta t, ~
|
||||
y_{i}+\tfrac{1}{2}\delta y_{i,1}) \\
|
||||
\delta y_{i,3} &= \delta t \cdot
|
||||
y'(t_{i}+\tfrac{1}{2}\delta t, ~
|
||||
y_{i}+\tfrac{1}{2}\delta y_{i,2}) \\
|
||||
\delta y_{i,4} &= \delta t \cdot
|
||||
y'(t_{i}+\delta t, ~ y_{i}+\delta y_{i,3})\end{split}\]</div>
|
||||
</div></blockquote>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
@@ -251,9 +281,10 @@ proportional to the step size.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode.newmark_newtonraphson_rdk">
|
||||
<code class="sig-name descname">newmark_newtonraphson_rdk</code><span class="sig-paren">(</span><em class="sig-param">fnm</em>, <em class="sig-param">x0</em>, <em class="sig-param">xp0</em>, <em class="sig-param">xpp0</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em>, <em class="sig-param">gamma=0.5</em>, <em class="sig-param">beta=0.25</em>, <em class="sig-param">max_iterations=1000</em>, <em class="sig-param">tol=1e-09</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode.html#newmark_newtonraphson_rdk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode.newmark_newtonraphson_rdk" title="Permalink to this definition">¶</a></dt>
|
||||
<dt id="pylib.numerical.ode.newmark_newtonraphson_mdk">
|
||||
<code class="sig-name descname">newmark_newtonraphson_mdk</code><span class="sig-paren">(</span><em class="sig-param">fmdk</em>, <em class="sig-param">x0</em>, <em class="sig-param">xp0</em>, <em class="sig-param">xpp0</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em>, <em class="sig-param">gamma=0.5</em>, <em class="sig-param">beta=0.25</em>, <em class="sig-param">max_iterations=1000</em>, <em class="sig-param">tol=1e-09</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode.html#newmark_newtonraphson_mdk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode.newmark_newtonraphson_mdk" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Newmark method.</p>
|
||||
<p>Using m mass, d damping and k stiffness formulation.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
|
||||
159
docs/build/html/pylib.numerical.ode_model.html
vendored
159
docs/build/html/pylib.numerical.ode_model.html
vendored
@@ -37,78 +37,123 @@
|
||||
<div class="section" id="module-pylib.numerical.ode_model">
|
||||
<span id="pylib-numerical-ode-model-module"></span><h1>pylib.numerical.ode_model module<a class="headerlink" href="#module-pylib.numerical.ode_model" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Mathmatical models governed by ordinary differential equations.</p>
|
||||
<p>Describes initial value problems as systems of first order ordinary differential
|
||||
equations.</p>
|
||||
<p>Describes initial value problems as systems of first order ordinary
|
||||
differential equations.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Date</dt>
|
||||
<dd class="field-odd"><p>2019-05-25</p>
|
||||
<dd class="field-odd"><p>2020-01-08</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-ode_model"></span><dl class="function">
|
||||
<dt id="pylib.numerical.ode_model.disk">
|
||||
<code class="sig-name descname">disk</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode_model.html#disk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode_model.disk" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">disk</code><span class="sig-paren">(</span><em class="sig-param">d</em>, <em class="sig-param">e</em>, <em class="sig-param">T</em>, <em class="sig-param">method=''</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode_model.html#disk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode_model.disk" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Rotation of an eccentric disk.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>x</strong> (<em>list</em>) – values of the function</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – <p>parameters of the function</p>
|
||||
<ul>
|
||||
<li><p>diameter</p></li>
|
||||
<li><p>eccentricity</p></li>
|
||||
<li><p>torque</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<li><p><strong>d</strong> (<em>float</em>) – diameter</p></li>
|
||||
<li><p><strong>e</strong> (<em>float</em>) – eccentricity</p></li>
|
||||
<li><p><strong>T</strong> (<em>float</em>) – torque</p></li>
|
||||
<li><p><strong>method</strong> – the method to use, default = ‘’.</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode_model.disk_nm">
|
||||
<code class="sig-name descname">disk_nm</code><span class="sig-paren">(</span><em class="sig-param">xn</em>, <em class="sig-param">xpn</em>, <em class="sig-param">xppn</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode_model.html#disk_nm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode_model.disk_nm" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Rotation of an eccentric disk.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>xn</strong> (<em>list</em>) – values of the function</p></li>
|
||||
<li><p><strong>xpn</strong> (<em>list</em>) – first derivative values of the function</p></li>
|
||||
<li><p><strong>xppn</strong> (<em>list</em>) – second derivative values of the function</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – <p>parameters of the function</p>
|
||||
<ul>
|
||||
<li><p>diameter</p></li>
|
||||
<li><p>eccentricity</p></li>
|
||||
<li><p>torque</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode_model.disk_nmmdk">
|
||||
<code class="sig-name descname">disk_nmmdk</code><span class="sig-paren">(</span><em class="sig-param">xn</em>, <em class="sig-param">xpn</em>, <em class="sig-param">xppn</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode_model.html#disk_nmmdk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode_model.disk_nmmdk" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Rotation of an eccentric disk.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>xn</strong> (<em>list</em>) – values of the function</p></li>
|
||||
<li><p><strong>xpn</strong> (<em>list</em>) – derivative values of the function</p></li>
|
||||
<li><p><strong>xppn</strong> (<em>list</em>) – second derivative values of the function</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – <p>parameters of the function</p>
|
||||
<ul>
|
||||
<li><p>diameter</p></li>
|
||||
<li><p>eccentricity</p></li>
|
||||
<li><p>torque</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p><p>disk function. This function is independent of the time.</p>
|
||||
<ul class="simple">
|
||||
<li><p>For method = ‘’: f(x, t=0) -> (xp1, xp2, xp3, xp4, xp5, xp6).
|
||||
x is (x, y, phi, x’, y’, phi’) and the return values are (x’,
|
||||
y’, phi’, x’‘, y’‘, phi’‘)</p></li>
|
||||
<li><p>For method = ‘nm’: f(xn, xpn, xppn, t=0) -> (N, dN, dNp, dNpp).
|
||||
xn are the values of the function (x, y, phi), xpn are first
|
||||
derivative values of the function (x’, y’, phi’) and xppn are
|
||||
the second derivative values of the function (x’‘, y’‘, phi’‘).
|
||||
The return values are (N, dN, dNp, dNpp)</p></li>
|
||||
<li><p>For method = ‘nmmdk’: f(xn, xpn, xppn, t=0) ->
|
||||
(rm, rmx, rmxpp, rd, rdx, rdxp, rk, rkx, f).
|
||||
xn are the values of the function (x, y, phi), xpn are first
|
||||
derivative values of the function (x’, y’, phi’) and xppn are
|
||||
the second derivative values of the function (x’‘, y’‘, phi’‘).
|
||||
The return values are (rm, rmx, rmxpp, rd, rdx, rdxp, rk, rkx,
|
||||
f)</p></li>
|
||||
</ul>
|
||||
</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>function</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>Model</p>
|
||||
<blockquote>
|
||||
<div><div class="math notranslate nohighlight">
|
||||
\[\begin{split}\begin{vmatrix}
|
||||
\ddot{x} + \cos(\varphi)\ddot{\varphi} + 2d \,\dot{x} - \sin(\varphi) \,\dot{\varphi}^2 + 2d\cos(\varphi)\, \dot{\varphi} + x &=&
|
||||
0 \\
|
||||
\ddot{y} - \sin(\varphi)\ddot{\varphi} + 2d \,\dot{y} - \cos(\varphi) \,\dot{\varphi}^2 + 2d\sin(\varphi)\, \dot{\varphi} + y &=&
|
||||
0 \\
|
||||
\ddot{\varphi} + e\,y\sin(\varphi) - e\,x\cos(\varphi) &=& t
|
||||
\end{vmatrix}
|
||||
\\
|
||||
\begin{vmatrix}
|
||||
\ddot{x} + \cos(\varphi)\ddot{\varphi} &=&
|
||||
-2d \,\dot{x} + \sin(\varphi) \,\dot{\varphi}^2 -2d\cos(\varphi)\, \dot{\varphi} - x \\
|
||||
\ddot{y} - \sin(\varphi)\ddot{\varphi} &=&
|
||||
-2d \,\dot{y} + \cos(\varphi) \,\dot{\varphi}^2 -2d\sin(\varphi)\, \dot{\varphi} - y \\
|
||||
\ddot{\varphi} &=& t - e\,y\sin(\varphi) + e\,x\cos(\varphi)
|
||||
\end{vmatrix}\end{split}\]</div>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}\mathbf{M}(\mathbf{x}) \cdot \mathbf{\ddot{x}} &=
|
||||
\mathbf{f}(\mathbf{x}, \mathbf{\dot{x}})
|
||||
\\
|
||||
\begin{bmatrix}
|
||||
1 & 0 & \cos \varphi \\
|
||||
0 & 1 & -\sin \varphi \\
|
||||
0 & 0 & 1
|
||||
\end{bmatrix} \cdot
|
||||
\begin{bmatrix}
|
||||
\ddot{x} \\ \ddot{y} \\ \ddot{\varphi}
|
||||
\end{bmatrix} &= \begin{bmatrix}
|
||||
-2d \,\dot{x} + \sin(\varphi) \,\dot{\varphi}^2 -2d\cos(\varphi)\, \dot{\varphi} - x \\
|
||||
-2d \,\dot{y} + \cos(\varphi) \,\dot{\varphi}^2 -2d\sin(\varphi)\, \dot{\varphi} - y \\
|
||||
t - e\,y\sin(\varphi) + e\,x\cos(\varphi)
|
||||
\end{bmatrix}\end{split}\]</div>
|
||||
</div></blockquote>
|
||||
<p>returns</p>
|
||||
<blockquote>
|
||||
<div><div class="math notranslate nohighlight">
|
||||
\[\begin{split}x_1 &= x &\quad x_4 &= \dot{x}_1 = \dot{x} &\quad \dot{x}_4 &= \ddot{x} \\
|
||||
x_2 &= y &\quad x_5 &= \dot{x}_2 = \dot{y} &\quad \dot{x}_5 &= \ddot{y} \\
|
||||
x_3 &= \varphi &\quad x_6 &= \dot{x}_3 = \dot{\varphi} &\quad \dot{x}_6 &= \ddot{\varphi} \\\end{split}\]</div>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}\dot{q} &= f(x) \\
|
||||
\begin{bmatrix}
|
||||
\dot{x}_1 \\
|
||||
\dot{x}_2 \\
|
||||
\dot{x}_3 \\
|
||||
\dot{x}_4 \\
|
||||
\dot{x}_5 \\
|
||||
\dot{x}_6
|
||||
\end{bmatrix} &= \begin{bmatrix}
|
||||
x_4 \\
|
||||
x_5 \\
|
||||
x_6 \\
|
||||
\begin{bmatrix}
|
||||
1 & 0 & \cos x_3 \\
|
||||
0 & 1 & -\sin x_3 \\
|
||||
0 & 0 & 1
|
||||
\end{bmatrix}^{-1} \cdot \begin{bmatrix}
|
||||
-2d \,x_4 + \sin(x_3) \,x_6^2 -2d\cos(x_3)\, x_6 - x_1 \\
|
||||
-2d \,x_5 + \cos(x_3) \,x_6^2 -2d\sin(x_3)\, x_6 - x_2 \\
|
||||
t - e\,x_2\sin(x_3) + e\,x_1\cos(x_3)
|
||||
\end{bmatrix}
|
||||
\end{bmatrix}\end{split}\]</div>
|
||||
</div></blockquote>
|
||||
<p>Three explicit differential equations of order 2 reducted to a
|
||||
system of 3x2 first-order differential equations.</p>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<p><a class="reference internal" href="pylib.numerical.ode.html#pylib.numerical.ode.newmark_newtonraphson" title="pylib.numerical.ode.newmark_newtonraphson"><code class="xref py py-meth docutils literal notranslate"><span class="pre">pylib.numerical.ode.newmark_newtonraphson()</span></code></a> and
|
||||
<a class="reference internal" href="pylib.numerical.ode.html#pylib.numerical.ode.newmark_newtonraphson_mdk" title="pylib.numerical.ode.newmark_newtonraphson_mdk"><code class="xref py py-meth docutils literal notranslate"><span class="pre">pylib.numerical.ode.newmark_newtonraphson_mdk()</span></code></a></p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
|
||||
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
@@ -11,3 +11,10 @@ table.indextable tr.cap {
|
||||
position: relative;
|
||||
top: -1.5em;
|
||||
}
|
||||
/* sidebar_header is only set for normal screen size */
|
||||
@media screen and (max-width: 875px) {
|
||||
div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
|
||||
div.sphinxsidebar h3 a {
|
||||
color: #b2b2b2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,6 @@ templates_path = ['_templates']
|
||||
# This pattern also affects html_static_path and html_extra_path.
|
||||
exclude_patterns = []
|
||||
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
@@ -64,12 +63,14 @@ html_context = {
|
||||
'css_files': ['_static/custom.css'],
|
||||
}
|
||||
|
||||
# https://alabaster.readthedocs.io/en/latest/customization.html
|
||||
html_theme_options = {
|
||||
'base_bg': '#292b2e',
|
||||
'base_text': '#b2b2b2',
|
||||
'body_text': '#b2b2b2',
|
||||
'viewcode_target_bg': '#292b2e',
|
||||
'pre_bg': '#25272c',
|
||||
'code_bg': '#25272c',
|
||||
'code_text': '#b2b2b2',
|
||||
'code_hover': 'transparent',
|
||||
'sidebar_text': '#b2b2b2',
|
||||
@@ -84,6 +85,8 @@ html_theme_options = {
|
||||
'seealso_border': '#2C2C2C',
|
||||
'note_bg': '#25272c',
|
||||
'note_border': '#2C2C2C',
|
||||
'warn_bg': 'rgb(82, 0, 0)',
|
||||
'warn_border': 'rgb(170, 0, 0)',
|
||||
}
|
||||
|
||||
autodoc_default_options = {
|
||||
|
||||
7
docs/source/pylib.data_step.rst
Normal file
7
docs/source/pylib.data_step.rst
Normal file
@@ -0,0 +1,7 @@
|
||||
pylib.data\_step module
|
||||
=======================
|
||||
|
||||
.. automodule:: pylib.data_step
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
7
docs/source/pylib.data_step_std.rst
Normal file
7
docs/source/pylib.data_step_std.rst
Normal file
@@ -0,0 +1,7 @@
|
||||
pylib.data\_step\_std module
|
||||
============================
|
||||
|
||||
.. automodule:: pylib.data_step_std
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
7
docs/source/pylib.helper.rst
Normal file
7
docs/source/pylib.helper.rst
Normal file
@@ -0,0 +1,7 @@
|
||||
pylib.helper module
|
||||
===================
|
||||
|
||||
.. automodule:: pylib.helper
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
@@ -19,6 +19,8 @@ Submodules
|
||||
.. toctree::
|
||||
|
||||
pylib.data
|
||||
pylib.data_step
|
||||
pylib.data_step_std
|
||||
pylib.date
|
||||
pylib.drawblock
|
||||
pylib.function
|
||||
@@ -27,5 +29,6 @@ Submodules
|
||||
pylib.geometry2d_plot
|
||||
pylib.geometry_plot
|
||||
pylib.geometry_plot_pylab
|
||||
pylib.helper
|
||||
pylib.mathematics
|
||||
pylib.time_of_day
|
||||
|
||||
Reference in New Issue
Block a user