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

Orientation

In our previous tutorial we explored position as a preattentive feature. Specifically, we investigated how to control the location of our shapes through manipulation of the transformation matrix. However, we can do more than just change the origin (0, 0 point) of our coordinate system, we can rotate it as well! In this tutorial, we conclude Skills Lab 3 by looking at our final preattentive feature: orientation.
Contents

Rotate

We will start by doing a global rotation. This also changes the transformation matrix. However, give this a run and you might notice a problem.
import sketchingpy

sketch = sketchingpy.Sketch2D(500, 500)

sketch.set_rect_mode('radius')
sketch.set_angle_mode('degrees')

size = 5
for rotation in range(0, 12):
    sketch.draw_rect(200, 0, size, size)
    sketch.rotate(30)
    size += 5

sketch.show()
Our work is off the screen! Try changing the position of the squares.

Rotate and Translate

Using that first sketch as motiviation, it is common to translate prior to rotation to indicate the point around which the rotation should occur.
import sketchingpy

sketch = sketchingpy.Sketch2D(500, 500)

sketch.set_rect_mode('radius')
sketch.set_angle_mode('degrees')

def draw_at(x, y, color):
    sketch.push_transform()
    sketch.push_style()

    sketch.translate(x, y)

    sketch.set_fill(color)

    size = 5
    for rotation in range(0, 12):
        sketch.draw_rect(100, 0, size, size)
        sketch.rotate(30)
        size += 2

    sketch.pop_style()
    sketch.pop_transform()

sketch.translate(250, 250)

draw_at(0, -100, "#1b9e7750")
draw_at(-100, 100, "#d95f0250")
draw_at(100, 100, "#7570b350")

sketch.show()
It is also common to push and pop within a function so that you can keep track of what transforms have occurred.

Next

You've reached the end of Skills Lab 3! Continue on to Tutorial 8 which starts Skills Lab 4 to learn about text.
Citations
  • A. Pottinger, "Sketchingpy." Sketchingpy Project, 2024. [Online]. Available: https://sketchingpy.org/
  • C. Brewer, M Harrower, and The Pennsylvania State University, "Colorbrewer 2.0," The Pennsylvania State University, 2013. [Online]. Available: https://colorbrewer2.org/