RotoView Dynamic Response Algorithms

The RotoView Dynamic Response algorithms determine the speed or distance of view navigation in response to the tilt and movement of the hand held device. During the Dynamic Scroll mode, tilt changes control the speed of scrolling. During the Proportional Scroll mode, tilt changes are mapped directly onto the screen view position on the contents view.

The Dynamic Response algorithms exhibit the following features:

  1. Use of time response curves providing the instantenous relation between the current relative tilt (i.e. current tilt compared to the inital baseline tilt) and the resulting rate of scrolling.
  2. If the relation between the relative tilt to the scrolling rate is linear, the time response curve is a graph R(t) of the linear coeficients over time, providing the scrolling rate directly by

           scrolling_rate(t) = R(t)* relative_tilt(t)
  3. If the relation between the relative tilt and the scrolling rate follows a fixed non-linear graph G, namely

           scrolling_rate(t)= G * relative_tilt(t),

    then the relative time response curve Rel_R(t) is a relative scaling factor that is used to multiply the resultant non-linear conversion, getting the actual scrolling rate by

           scrolling_rate(t) = Rel_R(t) *G * Relative_tilt(t).

  4. During Dynamic Scroll, the screen view continues to scroll at the current rate when the relative rotation remains the same.
  5. Selection of different response curves for use by different applications, or selection of different response curves depending on the dimensions of each instant of the media.
  6. The response curves may further change dynamically during the navigation process.

We refer to the relationship between the relative tilt (the measured current tilt minus the baseline tilt) and the resulting scrolling rate as the scrolling rate graph G. Fig. 1 illustrates an example of such graph that may be used during Dynamic Scroll mode.

Response curve example

Fig. 1: A scrolling rate graph G.

The sensor data is taken as a relative tilt, by subtracting the current sensor tilt reading and the reference tilt baseline captured at the start of scrolling. The blue graph illustrates a simple linear scrolling rate graph. This graph can be represented mathematically by

       scrolling_rate = k* relative_tilt.

Therefore, as mentioned in item of 2 of the feature list above, the time response curve is a graph R(t) of the linear coeficients (k values) over time, providing the scrolling rate directly by

       scrolling_rate(t) = R(t)* relative_tilt(t).

The red graph illustrates a more complex scrolling rate graph that includes several non-linear regions. In the first region, there are two threshold points between which the view navigation is halted. This is needed to eliminate normal hand shaking. The red curve also includes a clipping region, designed to eliminate abnormally large relative tilts. Such a clipping region may be useful when a special hand gestures (e.g. an up down shake) are used to activate the view navigation.

The scrolling rate is computed by

       scrolling_rate = G * relative_tilt,

where the * operation is the mapping operation performed by the red graph. Therefore, as mentioned in item of 3 of the feature list above, the relative time response curve Rel_R(t) is a relative scaling factor that is used to multiply the resultant non-linear conversion, getting the actual scrolling rate by

       scrolling_rate(t) = Rel_R(t) *G * Relative_tilt(t).

The scrolling rate graph G may be an actual graph stored in memory, or may be implemented by one or more mathematical functions. A minimal scrolling rate graph may be as simple as a single value, while a complex scrolling rate graph comprises multiple values. Different scrolling rate graphs may be used for each scrolling direction, and each application may select a different set of scrolling rate graphs that benefit each particular application. For example, a map browsing application (that must scroll in any direction) may use different scrolling rate graphs than a web browser application (that typically scrolls the screen vertically).

The scrolling rate graph G can also have non-linear sensitivities, based upon the magnitude of the sensor data as shown in Fig. 2. Here the scrolling rate graph G is symmetrically divided into three relative tilt regions between the the threshold region and the noise clipping region that were described in Fig. 1. A small relative tilt change in the first region beyond the threshold region causes larger scrolling speed changes compared to a similar tilt change at the next tilt region.

Response curve example

Fig. 2: Another scrolling rate graph with non-linear sensitivities.

We should note that the term "non-linear" is used loosely here to indicate that the response to the sensor data is not necessarily approximated by a single line (like the blue line in Fig. 1). In many cases, the response graph may be approximated by multiple short "linear" regions, as shown in Fig.2.

The Dynamic Response algorithms illustrated in Fig. 2 can be also used for the Proportional Scroll mode, where the vertical axis of the graph refers to screen scrolling position instead of the screen scrolling speed (see, for example, our US patents 9,181,760 and 9,348,435).

The Dynamic Response algorithms allows the Dynamic Scroll mode to achieve fast scrolling with minimal rotations, to overcome the limitations of the Proportional Scroll mode. It achieves this goal with the RotoView time response graph that dynamically changes the response to the sensor data as the scrolling progresses.

This allows the scrolling to start very rapidly, in what we call the THROW gesture, so that the user can quickly bring the screen view to the general target area within the contents view. The THROW gesture is then automatically followed with a refined slow scrolling which we call the GLIDE gesture.

Fig. 3 illustrates the dynamic response along one of the axis as result of changing the relevant time response curve dynamically based on the duration of the scrolling action. The bottom graph (green) shows the raw sensor data over time, representing two consequent side-to-side tilts of the hand held device. The top graph (red) shows the view navigation rate by which RotoView responds to the sensor data.

Time dependent changing response

Fig. 3: Effect of time response curve along one axis

We can see that the navigation rate is coarse (strong) during the first tilt, representing the THROW gesture, and it dynamically reduces to provide a fine navigation GLIDE during the second side-to-side tilt.

In Dynamic Scroll mode, we define the abstract relation between the view navigation rate and the sensor data along each axis as the sensitivity. The sensitivity of both axis may be different. We can similarly define a Normalized Time Response Graph as time response curve with normalized sensitivity values and an extendable time length. The time axis of such normalized time response graph (horizontal length) should be mapped to a desired time length. The RotoView app, for example, maps all of the time response graphs to 5 seconds, but the user can change this value.

The vertical axis of the Normazlized Time Response Graph is the relative intensity, and is further scaled within the RotoView algorithms. In our current RotoView app implementation, the vertical axis is divided to THROW gestures for values that are above 5.0, and GLIDE gestures below 5.0. In the current app implementation, values from 5 and above are interpreted in a stronger response based on the notion of Non-linear response curve of Fig. 1 and 2. This enables the THROW gesture in the app to achieve stronger speed so that small rotations during THROW allow the user to reach all edges of the magnified contents view rapidly. In terms of the curve response, a value of 8.0 produces much more than two times the scrolling speed of a value of 4.0 which is interpreted as GLIDE. Of course, other implementationss can use logarithmic scale for vertical axis to achieve the same result.

The following screenshots show several examples of time response graphs as captured from the RotoView app.

Typical response start with the THROW gesture (coarse navigation) followed by a GLIDE gesture (fine navigation) from which the navigation mode is exited.

This fixed response graph can be selected for instances were the stored virtual view is not much larger than the screen view. Fixed response are dealt as a GLIDE gesture.

This normalized time response graph emulates a delayed "Flick" gesture. It starts from a short GLIDE followed by a strong THROW gesture that produces a sharp scrolling before returning to fine navigation.

In the first example, the intensity for the first three time slots of navigation mode is set to 8, well within the THROW region for initial coarse view navigation. From time slot 3 to 5 the intensity goes down to 3, thus providing a GLIDE gesture (fine scrolling). This graph results in the behavior of Fig. 3.

If the scrolling process continues beyond the time span of the time response graph, scrolling speed is determined by the last value of the graph. The actual RotoView app includes several touch gestures that allow the user to restart the response graph, or to abort the THROW portion quickly.

The second example shows the use of a simple fixed response. This may be selected automatically (or by the user) for instances where the stored view is not much larger than the actual screen view. The last example emulates the "flick" action, particularly if the graph is mapped to a short time length.

The Dynamic Response algorithms create a natural subliminal closed loop comprising the user's hand movements and the resultant navigation. By eliminating the need for one-to-one mapping between a tilt or hand movement and the exact view positioning, RotoView allows for smoother and more intuitive view navigation. Users can setup the Dynamic Response to their exact preference to achieve the most comfortable results.

The Dynamic Response algorithms further enables the use of sensors with lower accuracy since there is no need for an exact alignment of the displayed view with the relative tilt. This may have important low cost benefits for mass production.

Additional issues relating to the user interface experience with RotoView are detailed at

For more information

The RotoView Dynamic Response algorithms are protected by our patents and copyrighted software. Partial implementation in our RotoView apps introduces these algorithms to potential licensees. Further information requires a Non-Disclosure Agreement. Please contact Scott LaRoche at 1+ (281) 879-6226, e-mail

RotoView IP portfolio
INNOVENTIONS® Inc. "INNOVATIVE PRODUCTS FROM INVENTIVE MINDS" Copyright © 2016 INNOVENTIONS, INC. All rights reserved. Android is a trademark of Google Inc. Apple, the Apple logo, iPhone, iPod, iPod touch, and iTunes are trademarks of Apple Inc., registered in the U.S. and other countries. App Store is a service mark of Apple Inc. RotoView and INNOVENTIONS are registered trademarks of INNOVENTIONS, Inc.