Geen omschrijving

Gilbert Brault 8e2dbe1339 Merge branch 'master' of https://github.com/gbrault/jupytersketcher 5 jaren geleden
.TODO 9fcdc20499 updates 11 jaren geleden
.ipynb_checkpoints e58432ecd8 added mkdocs User Guide 5 jaren geleden
.vscode 410eb7dd5b user guide: reference 5 jaren geleden
doc 95f559c5a0 adding extra verification in sketch parsing 5 jaren geleden
examples 79b479e571 tuning 5 jaren geleden
fig db2357f81f updates 10 jaren geleden
jupysketch-doc e52bd3e02b user guide fien tuning... 5 jaren geleden
misc 74a9ae8161 updates 11 jaren geleden
notebooks 996b3e9363 design notes 5 jaren geleden
pysketcher 95f559c5a0 adding extra verification in sketch parsing 5 jaren geleden
.gitignore 45fc84e717 update .gitignore 5 jaren geleden
.nojekyll 896cd26ac7 First commit 13 jaren geleden
README.md fcd52a2ab3 Update README.md 5 jaren geleden
README.sh 4c027bbe79 updates 11 jaren geleden
apt.txt 6200a97f2e Update apt.txt 5 jaren geleden
postBuild 6b78009167 Update postBuild 5 jaren geleden
pyvenv.cfg 9b4eab36ff issue 5 jaren geleden
requirements.txt 1d51dcab32 Update requirements.txt 5 jaren geleden
setup.py 67b41aa3ad updates, debugging vehicle 13 jaren geleden

README.md

jupytersketcher

Tool for creating sketches of physics problems in terms of Python code. This work is based upon pysketcher originally developped by HPL see Wikipedia.

Note: Use the term Pysketcher as jupytersketcher in this documentation

  • current Binder
  • morning snapshot Binder

Differences compared to Pysketcher

The main goals are:

  • make a Jupyter Notebook and Lab compatible version. We do not plan to support the standalone version
  • allow 'simulation' inside Jupyter
  • define a yaml simplified syntax to create sketches
  • increment basic classes to support our goals

Install

use pip install git+https://<server url> as no release in PyPI yet (nor planned)

Purpose

Pysketcher can typically be used to draw figures like

Such figures can easily be interactively made using a lot of drawing programs. A Pysketcher figure, however, is defined trough computer code. This gives a great advantage: geometric features can be parameterized in terms of variables. Geometric variations are then trivially generated. Also, complicated figures can be built as a hierarchy of simpler elements. The figure can easily be made to move according to, e.g., a solution of a differential equation.

Here is a very simple figure that illustrates how geometric features are parameterized by variables (H, R, L, etc.):

One can then quickly change parameters, below to R=0.5; L=5; H=2 and R=2; L=7; H=1, and get new figures that would be tedious to draw manually in an interactive tool.

Another major feature of Pysketcher is the ability to let the sketch be dynamic and make an animation of the time evolution. Here is an example of a very simple vehicle on a bumpy road, where the solution of a differential equation (upper blue line) is fed back to the sketch to make a vertical displacement of the spring and other objects in the vehicle. View animation (the animation was created by this Pysketcher script).

Tutorial

For an introduction to Pysketcher, see the tutorial in HTML, Sphinx, or PDF format (or a simplified version of the tutorial in Chapter 9 in A Primer on Scientific Programming with Python, 4th-5th edition, by H. P. Langtangen, Springer, 2014-2016).

Examples

See the examples directory for some examples beyond the more basic ones in the tutorial. For example, an elastic beam can be sketched as

The sketch was created by the program examples/beam2.py.

Here is an illustration of the idea of numerical integration:

As shown in the figure-generating program examples/integral_comic_strip.py, this illustration can easily be turned into an XKCD type of comic strip:

Technology

Pysketcher applies Matplotlib to make the drawings, but it should be quite straightforward to replace the backend MatplotlibDraw.py by similar code utilizing TikZ or another plotting package.

The core of the Pysketcher software is a thin layer basically constructing a tree structure of elements in the sketch. A lot of classes are offered for different type of basic elements, such as Circle, Rectangle, Text, Text with arrow, Force, arbitrary curve, etc. Complicated figures can be created by sticking one figure into another (i.e., hierarchical building of figures by sticking one tree structure into another).

Install

Pysketcher is pure Python code and works with Python version 2 and 3. Just do the standard

Terminal> sudo python setup.py install

Pysketcher demands installation of the following packages:

  • Matplotlib (sudp pip install matplotlib)
  • Future (sudo pip install future)
  • NumPy (sudo pip install numpy)

The Spline object in Pysketcher also requires SciPy (sudo pip install scipy).

Citation

If you use Pysketcher and want to cite it, you can either cite this web site or the book that has the original documentation of the tool.

BibTeX format:

@book{Langtangen_Primer_2016,
  title = {A Primer on Scientific Programming With {P}ython},
  author = {H. P. Langtangen},
  year = {2016},
  publisher = {Springer},
  edition = {Fifth},
}

@misc{Pysketcher,
  title = {{P}ysketcher: {D}rawing tool for making sketches},
  author = {H. P. Langtangen},
  url = {https://github.com/hplgit/pysketcher},
  key = {Pysketcher},
  note = {\url{https://github.com/hplgit/pysketcher}},
  year = 2016,
}

Publish format:

* books
** A Primer on Scientific Programming With {P}ython
   key:       Langtangen_Primer_2016
   author:    H. P. Langtangen
   year:      2016
   publisher: Springer
   status:    published
   edition:   Fifth
   entrytype: book
* misc
** {P}ysketcher: {D}rawing tool for making sketches
   key:       Pysketcher
   author:    H. P. Langtangen
   url:       https://github.com/hplgit/pysketcher
   status:    published
   sortkey:   Pysketcher
   note:      \url{https://github.com/hplgit/pysketcher}
   year:      2016

History

Pysketcher was first constructed as a powerful educational example on object-oriented programming for the book A Primer on Scientific Programming With Python, but the tool quickly became so useful for the author that it was further developed and heavily used for creating figures in other documents.