A coordinate system class defining a two-dimensional polar grid. It assigns inward
, outward
, clockwise
, and counterclockwise
properties to patches, and moveInward()
, moveOutward()
, moveClockwise()
, and moveCounterclockwise()
methods to non-patch agents, and also defines distance and angle functions on a polar grid.
Patches are addressed by an θ,r
index, both int
s, where θ
is the number of the patch starting at north, and moving clockwise, and r
is the number of patches outward from the center. There will thus be θ
×r
patches. Coordinates are defined similarly, with the angle dimension ranging from 0 to θ
(patch coordinate), rather than 0 to 2π (angle coordinate).
This class subclasses PatchesRect
since it shares the quality that columns have equal length. It should not be initialized in user code; it is initialized automatically with model.spatial(geometry='polar')
.
Initialization Parameters
dim — tuple(int, int), required
The
θ,r
dimensions of the grid.θ
is the number of patches around;r
is the number of patches out.
Methods
Click a method name for more detailed documentation.
at( x, y )
Returns the patch at the specified coordinate.
revive( coords )
Reinstates a dead patch.
neighbors( model )
Establishes the spatial network among the patches after initialization. This function is registered automatically as a
modelPostSetup
hook during spatial setup and should not be called by user code.place( patch )
Organizes
Patch
objects within the Patches object. Takes a patch object when created byAgents.initialize()
, places it in the appropriate list, and assigns itsposition
property.
Object Properties
offmap — bool
Whether agents can enter areas of the map with no patch. If
False
and an agent tries tomove()
to a coordinate with no patch, the move will fail and a warning will be raised. Set from theoffmap
argument ofmodel.spatial()
.Initial value: False
boundaries — tuple(tuple(int,int), tuple(int,int))
A tuple of tuples with the maximum and minimum coordinates that agents can take, given the grid dimensions.
((xmin, xmax), (ymin, ymax))
.corners — bool|float
Whether the
'spatial'
network includes patches connected only by a corner. Corresponds to thecorners
argument ofmodel.spatial()
.Initial value: False
wrap — tuple(bool, bool)
Whether each axis wraps around at the boundary. Fixed to
(True, False)
in polar geometry, since agents can move continuously around but will not wrap from the edge to the center.dim — tuple(int, int)
The
θ,r
dimensions of the grid.θ
is the number of patches around;r
is the number of patches out.
Static Properties
geometry — str
The name of the patch geometry, to be set by subclasses.
Initial value: ''
Notes and Examples