See: Description
Lineal geometry components are in the boundary of the parent geometry collection.
Coordinate lies inside a ring.
BoundaryNodeRule which specifies that any points which are endpoints of lineal components are in the boundary of the parent geometry.
BoundaryNodeRule specifies that points are in the boundary of a lineal geometry iff the point lies on the boundary of an odd number of components.
BoundaryNodeRule which determines that only endpoints with valency of exactly 1 are on the boundary.
BoundaryNodeRule which determines that only endpoints with valency greater than 1 are on the boundary.
DD arithmetic.
Geometry.
LineIntersector is an algorithm that can both test whether two line segments intersect and compute the intersection point(s) if they do.
Geometry.
Geometry.
LineIntersector.
LineIntersector.
Coordinate lies inside a ring, using a linear-time algorithm.
HCoordinate has been computed which is not representable on the Cartesian plane.
There are many approaches to dealing with the problem of robustness in geometrical computation. Not surprisingly, most robust algorithms are substantially more complex and less performant than the non-robust versions. Fortunately, JTS is sensitive to robustness problems in only a few key functions (such as line intersection and the point-in-polygon test). There are efficient robust algorithms available for these functions, and these algorithms are implemented in JTS.
The obvious naive algorithm for intersection detection (comparing every segment with every other) has unacceptably slow performance. There is a large literature of faster algorithms for intersection detection. Unfortunately, many of them involve substantial code complexity. JTS tries to balance code simplicity with performance gains. It uses some simple techniques to produce substantial performance gains for common types of input data.