Aucune description

gbrault 834d4fb9af Update 'README.md' il y a 5 ans
.TODO 9fcdc20499 updates il y a 11 ans
.vscode a32d92c248 update il y a 5 ans
doc 5fdc909f90 added a sketch yaml format and reader il y a 5 ans
examples 79b479e571 tuning il y a 5 ans
fig db2357f81f updates il y a 10 ans
misc 74a9ae8161 updates il y a 11 ans
notebooks f382c67fa2 added sketch2PNG il y a 5 ans
pysketcher f382c67fa2 added sketch2PNG il y a 5 ans
.gitignore b1871ccaac updates il y a 10 ans
.nojekyll 896cd26ac7 First commit il y a 13 ans
2017_Book_FiniteDifferenceComputingWithP.pdf a32d92c248 update il y a 5 ans
README.do.txt 13c22af43a updates il y a 9 ans
README.md 834d4fb9af Update 'README.md' il y a 5 ans
README.sh 4c027bbe79 updates il y a 11 ans
setup.py 67b41aa3ad updates, debugging vehicle il y a 13 ans

README.do.txt

======= Pysketcher =======

Tool for creating sketches of physics problems in terms of Python code.

===== Purpose =====

Pysketcher can typically be used to draw figures like

FIGURE: [doc/src/tut/fig-tut/wheel_on_inclined_plane, width=600 frac=0.6]

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.):

FIGURE: [doc/src/tut/fig-tut/vehicle0_dim, width=600 frac=0.6]

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.

FIGURE: [doc/src/tut/fig-tut/vehicle_v23, width=800]

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": "http://hplgit.github.io/bumpy/doc/src/mov-bumpy/m2_k1_5_b0_2/index.html" (the animation was created by
"this Pysketcher script": "https://github.com/hplgit/bumpy/blob/master/doc/src/fig-bumpy/bumpy_road_fig.py").

FIGURE: [http://hplgit.github.io/bumpy/doc/src/mov-bumpy/m2_k1_5_b0_2/tmp_frame_0030.png, width=600]


===== Tutorial =====

For an introduction to Pysketcher, see the tutorial in "HTML": "http://hplgit.github.io/pysketcher/doc/pub/tutorial/pysketcher.html", "Sphinx": "http://hplgit.github.io/pysketcher/doc/pub/tutorial/html/index.html", or "PDF": "http://hplgit/github.io/pysketcher/doc/pub/tutorial/pysketcher.pdf" format (or a simplified version of
the tutorial in Chapter 9 in "A Primer on Scientific Programming with Python": "http://www.amazon.com/Scientific-Programming-Computational-Science-Engineering/dp/3642549586/ref=sr_1_2?s=books&ie=UTF8&qid=1407225588&sr=1-2&keywords=langtangen", 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

FIGURE: [fig/beam2_3, width=600 frac=0.8]

The sketch was created by the program "`examples/beam2.py`": "https://github.com/hplgit/pysketcher/tree/master/examples/beam2.py".

Here is an illustration of the idea of numerical integration:

FIGURE: [fig/integral_noncomic_strip, width=800 frac=1]

As shown in the figure-generating program "`examples/integral_comic_strip.py`": "https://github.com/hplgit/pysketcher/tree/master/examples/integral_comic_strip.py",
this illustration can easily be turned into an "XKCD": "http://xkcd.com" type of comic strip:

FIGURE: [fig/integral_comic_strip, width=800 frac=1]

===== 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

!bc sys
Terminal> sudo python setup.py install
!ec

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:

!bc
@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,
}
!ec

Publish format:

!bc
* 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
!ec

===== 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.