You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Matt Juntunen (Jira)" <ji...@apache.org> on 2020/03/30 14:11:00 UTC

[jira] [Created] (GEOMETRY-92) Segment is not mathematically correct

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)