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

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


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
 * 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.

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,




Apache Commons Geometry. Contribute to darkma773r/commons-geometry
development by creating an account on GitHub.

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
committers." page.


> I think two convenience divide methods performing qr^{-1} and
> for q
> and r would be useful, but I couldn't think of nice names for

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
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
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...



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