This tutorial is part of the skills labs within Interactive Data Science and Visualization.

Position

In our previous tutorial which explored style, giving us examples of another preattentive feature. In this tutorial, we continue Skills Lab 3 by looking at our next preattentive feature: position.
Contents

Translate

So far, we've changed the position of our figures by manipulating the parameters of the draw commands. However, we can also position glyphs by changing the coordinate space itself. Whereas typically the (0, 0) position is in the upper left part of the screen, we can change it. Let's look at an example:
import sketchingpy

sketch = sketchingpy.Sketch2D(500, 500)

sketch.set_ellipse_mode("radius")

sketch.draw_ellipse(0, 0, 5, 5)

sketch.translate(100, 100)

sketch.draw_ellipse(0, 0, 10, 10)

sketch.translate(50, 50)
sketch.translate(50, 50)

sketch.draw_ellipse(0, 0, 15, 15)

sketch.translate(100, 100)

sketch.draw_ellipse(0, 0, 20, 20)

sketch.show()
We keep drawing the ellipse at the same position but, as the coordinate system changes over time, the actual location on the screen keeps moving. Try changing some of the parameters to see how it influences the drawing! Also, try adding a translate before the first draw. How does that change the rest of the drawing?

State

Translate is changing the "transformation matrix" which modifies the default coordinate space. We can save and load previous copies of the coordinate space through push and pop.
import sketchingpy

sketch = sketchingpy.Sketch2D(500, 500)

sketch.set_ellipse_mode("radius")

sketch.translate(200, 200)

sketch.draw_ellipse(0, 0, 5, 5)

sketch.translate(100, 100)
sketch.draw_ellipse(0, 0, 10, 10)

sketch.push_transform()
sketch.translate(50, 0)
sketch.translate(50, 0)
sketch.draw_ellipse(0, 0, 15, 15)
sketch.pop_transform()

sketch.translate(50, 50)
sketch.draw_ellipse(0, 0, 20, 20)

sketch.show()
Try changing the location of the push and pop commands. What's going on? You might recognize this as language for a "stack" and that's indeed what's happening. In other words, you can imagine that each transformation matrix is on a piece of paper and we can change what is on that piece of paper through calls to transform. This piece of paper is called the state. The computer looks at the piece of paper to figure out how to change the coordinate system. Push means that we make a copy of the top piece of paper and put it on top, keeping the original below the copy. Pop means we remove the top piece of paper.

Style Stack

There's actually two states: one for the transformation matrix and another for style.
import sketchingpy

sketch = sketchingpy.Sketch2D(500, 500)

sketch.clear('#505050')
sketch.set_stroke_weight(3)

sketch.set_fill('#B2DF8A50')
sketch.set_stroke('#F0F0F0')
sketch.draw_ellipse(150, 250, 20, 20)

sketch.push_style()
sketch.clear_fill()
sketch.draw_ellipse(250, 250, 20, 20)
sketch.pop_style()

sketch.draw_ellipse(350, 250, 20, 20)

sketch.show()
What happens if these statements are re-arranged?

Next

To finish Skills Lab 3, continue on to Tutorial 7 to learn about orientation.
Citations