Re: [eigen] Transform products |

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

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] Transform products*From*: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>*Date*: Thu, 19 Feb 2009 15:20:11 +0100*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 :content-transfer-encoding; bh=1BD4L8pWfYEBFH5/D7zcvCtVSSd43DeO7itiNWO5/HU=; b=foo1P7oUlfBjN9PRCyoS+g6JBbE2TTTOOcABouzBFN3Fp/sLchSVxIHkFO4BUfjvxv VQ1NjBI6f4Q+mXZ11OOdUsNUoFTaGLblxpXLFPdwiDhW3r2cru0icqbL8hRPA+clo0Bz 1iBisuQuDbmJ8n2n7Ox87phqbWkFvPEf2W9j4=*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:content-transfer-encoding; b=OaizeBu8yYWAjoeH3XeLQPM7hzeeFmbouQUbdx4sW4/ebd/MKjL05JaAMzTlKaTv67 uQ9C9Ch2jCUJL90n0xjlwndc/Nrjk5Y/qu7EnYf1J41SmqPG7c4Jmn2IAF0ZdHMBe0Eu sF3e0WyYLbzxrt4AwHfMQztlg9jztBLjlh5bc=

Hi, I think the following question needs to be adressed first: couldn't we just assume that the last row is 0,...,0,1 ? Is there really any use case for non-affine transformations? Thus the last row would be there just for seamless interoperability with OpenGL. Or do you have a real use case where the last row is not 0,...,0,1 ? Cheers, Benoit 2009/2/19 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>: > Hi list, > > there still remains a few issues with the product: Transform * matrix_expression > > Let d be the dimension of the ambient space (so that the Transform > object actually correspond to a d+1 x d+1 matrix). Currently we allow: > > 1 - Transform * [d x d] => Transform > 2 - Transform * [d+1 x d+1] => trivial product expression > 3 - Transform * [d+1 x 1] => trivial product expression > 4 - Transform * [d x 1] => complex [d x 1] expression including the > homogeneous normalization > > Issues: > > a) the 4-th case is not plenty satisfactory: > > a1 - should it returns an homogeneous vector ? > a2 - or automatically does the normalization as it currently does ? > a3 - or should we offer a way to skip the normalization assuming the > transformation is affine (last row = [0 ... 0 1]) ? > > Well, these questions are more complementary and I guess the answer is > yes for all, the problem is rather how to expose all these variants ? > a proposal: > > for a3 let's add "t.affine() * v" where affine() would return a > kind of [d x d+1] proxy with overloaded operator *. > > for a1 and a2, two options: > > p1) keep the default as it because it is safe > and for a1... well I don't know, anyway the user can still > build and homogeneous one for the rhs. > > p2) let's return a "homogeneous" object which would > automatically be converted to a [d x 1] vector if needed > (ideally would have to be done in MatrixBase) > > > > b) second issue: We want to be able to perform a batch transformation > of a set of N vectors. Again two cases: > > b1 - Transform * [d+1 x N] => this is trivial, we just have to merge > the above cases 1 and 2 into a more generic one. DONE > > b2 - Transform * [d x N] => same issues than the ones discussed > above excepted that the involved expressions are much more complicated > ! For instance the affine case would be: > t.matrix().linear() * [d x N] + t.matrix().translation() * > Matrix<Scalar,d,N>::Ones(N); > > This last example also shows that maybe it would be useful to have a > "replicate" expression mapping a vector to a matrix with constant rows > or constant columns ? This would be simpler than using a matrix > product for that. > > And of course all the above discussion also holds for the transpose > cases, i.e., matrix_expression * Transform. > > > opinion, idea ? > > thanks, > Gael. > > >

**Follow-Ups**:**Re: [eigen] Transform products***From:*Gael Guennebaud

**References**:**[eigen] Transform products***From:*Gael Guennebaud

**Messages sorted by:**[ date | thread ]- Prev by Date:
**[eigen] Transform products** - Next by Date:
**Re: [eigen] ASCII quick reference for Eigen2** - Previous by thread:
**[eigen] Transform products** - Next by thread:
**Re: [eigen] Transform products**

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