[Bf-committers] Bug #816 (180 deg rotation limit for trackball in 3D window) with Possible Patch

Ton Roosendaal bf-committers@blender.org
Sat, 27 Dec 2003 12:44:04 +0100


Hi,

I can't load any of these interesting images! :)
Further it is unclear to me why so much code changes for a single line  
improvement of

> phi = asin(si) to phi = si * M_PI / 2.0.

I'm busy now with other stuff... don't mind to try the patch itself  
later, but I find it usually very hard to *read* patches. If you  
propose to discuss some code/implementation, it might be more handy to  
just provide the entire code section you changed.

Thanks,

-Ton-


On Thursday, Dec 25, 2003, at 17:23 Europe/Amsterdam, Nathanael Law  
wrote:

> Hello all,
>
> I would like to discuss a possible solution to bug #816. To summarize
> the bug report, in the 3D window, you cannot rotate beyond 180 degrees
> in trackball mode.
>
> 1. Is this the behavior that is desired?
>
> 2. If not, does the included patch correctly address the issue?
>
> 3. If you think it does address the issue, but is not well-coded, what
>    can I do to improve it?
>
> The included patch allows unlimited rotation in the 3D window in
> trackball mode; however, it changes the relationship between the mouse
> movement and the angle rotation.
>
> The unpatched angle of rotation is proportional to the arcsin of the
> relative distance that the mouse has moved.  This works quite will if
> rotation is restricted to the [-180,180] degree interval.  The
> response graph is shown at
> http://www.xyrodian.com/bf-committers/UTRR.png  For the majority of
> the range of operation, the response is approximately linear.
>
> If the interval of rotation is extended without changing the
> relationship between the mouse distance and the angle of rotation, the
> non-linear part of the relationship becomes very obvious.  I  
> immediately
> noticed this when I was testing the extension of rotation.  The  
> response
> graph is shown at http://www.xyrodian.com/bf-committers/ETRR.png and a
> zoomed in view of the non-linear region is at
> http://www.xyrodian.com/bf-committers/ETRRZ.png.  The result of this is
> the user feels a lack of control around the +/- 180 range.  A small
> movement of the mouse rotates the view by a large number of degrees.
>
> To eradicate the non-linear response for the extended range of
> rotation, I changed the conversion of mouse distance to angle from
> phi = asin(si) to phi = si * M_PI / 2.0.  As can be seen in the patched
> response, http://www.xyrodian.com/bf-committers/PTRR.png, this results
> in completely linear response that very closely resembles the current
> behavior for most angles and eliminates the rapid change of angles
> around +/- 180 degrees.
>
> I appreciate any feedback: comments, criticisms, suggestions, etc.
>
> References
>  -  
> http://projects.blender.org/tracker/ 
> index.php?func=detail&aid=816&group_id=9&atid=125
>  - http://www.xyrodian.com/bf-committers/UTRR.png
>  - http://www.xyrodian.com/bf-committers/ETRR.png
>  - http://www.xyrodian.com/bf-committers/ETRRZ.png
>  - http://www.xyrodian.com/bf-committers/PTRR.png
>
> -- 
>  - Nathanael Law <njlaw@xyrodian.com>
>
> <Bug816Fix.diff>
------------------------------------------------------------------------ 
--
Ton Roosendaal  Blender Foundation ton@blender.org  
http://www.blender.org