[
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)