with-rotation

with-translation

with-rotation

Arguments
[rotation & body]
Docstring
Performs body with rotation, restores current transformation on exit.
Accepts a vector [angle] or [angle x y z].

When 4 arguments provides it produces a rotation of angle degrees
around the vector x y z. Check examples for to better understand.
This rotation follows the right-hand rule, so if the vector x y z points
toward the user, the rotation will be counterclockwise.

Example:
  (with-rotation [angle]
    (vertex 1 2))
Works only inside sketch functions?
Yes
Original Processing method
None. It is present only in Quil.
Example
(q/background 255)
(q/stroke 0)
; set camera and draw XYZ axis
(q/camera 200 200 200 0 0 0 0 0 -1)
(q/line 0 0 0 100 0 0)
(q/line 0 0 0 0 100 0)
(q/line 0 0 0 0 0 100)
(q/fill 0)
(q/text "x" 100 0 0)
(q/text "y" 0 100 0)
(q/text "z" 0 0 100)
(q/no-fill)
(q/stroke 255 0 0)
; draw box without rotation
(q/box 50)
; draw box with 45° rotation around 
; [1, 1, 0] vector.
(q/with-translation [100 0 0]
  (q/with-rotation [(/ q/PI 4) 1 1 0]
    (q/box 50)))
try example
(q/background 255)
(q/stroke 0)
; set camera and draw XYZ axis
(q/camera 200 200 200 0 0 0 0 0 -1)
(q/line 0 0 0 100 0 0)
(q/line 0 0 0 0 100 0)
(q/line 0 0 0 0 0 100)
(q/fill 0)
(q/text "x" 100 0 0)
(q/text "y" 0 100 0)
(q/text "z" 0 0 100)
(q/no-fill)
(q/stroke 255 0 0)
; draw box without rotation
(q/box 50)
; draw box with 45° rotation around 
; [1, 0, 0] vector.
(q/with-translation [100 0 0]
  (q/with-rotation [(/ q/PI 4) 1 0 0]
    (q/box 50)))
try example
(q/background 255)
; draw rectangle without rotation
(q/with-translation [50 50]
  (q/rect 0 0 100 200))
; draw rectangle with 45° rotation
(q/with-translation [300 50]
  (q/with-rotation [(/ q/PI 4)]
    (q/rect 0 0 100 200)))
try example

with-translation

Arguments
[translation-vector & body]
Docstring
Performs body with translation, restores current transformation on
exit.
Works only inside sketch functions?
Yes
Original Processing method
None. It is present only in Quil.
Example
(q/background 255)
(q/stroke 0)
; set camera and draw XYZ axis
(q/camera 200 200 200 0 0 0 0 0 -1)
(q/line 0 0 0 100 0 0)
(q/line 0 0 0 0 100 0)
(q/line 0 0 0 0 0 100)
(q/fill 0)
(q/text "x" 100 0 0)
(q/text "y" 0 100 0)
(q/text "z" 0 0 100)
(q/no-fill)
(q/stroke 255 0 0)
; draw 3 boxes using with-translation
(q/box 50)
(q/with-translation [100 0 0]
  (q/box 50))
(q/with-translation [100 0 100]
  (q/box 50))
try example
(q/background 255)
(q/rect 0 0 50 50)
(q/with-translation [150 0]
  (q/rect 0 0 50 50))
(q/with-translation [150 150]
  (q/rect 0 0 50 50))
try example