summaryrefslogtreecommitdiffstats
path: root/funtools/doc/regalgebra.html
diff options
context:
space:
mode:
Diffstat (limited to 'funtools/doc/regalgebra.html')
-rw-r--r--funtools/doc/regalgebra.html278
1 files changed, 278 insertions, 0 deletions
diff --git a/funtools/doc/regalgebra.html b/funtools/doc/regalgebra.html
new file mode 100644
index 0000000..c31dbf7
--- /dev/null
+++ b/funtools/doc/regalgebra.html
@@ -0,0 +1,278 @@
+<!-- =defdoc regalgebra regalgebra n -->
+<HTML>
+<HEAD>
+<TITLE>Region Algebra</TITLE>
+</HEAD>
+<BODY>
+
+<!-- =section regalgebra NAME -->
+<H2><A NAME="regalgebra">RegAlgebra: Boolean Algebra on Spatial Regions</A></H2>
+
+<!-- =section regalgebra SYNOPSIS -->
+<H2>Summary</H2>
+<P>
+This document describes the boolean arithmetic defined for
+region expressions.
+
+<!-- =section regalgebra DESCRIPTION -->
+<H2>Description</H2>
+<P>
+When defining a region, several shapes can be combined using boolean
+operations. The boolean operators are (in order of precedence):
+<PRE>
+ Symbol Operator Associativity
+ ------ -------- -------------
+ ! not right to left
+ & and left to right
+ ^ exclusive or left to right
+ | inclusive or left to right
+
+</PRE>
+For example, to create a mask consisting of a large circle with a
+smaller box removed, one can use the <B>and</B> and <B>not</B>
+operators:
+<PRE>
+ CIRCLE(11,11,15) & !BOX(11,11,3,6)
+</PRE>
+
+and the resulting mask is:
+<PRE>
+ 1234567890123456789012345678901234567890
+ ----------------------------------------
+ 1:1111111111111111111111..................
+ 2:1111111111111111111111..................
+ 3:11111111111111111111111.................
+ 4:111111111111111111111111................
+ 5:111111111111111111111111................
+ 6:1111111111111111111111111...............
+ 7:1111111111111111111111111...............
+ 8:1111111111111111111111111...............
+ 9:111111111...1111111111111...............
+ 10:111111111...1111111111111...............
+ 11:111111111...1111111111111...............
+ 12:111111111...1111111111111...............
+ 13:111111111...1111111111111...............
+ 14:111111111...1111111111111...............
+ 15:1111111111111111111111111...............
+ 16:1111111111111111111111111...............
+ 17:111111111111111111111111................
+ 18:111111111111111111111111................
+ 19:11111111111111111111111.................
+ 20:1111111111111111111111..................
+ 21:1111111111111111111111..................
+ 22:111111111111111111111...................
+ 23:..11111111111111111.....................
+ 24:...111111111111111......................
+ 25:.....11111111111........................
+ 26:........................................
+ 27:........................................
+ 28:........................................
+ 29:........................................
+ 30:........................................
+ 31:........................................
+ 32:........................................
+ 33:........................................
+ 34:........................................
+ 35:........................................
+ 36:........................................
+ 37:........................................
+ 38:........................................
+ 39:........................................
+ 40:........................................
+</PRE>
+A three-quarter circle can be defined as:
+<PRE>
+ CIRCLE(20,20,10) & !PIE(20,20,270,360)
+</PRE>
+
+and looks as follows:
+<PRE>
+
+ 1234567890123456789012345678901234567890
+ ----------------------------------------
+ 1:........................................
+ 2:........................................
+ 3:........................................
+ 4:........................................
+ 5:........................................
+ 6:........................................
+ 7:........................................
+ 8:........................................
+ 9:........................................
+ 10:........................................
+ 11:...............111111111................
+ 12:..............11111111111...............
+ 13:............111111111111111.............
+ 14:............111111111111111.............
+ 15:...........11111111111111111............
+ 16:..........1111111111111111111...........
+ 17:..........1111111111111111111...........
+ 18:..........1111111111111111111...........
+ 19:..........1111111111111111111...........
+ 20:..........1111111111111111111...........
+ 21:..........1111111111....................
+ 22:..........1111111111....................
+ 23:..........1111111111....................
+ 24:..........1111111111....................
+ 25:...........111111111....................
+ 26:............11111111....................
+ 27:............11111111....................
+ 28:..............111111....................
+ 29:...............11111....................
+ 30:........................................
+ 31:........................................
+ 32:........................................
+ 33:........................................
+ 34:........................................
+ 35:........................................
+ 36:........................................
+ 37:........................................
+ 38:........................................
+ 39:........................................
+ 40:........................................
+</PRE>
+Two non-intersecting ellipses can be made into the same region:
+<PRE>
+ ELL(20,20,10,20,90) | ELL(1,1,20,10,0)
+</PRE>
+
+and looks as follows:
+<PRE>
+ 1234567890123456789012345678901234567890
+ ----------------------------------------
+ 1:11111111111111111111....................
+ 2:11111111111111111111....................
+ 3:11111111111111111111....................
+ 4:11111111111111111111....................
+ 5:1111111111111111111.....................
+ 6:111111111111111111......................
+ 7:1111111111111111........................
+ 8:111111111111111.........................
+ 9:111111111111............................
+ 10:111111111...............................
+ 11:...........11111111111111111............
+ 12:........111111111111111111111111........
+ 13:.....11111111111111111111111111111......
+ 14:....11111111111111111111111111111111....
+ 15:..11111111111111111111111111111111111...
+ 16:.1111111111111111111111111111111111111..
+ 17:111111111111111111111111111111111111111.
+ 18:111111111111111111111111111111111111111.
+ 19:111111111111111111111111111111111111111.
+ 20:111111111111111111111111111111111111111.
+ 21:111111111111111111111111111111111111111.
+ 22:111111111111111111111111111111111111111.
+ 23:111111111111111111111111111111111111111.
+ 24:.1111111111111111111111111111111111111..
+ 25:..11111111111111111111111111111111111...
+ 26:...11111111111111111111111111111111.....
+ 27:.....11111111111111111111111111111......
+ 28:.......111111111111111111111111.........
+ 29:...........11111111111111111............
+ 30:........................................
+ 31:........................................
+ 32:........................................
+ 33:........................................
+ 34:........................................
+ 35:........................................
+ 36:........................................
+ 37:........................................
+ 38:........................................
+ 39:........................................
+ 40:........................................
+</PRE>
+You can use several boolean operations in a single region expression,
+to create arbitrarily complex regions. With the important exception
+below, you can apply the operators in any order, using parentheses if
+necessary to override the natural precedences of the operators.
+
+<P>
+NB: Using a panda shape is always much more efficient than explicitly
+specifying "pie & annulus", due to the ability of panda to place a
+limit on the number of pixels checked in the pie shape. If you are
+going to specify the intersection of pie and annulus, use panda
+instead.
+
+<P>
+As described in "help regreometry", the <B>PIE</B> slice goes to the
+edge of the field. To limit its scope, <B>PIE</B> usually is is
+combined with other shapes, such as circles and annuli, using boolean
+operations. In this context, it is worth noting that that there is a
+difference between <B>-PIE</B> and <B>&!PIE</B>. The former is a
+global exclude of all pixels in the <B>PIE</B> slice, while the latter
+is a local excludes of pixels affecting only the region(s) with which
+the <B>PIE</B> is combined. For example, the following region uses
+<B>&!PIE</B> as a local exclude of a single circle. Two other circles
+are also defined and are unaffected by the local exclude:
+<PRE>
+
+ CIRCLE(1,8,1)
+ CIRCLE(8,8,7)&!PIE(8,8,60,120)&!PIE(8,8,240,300)
+ CIRCLE(15,8,2)
+
+ 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ - - - - - - - - - - - - - - -
+ 15: . . . . . . . . . . . . . . .
+ 14: . . . . 2 2 2 2 2 2 2 . . . .
+ 13: . . . 2 2 2 2 2 2 2 2 2 . . .
+ 12: . . 2 2 2 2 2 2 2 2 2 2 2 . .
+ 11: . . 2 2 2 2 2 2 2 2 2 2 2 . .
+ 10: . . . . 2 2 2 2 2 2 2 . . . .
+ 9: . . . . . . 2 2 2 . . . . 3 3
+ 8: 1 . . . . . . . . . . . . 3 3
+ 7: . . . . . . 2 2 2 . . . . 3 3
+ 6: . . . . 2 2 2 2 2 2 2 . . . .
+ 5: . . 2 2 2 2 2 2 2 2 2 2 2 . .
+ 4: . . 2 2 2 2 2 2 2 2 2 2 2 . .
+ 3: . . . 2 2 2 2 2 2 2 2 2 . . .
+ 2: . . . . 2 2 2 2 2 2 2 . . . .
+ 1: . . . . . . . . . . . . . . .
+
+</PRE>
+Note that the two other regions are not affected by the <B>&!PIE</B>,
+which only affects the circle with which it is combined.
+
+<P>
+On the other hand, a <B>-PIE</B> is an global exclude that does
+affect other regions with which it overlaps:
+<PRE>
+
+ CIRCLE(1,8,1)
+ CIRCLE(8,8,7)
+ -PIE(8,8,60,120)
+ -PIE(8,8,240,300)
+ CIRCLE(15,8,2)
+
+ 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ - - - - - - - - - - - - - - -
+ 15: . . . . . . . . . . . . . . .
+ 14: . . . . 2 2 2 2 2 2 2 . . . .
+ 13: . . . 2 2 2 2 2 2 2 2 2 . . .
+ 12: . . 2 2 2 2 2 2 2 2 2 2 2 . .
+ 11: . . 2 2 2 2 2 2 2 2 2 2 2 . .
+ 10: . . . . 2 2 2 2 2 2 2 . . . .
+ 9: . . . . . . 2 2 2 . . . . . .
+ 8: . . . . . . . . . . . . . . .
+ 7: . . . . . . 2 2 2 . . . . . .
+ 6: . . . . 2 2 2 2 2 2 2 . . . .
+ 5: . . 2 2 2 2 2 2 2 2 2 2 2 . .
+ 4: . . 2 2 2 2 2 2 2 2 2 2 2 . .
+ 3: . . . 2 2 2 2 2 2 2 2 2 . . .
+ 2: . . . . 2 2 2 2 2 2 2 . . . .
+ 1: . . . . . . . . . . . . . . .
+
+</PRE>
+The two smaller circles are entirely contained within the two exclude
+<B>PIE</B> slices and therefore are excluded from the region.
+
+<!-- =section regalgebra SEE ALSO -->
+<!-- =text See funtools(n) for a list of Funtools help pages -->
+<!-- =stop -->
+
+<P>
+<A HREF="./help.html">Go to Funtools Help Index</A>
+
+<H5>Last updated: November 17, 2005</H5>
+
+</BODY>
+</HTML>