SFCurve solely deals with space-filling curves, and their application to indexing N-dimensional data, with a focus on 2- and 3-dimensional spaces. This includes functionality to perform bidirectional transformations between the 1-dimensional space of the index and the N-dimensional space of the data, for a single index or a range of indices.
The SFCurve library will support a clean API to its interface that is idiomatic to the Scala language. In addition, a Java API will be developed so that Java applications will be fully supported in their use of SFCurve. Other APIs for JVM-based languages may be developed.
The intention is to limit the scope of the SFCurve library, for two reasons. The first is to allow the library to concentrate on becoming a robust and optimized set of space filling curve implementations, so that extraneous code and extra features that belong in other libraries do not detract from a focused effort. The second is to minimize the external dependencies of this library. Any developer interested in using this library should be able to do so without importing a set of unwanted functionality and external dependencies. The modular nature of this library will mean that more projects will be able to use it to solve the specific problems of indexing against a space filling curve. Another benefit of minimizing dependencies is that less code and dependencies means less IP concerns.