I have been following this whole discussion, I think this all looks really good. Hamiltonian has always made no sense to me (maybe vonNeumann vs. Moore? I think Square vs. Diamond is still the most intuitive).
The overhaul of neighborhood functions in the grids gives us an opportunity to do some renaming of the new functions. Issues:
- Sometimes we use "Position" (MASON terminology for a point on-screen) when we mean "Location" (MASON terminology for a location in a field), and that should be rectified
- "Max" and "Hamiltonian" are strange names. Hamiltonian in particular is a term borrowed, I believe, from Repast, and I can't see any justification for it. I am inclined to use "Square" and "Diamond", though this means we have to use different terms for the 3D case.
- "Neighbors" should refer to objects, not locations.
- It'd be nice if the names were shorter.
So here is a possible renaming. I'm just throwing it out here to get some feedback.
Sean
IN GRID2D and GRID3D AND SUBCLASSES:
getNeighborsMaxDistance(...locations...) -> getLocationsInSquare
getNeighborsHamiltonianDistance(...locations...) -> getLocationsInDiamond
getNeighborsHexagonalDistance(...locations...) -> getLocationsInHexagon
IN OBJECTGRID2D, DENSEGRID2D, AND SPARSEGRID2D:
getNeighborsMaxDistance(...objects...) -> getNeighborsInSquare
getNeighborsHamiltonianDistance(...objects...) -> getNeighborsInDiamond
getNeighborsHexagonalDistance(...objects...) -> getNeighborsInHexagon
getNeighborsAndCorrespondingPositionsMaxDistance(...) -> getNeighborsAndCorrespondingLocationsInSquare
getNeighborsAndCorrespondingPositionsHamitonianDistance(...) -> getNeighborsAndCorrespondingLocationsInDiamond
getNeighborsAndCorrespondingPositionsHexagonalDistance(...) -> getNeighborsAndCorrespondingLocationsInHexagon
IN CONTINUOUS2D and CONTINUOUS3D:
getNearestNeighbors(...)
getObjectsExactlyWithinDistance(...) -> getNeighborsExactlyWithinDistance(...)
getObjectsWithinDistance(...) -> getNeighborsWithinDistance(...)