papagina / RotationContinuity

Coder for "On the Continuity of Rotation Representations"
MIT License
328 stars 54 forks source link

Implementation of your quaternion #6

Open Guptajakala opened 4 years ago

Guptajakala commented 4 years ago

https://github.com/papagina/RotationContinuity/blob/aee1e3417be2b45f0248c4ca56f34d487a377895/sanity_test/code/model.py#L77 Here I assume your intended half quaternion is to negate the quaternion when some value is negative (Point out if I'm wrong). I don't understand why is there an additional +0.5? That will make -1 becomes -0.5 and 1 becomes 1.5

papagina commented 4 years ago

Hi. Yes, you are right. I added +0.5 to handle the case when the value is 0. torch.sign() returns 0 when given 0.

Guptajakala commented 4 years ago

Hi. Yes, you are right. I added +0.5 to handle the case when the value is 0. torch.sign() returns 0 when given 0.

Thanks for reply. In the line below https://github.com/papagina/RotationContinuity/blob/aee1e3417be2b45f0248c4ca56f34d487a377895/sanity_test/code/model.py#L78 torch.sign() returns 0 when given 0 and +0.5 we get 0.5. Will this 0.5 multiplication cause some unwanted scaling? I see that this +0.5 is outside of the bracket.

papagina commented 4 years ago

Hi. Yes, you are right. I added +0.5 to handle the case when the value is 0. torch.sign() returns 0 when given 0.

Thanks for reply. In the line below

https://github.com/papagina/RotationContinuity/blob/aee1e3417be2b45f0248c4ca56f34d487a377895/sanity_test/code/model.py#L78

torch.sign() returns 0 when given 0 and +0.5 we get 0.5. Will this 0.5 multiplication cause some unwanted scaling? I see that this +0.5 is outside of the bracket.

I didn't see any problems in my experiments.