Re: [eigen] Rigid Transformations in eigen: discussion thread |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] Rigid Transformations in eigen: discussion thread*From*: Gael Guennebaud <gael.guennebaud@xxxxxxxxx>*Date*: Fri, 18 Sep 2009 11:08:39 +0200*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=L+RaXMENnc5dw1dlkcJRFEtLh49ipDn/g36HdN9CzDc=; b=I9Cf0tgcs0H1i7Hs7LFczpzRzWcvUBX4lthe6sB0mWGbYos3R743vaa1Wr54Celv0u UNW+qAKQdpEBQMraD33B6HxttxU0GpT5U2d6adswVIHaSz5gd59yew79EN9e248coCs7 HzjbgS1fQylQ5i9VAGzLvhPgovjsVNzB70OWg=*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=efx5A3c9n3ENDiSf7IuTSrmxirTSuGLmAc1bo++SOfXGhT7atHGYBD+V0QuPgOSZuR Uqa0UtxTi5u2zzseQjmMYxnLN+RkZci2nAbdHwfu7k20wtrcWWoMf6AdlLv+OWG0Zm5T 8TKm46loaSyOZsxY5ckS4qg9aX8pmlOsGiX54=

On Fri, Sep 18, 2009 at 7:41 AM, Rohit Garg <rpg.314@xxxxxxxxx> wrote: >> Yes. So if the user is OK to cope with having to call coeffs(), then >> he can do all what he likes, and get optimized code thanks to ET. > > But for just an interpolation, you should not have to write coeffs() > everywhere. :( > > Is there no other way to get ET without coeffs()? > > How about the + and the * operator return vec8 expressions, and we > provide only 1 assignment operator to take vec8 expression as input? Another quite simple solution is to add a second template argument being the type of the coeffs. By default it would be a Vector8_. For instance operator* would be implemented as: DualQuaternion<Scalar, CwiseUnaryOp<ei_scalar_multiple_op<Scalar>, CoeffsTypeOfThis> > operator*(Scalar s) { return s * m_coeffs; } same for operator+: template<typename OtherCoeffsType> DualQuaternion<Scalar, CwiseBinaryOp<ei_scalar_sum_op<Scalar>, CoeffsTypeOfThis, OtherCoeffsType> > operator+(const DualQuaternion<Scalar, OtherCoeffsType>& other) { return m_coeffs + other.m_coeffs; } Then you add a ctor and operator= like this: template<typename OtherCoeffsType> operator=(const DualQuaternion<Scalar, OtherCoeffsType>& other) { m_coeffs = other.m_coeffs; } and you're almost done: you still have to take care to evaluate the coeffs if needed in the compositing operator* and similar functions. gael >>> The classic Grahm schmidt has a very poor numerical stability. It can >>> be modified to run in a stable manner, but there is ~2x operation >>> penalty. >> >> Not when the matrix was already very close to being orthogonal, as is >> the case here if you re-normalize frequently enough. In that case, >> Gram-Schmidt is fine. But that is OT, as indeed it's never as good a >> solution as quaternions. >> >>> >>> Another good point. What do you think of the current unit tests? >> >> sorry, haven't had time to look at it carefully. >> i guess the cout's aren't there to stay, for the rest i need to read >> it carefully, have to run now... >> >> Benoit >> >> >> > > > > -- > Rohit Garg > > http://rpg-314.blogspot.com/ > > Senior Undergraduate > Department of Physics > Indian Institute of Technology > Bombay > > >

**Follow-Ups**:**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Benoit Jacob

**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Benoit Jacob

**References**:**[eigen] Rigid Transformations in eigen: discussion thread***From:*Rohit Garg

**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Rohit Garg

**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Benoit Jacob

**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Rohit Garg

**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Benoit Jacob

**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Rohit Garg

**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Benoit Jacob

**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Rohit Garg

**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Benoit Jacob

**Re: [eigen] Rigid Transformations in eigen: discussion thread***From:*Rohit Garg

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] Rigid Transformations in eigen: discussion thread** - Next by Date:
**[eigen] Dev branch: Name clash with termios system header** - Previous by thread:
**Re: [eigen] Rigid Transformations in eigen: discussion thread** - Next by thread:
**Re: [eigen] Rigid Transformations in eigen: discussion thread**

Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |