[ 
https://issues.apache.org/jira/browse/GEOMETRY-14?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16641524#comment-16641524
 ] 

Gilles commented on GEOMETRY-14:
--------------------------------

About {{Point}} and {{Vector}}, the question is simply to have (programming) 
use-cases for both.
{quote}the difference is mathematical
{quote}
I like when the design can be close to the mathematical concepts. But you 
argued that having
{code:java}
public class Vector3D extends Cartesian3D implements 
MultiDimensionalEuclideanVector<Point3D, Vector3D>
{code}
and
{code:java}
public final class Point3D extends Cartesian3D implements 
EuclideanPoint<Point3D, Vector3D>
{code}
was going to be more effective from a usage POV even though the class hierarchy 
does not agree with the mathematics (a point exists independently of the 
coordinate system).
 So my (design) question is of the same order: If programming is allowed to be 
a step away from mathematics, maybe (?) that a "point" class is not strictly 
necessary (here).
 As a basic user of a very small fraction of that code, I don't know (yet). 
That's why I'm suggesting that, if possible, some real-use cases should be 
presented for the concepts (a.o. _both_ "point" and "vector") that are 
represented in the API.
 If now is not a good time, then I can wait; but this is "for the record" of 
trying to avoid issues as they seem to appear (at least to me). ;)

About affine transforms: I'm convinced that {{java.util.function}} is not going 
to help then.

However, do you see a real use-case where the composition of transforms would 
need more than this method:
{code:java}
public AffineTransform3D combine(AffineTransform3D transform) { /* ... */ }
public static AffineTransform3D combine(AffineTransform3D ... transforms) { /* 
... */ }
{code}
together with the varargs static method shown above (as syntactic sugar)?
 Note: I couldn't figure out the 3-arguments {{multiply}} method (in the PR).

Can the API of {{AffineTransform3D}} be discussed without including rotations?  
Shall we just have
{code:java}
public Rotation extends AffineTransform3D { /* ... */ }
{code}
?

> AffineTransform?D Classes
> -------------------------
>
>                 Key: GEOMETRY-14
>                 URL: https://issues.apache.org/jira/browse/GEOMETRY-14
>             Project: Apache Commons Geometry
>          Issue Type: New Feature
>            Reporter: Matt Juntunen
>            Priority: Major
>              Labels: pull-request-available
>
> We should create AffineTransform?D classes that implement matrix-based affine 
> transforms. They should have simple methods for creating translations, 
> rotations, and scaling and calculating the inverse.
>  
> Pull Request #1: https://github.com/apache/commons-geometry/pull/14



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to