NAME¶
RegAlgebra - Boolean Algebra on Spatial Regions
SYNOPSIS¶
This document describes the boolean arithmetic defined for region expressions.
DESCRIPTION¶
When defining a region, several shapes can be combined using boolean operations.
The boolean operators are (in order of precedence):
Symbol Operator Associativity
------ -------- -------------
! not right to left
& and left to right
^ exclusive or left to right
⎪ inclusive or left to right
For example, to create a mask consisting of a large circle with a smaller box
removed, one can use the
and and
not operators:
CIRCLE(11,11,15) & !BOX(11,11,3,6)
and the resulting mask is:
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:........................................
A three-quarter circle can be defined as:
CIRCLE(20,20,10) & !PIE(20,20,270,360)
and looks as follows:
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:........................................
Two non-intersecting ellipses can be made into the same region:
ELL(20,20,10,20,90) ⎪ ELL(1,1,20,10,0)
and looks as follows:
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:........................................
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.
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.
As described in "help regreometry", the
PIE slice goes to the
edge of the field. To limit its scope,
PIE 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
\-PIE and
&!PIE. The former is a global exclude of all
pixels in the
PIE slice, while the latter is a local excludes of pixels
affecting only the region(s) with which the
PIE is combined. For
example, the following region uses
&!PIE as a local exclude of a
single circle. Two other circles are also defined and are unaffected by the
local exclude:
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: . . . . . . . . . . . . . . .
Note that the two other regions are not affected by the
&!PIE, which
only affects the circle with which it is combined.
On the other hand, a
\-PIE is an global exclude that does affect other
regions with which it overlaps:
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: . . . . . . . . . . . . . . .
The two smaller circles are entirely contained within the two exclude
PIE
slices and therefore are excluded from the region.
SEE ALSO¶
See
funtools(7) for a list of Funtools help pages