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)

Reply via email to