Re: [eigen-commits] commit/eigen: ggael: Let's be safe: enable auto normalization is quaternion to angle-axis code since a slight numerical issue may trigger NaN. The overhead is small and I doubt the perf of this function could be critival for any a |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen-commits Archives
]
- To: eigen-commits@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen-commits] commit/eigen: ggael: Let's be safe: enable auto normalization is quaternion to angle-axis code since a slight numerical issue may trigger NaN. The overhead is small and I doubt the perf of this function could be critival for any a
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Mon, 1 Nov 2010 07:30:08 -0700
- Cc: Gael Guennebaud <gael.guennebaud@xxxxxxxxx>
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=YDUYVGKgyW9BTfSXcIwkw5sJHdanA/jmZVoZm/4XhdQ=; b=FRQjXNubKaxjus+azgAR9BapjpajgNUHGmHQbhde6iWC9cyuX2apkmBVhmhsqDOk0v ZfZdQqvxufhX39IWs2shFX4GE/1pEuVD7VV34B2mLm7/BRMO/8zUi1llXSdzSZW9auOV 2lFllmZT13EU6cwpNk9zBtIgDV3J/YbtnmQB0=
- 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 :cc:content-type:content-transfer-encoding; b=ZY/VL+brcw2bbiJEHglMoiCM/bE/d1geuNb9FEK1fpGJrxZ4t2FXIxcm+wEzBrhmEh ZcNACLier7mkpVsVsJja63One8jxm39Rok+clel+tE3xy5vkJe5N5VF5Svr5+8r1878V Q+MOPcOQWfuMyzGQa+F7Lj3RxfAtnxJfUguvk=
Le 1 novembre 2010 01:38, Gael Guennebaud <gael.guennebaud@xxxxxxxxx> a écrit :
> On Mon, Nov 1, 2010 at 12:04 AM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
>> Hm...
>>
>> - m_angle = 2*std::acos(q.w());
>> + m_angle = Scalar(2)*std::acos(q.w()/*/internal::sqrt(n2+q.w()*q.w())*/);
>>
>> Tu as mis des commentaires /*...*/ donc ca change rien!
>
> oops, j'ai oublié de décommenter après mes bench....
>
>> Je ne suis pas tres chaud pour auto normaliser dans 1 function alors
>> qu'on ne le fait pas ailleurs! Mais je n'ai pas acces a hg ici donc je
>> n'ai pas pu regarder de pres le code.
>
> oui j'ai aussi pas mal hésité, mais le pb c'est qu'ici il y a un acos,
> et si après quelques manipulations on a w=1.0000000000000000001 et
> bien on se retrouve avec des NaN.
A ce moment la, ne serait-il pas plus sur de contraindre ca
explicitement avec un if, du genre if(x>1) x=1; ?
Comment etre certain que la division que tu fais garantit qu'on n'est pas >1 ?
>
> L'autre raison c'est que le surcout est modéré. Quasi nul pour des
> doubles, et 20% pour des float.
>
> Cela dit j'ai quand même des doutes sur le fait que des erreurs de
> précisions puissent aboutir à des quaternions avec une norme supérieur
> une composante supérieur à 1....
Non c'est credible ca, ca m'est deja arrive, c'est pour ca que quand
je fais des animations je normalise mes rotations a chaque etape. Des
qu'une composante est >1, elle augmente exponentiellement a chaque
etape et devient tres vite aberrante.
Benoit
>
> gael
>
>> Benoit
>>
>> 2010/10/31 <commits-noreply@xxxxxxxxxxxxx>:
>>> 1 new changeset in eigen:
>>>
>>> http://www.bitbucket.org/eigen/eigen/changeset/6a47c9be16c6/
>>> changeset: r3476:6a47c9be16c6
>>> user: ggael
>>> date: 2010-10-31 23:26:01
>>> summary: Let's be safe: enable auto normalization is quaternion to angle-axis code since a slight numerical issue may trigger NaN. The overhead is small and I doubt the perf of this function could be critival for any application !
>>> affected #: 1 file (43 bytes)
>>>
>>> Repository URL: http://bitbucket.org/eigen/eigen/
>>>
>>> --
>>> This is a commit notification from bitbucket.org.
>>> You are receiving this because you have the service
>>> enabled, addressing the recipient of this email.
>>>
>>>
>>>
>>
>>
>>
>
>
>