aboutsummaryrefslogtreecommitdiffstats
path: root/doc/expert/pre_rota
diff options
context:
space:
mode:
Diffstat (limited to 'doc/expert/pre_rota')
-rw-r--r--doc/expert/pre_rota57
1 files changed, 57 insertions, 0 deletions
diff --git a/doc/expert/pre_rota b/doc/expert/pre_rota
new file mode 100644
index 0000000..00e28ff
--- /dev/null
+++ b/doc/expert/pre_rota
@@ -0,0 +1,57 @@
+@Section
+ @Title { "@Rotate" }
+ @Tag { rotate }
+@Begin
+@PP
+rotate.sym @Index { @@Rotate symbol }
+rotation @Index { Rotation of object }
+The @@Rotate symbol will rotate its
+right parameter counterclockwise an amount given in degrees (positive or
+negative) by its left parameter. For example,
+@ID @Code {
+"30d @Rotate { hello, world }"
+}
+has result
+@ID {
+30d @Rotate { hello, world }
+}
+Before rotating the object, @@OneCol and @@OneRow are applied to it. The
+result is a rectangle whose marks pass through the point where the
+original marks crossed:
+@ID {
+ @ShowMarks
+ { 0.6c @Wide 0.3c @High ^| 2.2c @Wide ^/ 0.2c @High }
+
+&4m => &4m
+
+ @ShowMarks
+ {
+ 30d @Rotate
+ { @ShowMarks
+ { 0.6c @Wide 0.3c @High ^| 2.2c @Wide ^/ 0.2c @High }
+ }
+ }
+}
+As this example shows, rotation by an angle other than a multiple of
+ninety degrees introduces quite a lot of white space. So, for example, the
+result of
+@ID {
+@Code { "-30d" "@Rotate" 30d "@Rotate" } @I object
+}
+is a much larger object than {@I object}, despite the fact that one
+rotation cancels the other.
+@PP
+Rotation of objects containing receptive and recursive symbols is
+permitted, but for angles other than multiples of ninety degrees it is
+best to make the size of the rotated object clear with @@Wide and
+@@High symbols:
+@ID @Code {
+"30d @Rotate 5i @Wide 4i @High"
+"{ //1i @TextPlace"
+" //1i"
+"}"
+}
+This is because for angles other than multiples of ninety degrees the
+space available for @Code "@TextPlace" to occupy is indeterminate, and
+the result is poor.
+@End @Section