Matt Juntunen created GEOMETRY-92:
-------------------------------------
Summary: Segment is not mathematically correct
Key: GEOMETRY-92
URL: https://issues.apache.org/jira/browse/GEOMETRY-92
Project: Apache Commons Geometry
Issue Type: Improvement
Reporter: Matt Juntunen
The {{Segment}} class is not mathematically correct because line segments are
defined as having distinct start and end points, whereas the start and end
points in {{Segment}} are optional. In other words, an instance of {{Segment}}
can represent an entire line, a ray, or a segment. I propose renaming the
existing {{Segment}} class to {{ConvexSubLine}} and creating subclasses to
represent the distinct types of sublines.
* {{ConvexSubLine}} - Abstract convex subline class. The factory methods
(such as fromPoints()), would examine the inputs and return one of the specific
subclasses below. Each subclass would also contain its own factory methods that
apply input validation (eg, no null points when creating a {{Segment}}). This
would also allow each subclass to optimize some computations based on the known
characteristics of the represented entity.
** {{FullLine}} - no start or end points
** {{Segment}} - contains non-null start point and end point
** {{Ray}} - contains non-null start point and null end point
** {{ReverseRay}} - contains non-null end point and null start point (not sure
if there is a more mathematical term for this)
These changes would also apply to the 3D classes:
* {{ConvexSubLine3D}}
** {{FullLine3D}}
** {{Segment3D}}
** {{Ray3D}}
** {{ReverseRay3D}}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)