From: Doug M. <mc...@ia...> - 2005-06-24 14:14:41
|
Allen Bierbaum wrote: > Doug McCorkle wrote: > >> Allen Bierbaum wrote: >> >>> Doug McCorkle wrote: >>> >>>> Allen Bierbaum wrote: >>>> >>>>> Allen Bierbaum wrote: >>>>> >>>>>> Unfortunately, it looks like there are some bugs in the conversion >>>>>> somewhere. My guess is that there are some border cases in the >>>>>> extraction of the euler angles from the Matrix. >>>>>> >>>>>> I have added a new test case that exhaustively tests all Euler >>>>>> getting and setting to find these issues. The test can be found in >>>>>> the MatrixGenTest test case. If anyone has some time to look into >>>>>> this, you can use this test case to reproduce the problem. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> I just commited some changes that should fix the errors. (at least >>>>> it fixes the ones the test case found :) >>>>> >>>>> Give it a spin and let me know. >>>>> >>>> Just do a cvs checkout I assume? >>>> >>> Yep. >>> >>>> Thanks for the prompt response. This was going to be my evening >>>> project but I guess I can do some testing instead. I appreciate the >>>> help. >>> >>> >>> >>> >>> I wasn't planning on working on it, but I had some down time waiting >>> for some builds and I found a good solid algorithm in a reference so >>> I just gave it a try. >>> >> Ok. It appears that things are better but not quite right. If >> rotations are purely about an individual axis X,Y,Z everything works >> fine. If rotations become compounded things begin to act odd. This >> affect may be due to us not understanding how rotations are applied in >> OSG though so I would like to do more testing. Some things do appear >> to working better but one odd thing did occur. With EulerXYZ under the >> old version of gmtl the compound rotations appeared to work correctly >> no mater what had been done. This does not appear to be working now. I >> will continue to test and try to provide better feedback. > > > One point of feedback. Because Euler angles are non-unique, sometimes > the angles returned do not appear to be continuous. There is really no > way around this. The test code I wrote sets a matrix using a set of > euler angles and then extracts the euler angles and uses the extracted > eulers to make a new matrix. Then it tests if the two matrices are > equal. Note, that this does not require that the original euler values > and the extracted euler values must match. It only requires that the > values are functionally equivalent. The test shows that this works for > all angles in the range of -190 degrees to +190 degrees for x,y, and z > in all 3 euler types. > That is what I am seeing. The angles are not continuous. Is there a better way to handle this? I need to extract rotations for XYZ out of a matrix. I thought that EulerAngle would be the best way. Is there a better way? > -Allen > >> >>> -A >>> >>>> >>>>> -A >>>>> >>>>>> >>>>>> -Allen >>>>>> >>>>>> Doug McCorkle wrote: >>>>>> >>>>>>> Hello, >>>>>>> When using gtml I noticed that when I pass an identity >>>>>>> Matrix44f into >>>>>>> make< gmtl::EulerAngleZXY >( identity ) that I get back 90,0,90. >>>>>>> If I >>>>>>> ask for an EulerAngleXYZ I get back 0,0,0 and ZYX return 0, nan, >>>>>>> 0. Is >>>>>>> this the correct behavior of EulerAngle? I thought that no >>>>>>> matter what >>>>>>> Euler combination that I ask for should return 0,0,0 for an >>>>>>> identity >>>>>>> matrix. Thanks for the help in understanding this better. I am >>>>>>> using >>>>>>> gmtl 0.4.5. >>>>>>> >>>>>>> |