Re: [eigen] geometry module... |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] geometry module...
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Fri, 19 Mar 2010 15:06:18 -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=KJufz2c5FQAgHcN0gWtmfNeVbvy1Jueu11NDQgBRJZw=; b=Npk+T7NSFu1sOutxrp7cuc6yiSG0LNnwgtF5jKgWdQlZBFPmxZnn83WZY7/QOgvvmJ dVfPIlS1a0UnnNK4sLGOHDOGm8dKmzoaeQOgnv/1XSEhCORjMSVrsrkrZoBP0gM6XXBI +MMnRjVmmSrwEl5ylsLGttCJfPgnOwvpnzDUc=
- 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=jK6JphDFMru1HIbrHPcgeQsy1jBKIIP8/5Mb1g8hARGz3e/luKUpUGAzlQoR/8cQrC jaJpfwathb9f0kfFeZdqEcY5Jl98l2mzkPo8rYbR9+Cf05+CM+YV9bCup7lmA0VHF1hB yhLdmef4epOWD/W4KbbhcEfeDpvGbYbd5cqbs=
My point is that we must preserve associativity (up to machine precision ;) )
(Scaling * Translation) * Vector == Scaling * (Translation * Vector)
We would lose that if we let Scaling * Translation return the
translation by the scaled vector.
Benoit
2010/3/19 Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>:
> On Fri, Mar 19, 2010 at 7:44 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
>>> - make UniformScale * Translation return a Translation
>>
>> I don't understand that. UniformScale * Translation should return the
>> composite transformation, that consists in first translating and then
>> scaling. This is not a translation!
>
> Well, maybe the bigger problem is that we do not yet have expressions
> in the transformation chain. A translation is not even a
> transformation but it behaves as such since
>
> Vector = Translation * Vector
>
> is a valid operation - i.e. translations behaves like a transformation
> matrices. And given
>
> Vector = Scaling * Translation * Vector
>
> which can be written as
>
> Vector = (Scaling * Translation) * Vector = OtherTranslation * Vector
>
> I considered returning a translation - in particular since
>
> Translation * Vector
>
> is way more efficient than
>
> ProjectiveTransformation * Vector.
>
> Maybe now I managed to maximize confusion but I agree that such a
> trivial fix is not really a fix and thus I will leave it alone for the
> moment.
>
> - Hauke
>
>
>