osdir.com

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Numbers][Geometry] Where to define "quaternion" (Was: Making Quaternion a VALJO)


Unless anyone objects, I'm going to continue with what I'm working on with QuaternionRotation and create a merge request. That way, we'll at least have a reference implementation and baseline functionality for commons-geometry that we can modify later based on what's decided here.

-Matt
________________________________
From: Gilles <gilles@xxxxxxxxxxxxxxxxxxxxx>
Sent: Saturday, December 1, 2018 9:40 PM
To: dev@xxxxxxxxxxxxxxxxxx
Subject: Re: [Numbers][Geometry] Where to define "quaternion" (Was: Making Quaternion a VALJO)

On Sat, 01 Dec 2018 12:56:34 +0100, Gilles wrote:
> Hello.
>
> On Sat, 1 Dec 2018 06:05:31 +0000, Matt Juntunen wrote:
>> Hi guys,
>>
>> FYI, I've been working on a quaternion-related class named
>> QuaternionRotation for commons-geometry (see link below). It
>> includes
>> slerp as well as several other geometry-oriented methods, such as
>> conversion to/from axis-angle representations and creation from
>> basis
>> rotations. It's not quite ready for a merge yet since I still need
>> to
>> finish the Euler angle conversions.
>>
>> I did not use the Quaternion class from commons-numbers since I
>> wanted to focus solely on using quaternions to represent 3D
>> rotations.
>> I felt like the commons-numbers class was too general for this.
>
> We need to explore further how to avoid duplication.
>
> Some questions:
>  * Should "QuaternionRotation" inherit from "Quaternion"?
>  * Should "Quaternion" be defined in [Geometry] (and removed from
>    [Numbers])?
>  * Are some utilities defined in "QuaternionRotation" general
>    such that they could be part of the [Numbers] "Quaternion" API.
>    An example might be the transformation between quaternion and
>    matrix (represented as a double[3][3])?
>
> The second consideration could apply to any computation that does
> not require types defined in [Geometry].  For example, interpolation
> is a purely quaternion-internal operation.

s/second/third/

>
> It looks to me that it should be possible to come up with a design
> that defines "rotation" in [Geometry] which uses a "quaternion"
> defined in [Numbers].
> Otherwise, one would wonder why "Complex" is also not in [Geometry]
> (for 2D rotations).
>
> Best regards,
> Gilles
>
>>
>> Regards,
>> Matt
>>
>>
>>
>> https://github.com/darkma773r/commons-geometry/blob/transforms/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/QuaternionRotation.java
>>
>> [https://avatars1.githubusercontent.com/u/3809623?s=400&v=4]<https://github.com/darkma773r/commons-geometry/blob/transforms/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/QuaternionRotation.java>
>>
>>
>> darkma773r/commons-geometry<https://github.com/darkma773r/commons-geometry/blob/transforms/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/QuaternionRotation.java>
>> Apache Commons Geometry. Contribute to darkma773r/commons-geometry
>> development by creating an account on GitHub.
>> github.com
>>
>>
>>
>>
>> ________________________________
>> From: Gilles <gilles@xxxxxxxxxxxxxxxxxxxxx>
>> Sent: Friday, November 30, 2018 9:37 AM
>> To: dev@xxxxxxxxxxxxxxxxxx
>> Subject: Re: [numbers] Making Quaternion a VALJO
>>
>> On Fri, 30 Nov 2018 14:22:45 +0000, Steve Bosman wrote:
>>>> > and I have also emailed an ICLA.
>>>
>>>> Not received/acknowledged yet.
>>>
>>> I am now listed on the "Persons with signed CLAs but who are not
>>> (yet)
>>> committers." page.
>>
>> Welcome!
>>
>>>> > I think two convenience divide methods performing qr^{-1} and
>>>> r^{-1}q
>>>> > for q
>>>> > and r would be useful, but I couldn't think of nice names for
>>>> them.
>>>
>>>> What are the use-cases?
>>>> Why aren't "multiply" and "inverse" enough?
>>>
>>> I must admit I'm new to quaternions and stumbled into the project
>>> while
>>> trying to improve my understanding so I'm not going to claim great
>>> knowledge of how common these operations are. I was primarily
>>> thinking of
>>> Quaternion Interpolation - SLERP and SQUAD. It seems to me that you
>>> end up
>>> creating inverse instances and throwing them away a lot and I
>>> thought
>>> it
>>> would be good to reduce that overhead.
>>
>> Surely, the class "Quaternion" is minimal but, before adding to
>> the API, we be careful to have use-cases for low-level operations.
>> Those mentioned above seems more high-level, tied to a specific
>> domain (see also "Commons Geometry", another new component not yet
>> released) but I may be wrong...
>>
>> Regards,
>> Gilles
>>
>>>
>>> Steve
>>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xxxxxxxxxxxxxxxxxx
For additional commands, e-mail: dev-help@xxxxxxxxxxxxxxxxxx