## 2-D and 3-D Point and Vector Utilities

#### com.srbenoit.geom

This package provides interfaces and classes to represent 2-D and 3-D points and vectors, as well as sparse array classes to manage lists of these points and vecors, and affine transformation classes to transform them efficiently. This package also provides a based vector class, representing a base point and associated vector that are treated as a unit.

BasedVector2
A simple two-dimensional based vector, combining a base point with a vector.
BasedVector3
A simple three-dimensional based vector, combining a base point with a vector.
Point2
A simple two-dimensional point.
Point2Array
An array of points that supports addition and deletion of points, but will not change the index of a point once added. That is, deleting points makes the array sparse, and adding new points may fill in gaps left by deleting points before appending to the end of the array. Storage is allocated in blocks of fixed size as needed to add points.
Point2Int
An interface for objects that can be represented by a 2-dimensional point.
Point3
A simple three-dimensional point.
Point3Array
An array of points that supports addition and deletion of points, but will not change the index of a point once added. That is, deleting points makes the array sparse, and adding new points may fill in gaps left by deleting points before appending to the end of the array. Storage is allocated in blocks of fixed size as needed to add points.
Point3Int
An interface for objects that can be represented by a 3-dimensional point.
SingularMatrixException
An exception thrown when an attempt is made to invert a singular matrix (transform).
Transform2
A transformation matrix capable representing an affine transformation and acting on vectors.
Transform3
A transformation matrix capable representing an affine transformation and acting on vectors.
Vector2
A simple two-dimensional vector.
Vector2Array
An array of vectors that supports addition and deletion of vectors, but will not change the index of a vector once added. That is, deleting vectors makes the array sparse, and adding new vectors may fill in gaps left by deleting vectors before appending to the end of the array. Storage is allocated in blocks of fixed size as needed to add vectors.
Vector2Int
An interface for objects that can be represented as 2-dimensional vectors.
Vector3
A simple three-dimensional vector.
Vector3Array
An array of vectors that supports addition and deletion of vectors, but will not change the index of a vector once added. That is, deleting vectors makes the array sparse, and adding new vectors may fill in gaps left by deleting vectors before appending to the end of the array. Storage is allocated in blocks of fixed size as needed to add vectors.
Vector3Int
An interface for objects that can be represented as 3-dimensional vectors.

As the author of the source code available by following the links above, I hereby place this source code in the public domain. You can use, modify, and distribute the source code and executable programs based on the source code. However, note the following:
DISCLAIMER OF WARRANTY
This source code is provided "as is" and without any express or implied warranties whatsoever. The user must assume the entire risk of using the source code.