|Re: [eigen] Rigid transformations in eigen: use of dual quaternions|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Rigid transformations in eigen: use of dual quaternions
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Sat, 12 Sep 2009 10:19:28 -0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=GzS9/0a/RfyWgX+7j0soPgsS0O7kHxtGdAWd78AvZQs=; b=Dr00AhcLeiN0xZO2Xz2DE9ncWrHKFWVMBpcIMBvQmQen3CSZaWfkql9DA7qVCalQsU Uz640zDAHtHh6HJXm9Bzcem6V0wh+163t67MLsmkYMGGM87PBEwsBVOWfaTVTneANk86 hQffNxod3Ky9yxAW8mdY3+1R3CQpvfnSFNDDM=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=wGgDRxLLw3tI/27P0Noj/JmKJndSu4567P0dyHeJ9uXqA8HN326i0EZTJcln7RKkUu humW/LLO9m2EeeLYtA9r2x9UtBvlEM8+KFLyJK6watXnA/npRQOT24dVS6TrCNABGed4 gl0EEO4lG2Aerxp1pdlJC4VNE4HIOUVTFaUVk=
2009/9/12 Rohit Garg <rpg.314@xxxxxxxxx>:
> a) What is the internal representation of affine transformations
> (excluding scaling) in eigen?
For a N-dimensional transformation, in Affine and Projective modes,
it's internally represented as a (N+1)*(N+1) matrix.
In AffineCompact mode it's a N*(N+1) matrix.
The top-left N*N block is the linear part, the last column contains
the translation part. Exactly like with OpenGL.
> b) I am right now rolling my own dual quaternion class, but if eigen
> provides dual quaternions (say as RigidTransform class, to exclude
> scaling) then it would be very useful indeed.
> c) Dual quaternions have many advantages, in that they allow artifact
> free skining, rigid transform interpolation, are resistant to
> numerical defects (just like quaternions). Was their use considered
> and discarded?
Sorry, I have no clue what dual quaternions are. I don't remember them
being considered. Can you detail what they are and how they are better
than existing Eigen classes for real use cases? What is skining? What
does "rigid" mean here?
> d) The recently introduced EIGEN_TRANSFORM_PLUGIN, what does it do?
It allows one to add stuff into the Transform class from the outside.
Just like the EIGEN_MATRIXBASE_PLUGIN described here,
> e) Interpolation is the key thing here. We need it and we are having
> to do it ourselves. But we'd like to have the code rolled into eigen,
> so that it plays nice with the rest of the geometry api and allows
> convenient extraction of matrices (to upload as uniforms to shaders).
Great, thanks for caring.
For interpolation, all I can see in current Eigen is
Quaternion::slerp(). Can you also explain how what you want to do is
different from that?
(I know very little about quaternions usage in 3D geometry)