| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- ======= Basic shapes =======
- This section presents many of the basic shapes in Pysketcher:
- `Axis`, `Distance_wText`, `Rectangle`, `Triangle`, `Arc`,
- `Spring`, `Dashpot`, and `Wavy`.
- Each shape is demonstrated with a figure and a
- unit test that shows how the figure is constructed in Python code.
- These demos rely heavily on the method `draw_dimensions` in
- the shape classes, which annotates the basic drawing of the shape
- with the various geometric parameters that govern the shape.
- ===== Axis =====
- The `Axis` object gives the possibility draw a single axis to
- notify a coordinate system. Here is an example where we
- draw $x$ and $y$ axis of three coordinate systems of different
- rotation:
- FIGURE: [fig-tut/Axis, width=500 frac=0.7]
- The corresponding code looks like this:
- @@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Axis@drawing_tool.savefig\('tmp_Axis'\)
- ===== Distance with text =====
- The object `Distance_wText` is used to display an arrow, to indicate
- a distance in a sketch, with an additional text in the middle of the arrow.
- The figure
- FIGURE: [fig-tut/Distance_wText, width=500 frac=0.7]
- was produced by this code:
- @@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Distance_wText@drawing_tool.savefig\('tmp_Distance
- Note the use of `Text_wArrow` to write an explaining text with an
- associated arrow, here used to explain how
- the `text_spacing` and `alignment` arguments can be used to adjust
- the appearance of the text that goes with the distance arrow.
- ===== Rectangle =====
- FIGURE: [fig-tut/Rectangle, width=500 frac=0.7]
- The above figure can be produced by the following code.
- @@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Rectangle@drawing_tool.savefig\('tmp_Rectangle
- Note that the `draw_dimension` method adds explanation of dimensions and various
- important argument in the construction of a shape. It adapts the annotations
- to the geometry of the current shape.
- ===== Triangle =====
- FIGURE: [fig-tut/Triangle, width=500 frac=0.7]
- The code below produces the figure.
- @@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Triangle@drawing_tool.savefig\('tmp_Triangle
- Here, the `draw_dimension` method writes the name of the corners at the
- position of the corners, which does not always look nice (the present figure
- is an example). For a high-quality sketch one would add some spacing
- to the location of the p1, p2, and even p3 texts.
- ===== Arc =====
- FIGURE: [fig-tut/Arc, width=400 frac=0.5]
- An arc like the one above is produced by
- @@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Arc@drawing_tool.savefig\('tmp_Arc
- ===== Spring =====
- FIGURE: [fig-tut/Spring, width=800 frac=1]
- The code for making these two springs goes like this:
- @@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Spring@drawing_tool.savefig\('tmp_Spring
- ===== Dashpot =====
- FIGURE: [fig-tut/Dashpot, width=600 frac=0.8]
- This dashpot is produced by
- @@@CODE ../../../pysketcher/tests/test_pysketcher.py fromto: def test_Dashpot@drawing_tool.savefig\('tmp_Dashpot
- ===== Wavy =====
- Looks strange. Fix x axis.
- ===== Stochastic curves =====
- The `StochasticWavyCurve` object offers three precomputed
- graphics that have a random variation:
- FIGURE: [fig-tut/StochasticWavyCurve.png, width=600 frac=1]
- The usage is simple. The construction
- !bc pycod
- curve = StochasticWavyCurve(curve_no=1, percentage=40)
- !ec
- picks the second curve (the three are numbered 0, 1, and 2),
- and the first 40% of that curve. In case one desires another extent
- of the axis, one can just scale the coordinates directly as these
- are stored in the arrays `curve.x[curve_no]` and
- `curve.y[curve_no]`.
|