Abstract:
A method for smooth rotation of an object viewed from a finite number of angles encompasses resetting the drag origin in response to the pointer exiting a region centered on the drag origin. Upon exiting the region, a new view of the object displays thereby providing the appearance of rotation.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    The present invention relates to software applications that display images of physical objects from a finite number of angles, and more particularly to a method for enhancing the smoothness of rotation. 
         [0002]    Internet multi-media viewers, such as Quicktime by Apple Computer, provide the experience of rotating a physical object by allowing a user to control which view, of a finite number of views taken from different angles, is to be displayed. Typically, the user will activate a rotation mode then press and drag within the application. 
         [0003]    Dragging horizontally displays a sequence of views of the object from angles where the value of the longitude coordinate varies. Dragging vertically displays a sequence of views of the object from angles where the value of the colatitude coordinate varies. Dragging in a diagonal direction varies the values of both longitude and colatitude coordinates, as one would expect. 
         [0004]    To realize reasonable pointer sensitivity, the current view to display is typically determined by a function with inputs comprising of, the total number of horizontal pixels drug divided by a predefined number of pixels per view, such as six; and the total number of vertical pixels drug divided by the predefined number of pixels per view. 
         [0005]    The perception of jerky rotation occurs when the user drags in a near diagonal direction such as forty degrees from horizontal. In this case, the display updates to a new view in the longitude direction after a total traveled distance of eight pixels. Shortly after, the display updates to a new view in the colatitude direction after a total traveled distance of just ten pixels. Likewise, the next longitude view change occurs at sixteen pixels and colatitude at just nineteen pixels. Thus, the user perceives jerky, zigzag, rotation by way of a pause, then two relatively quick changes of views, followed by a relatively long pause, and again two relatively quick changes of views. 
         [0006]    There remains a need to improve the user experience by providing smoother rotation when dragging diagonally. 
       BRIEF SUMMARY OF THE INVENTION 
       [0007]    Accordingly, an aspect of the present invention provides a method of displaying a new view from a different angle when a user drags a pointer out of a predefined region centered on the drag origin. The drag origin then resets to be the position of the pointer when exiting the region. 
         [0008]    Other novel features of the present invention are apparent from the summary, detailed description, claims, and attached drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]    In drawings which help illustrate the present invention, 
           [0010]      FIG. 1  is an isometric of an object in a spherical coordinate system; 
           [0011]      FIG. 2  is a graphical representation of a finite number views of an object stored in a data file; 
           [0012]      FIG. 3  shows a square region; 
           [0013]      FIG. 4  is a flow chart of the present invention; and 
           [0014]      FIG. 5  is a diagram of a typical computer system. 
       
    
    
       [0015]    In all figures, like reference numerals represent the same or identical components of the present invention. 
       DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0016]      FIG. 1  shows a 3-dimensional subject object  10  at a origin Q  11  of a spherical coordinate system  12  and a point P  13  from which object  10  is viewed. In the system of spherical Coordinates 12 point P  13  in 3-space is represented by an ordered triple (R, Phi, Theta) where R is the distance from P  13  to origin Q  11 . An angle Phi  14  is the angle a radial line QP  15  makes with the positive direction of a z-axis  16 , and an angle Theta  17  is the angle between a plane  18 , containing P  13  and z-axis  16 , and an xz-plane containing z-axis  16  and an x-axis  19 . For further understanding, the Phi-surfaces (Phi=constant) are circular cones with z-axis  16  as axis; and the Theta-surfaces (Theta=constant) are vertical planes containing z-axis  16 . Phi  14  is frequently referred to as the current value of the colatitude coordinate, and Theta  17  is the current value of the longitude coordinate. 
         [0017]      FIG. 2  shows a simplified example of a graphical representation of data in a rectangular table  20  form storing 4×2 two dimensional views as seen from point P  13  to subject object  10 . The top row, A to D, holds Phi  14  constant at 45 degrees and Theta  17  varies such that in view A  21  Theta=45, in view B  22  Theta=135, in view C  23  Theta=225, and in view D  24  Theta=315 degrees. Similarly, the bottom row, E to H, holds Phi  14  constant at 135 degrees and Theta  17  varies such that in view H  25  Theta=45, in view G  26  Theta=135, in view F  27  Theta=225, and in view E  28  Theta=315 degrees. The number of views for typical implementation is 16×8 and will likely increase as technology becomes faster. 
         [0018]    When a rotate mode is active, a user may manipulate a pointer device such that a desired sequence of views  21 - 28  displays on a screen. Typically, the user moves the pointer within a display window, then press-and-holds a mouse button and drags the pointer in the direction of the desired rotation. Similarly, for a touch screen the user touches within the display window and maintains contact while dragging the stylus in the direction of desired rotation. 
         [0019]    In a preferred embodiment, referring to  FIG. 3 , the user defines a drag origin point A  29  by first press-and-holding the mouse button and then dragging. A small square region  30 , such as thirteen by thirteen pixels, is defined having a geometric center about drag origin point A  29 , and having corners at points B  31 , C  32 , D  33 , and E  34 . Side BC having three segments, BF  35 , FG  36 , and GC  37 . Similarly, side CD having three segments, CH  38 , HJ  39 , and JD  40 . Side DE having three segments, DK  41 , KL  42 , and LE  43 . Side EB having three segments, EM  44 , MN  45 , and NB  46 . 
         [0020]    The user dragging out of region  30  and across one of segments  35 - 46 , results in the display of a new view of object  10  from a different pairing of Phi  14  and Theta  17  angles. An example of the user dragging horizontally along a path  47  to a point R  48  on segment HJ  39 , results in displaying a new neighboring view with a smaller Theta  17  angle, such that object  10  appears to rotate to the right. Whereas, the user dragging diagonally along a path  49  to a point S  50  on segment CH  38 , results in displaying a new neighboring diagonal view with a larger Phi  14  angle and a smaller Theta  17  angle, such that object  10  appears to rotate diagonally up right. 
         [0021]    In addition to changing the view to display, the user dragging out of region  30  resets the drag origin point A  29  to be the location of exit, such as at point R  48 . At this time, region  30  re-centers about the new location of the drag origin point A  29  as the user continues with the same dragging action until ultimately releasing the mouse button. 
         [0022]    The flowchart shown in  FIG. 4  describes the operation of the present invention. The rotation is started  51  upon the user activating the rotate mode by clicking an icon or selecting from a pull-down or pop-up menu, then pressing and holding the mouse button to begin a drag. In step  52 , drag origin point A  29  equals the present pointer position. Region  30  geometrically centers about point A  29 . In step  53 , if the present pointer position is within region  30  then the flow branches to step  55 , otherwise branches to step  54 . Step  54 , displays a different view of object  10  determined by a function having an input comprising the location of exiting region  30 . Typically, the display of the new view provides the perception of object  10  rotating in one of left, right, up, down, or four diagonal directions. The flow then jumps back to step  52 . In step  55 , if the user continues to hold down the mouse button then the flow branches back to step  53 , otherwise branches to the ending step  56 . 
         [0023]    Referring now to  FIG. 5 , a software application utilizing the present invention would typically run on an electronic device such as a computer, phone, or game console. The electronic device typically comprises a display screen  57 , one or more microprocessors  58 , a memory device  59 , a storage device  60 , an input device  61 , and a pointer device  62 . Microprocessor  58  communicates with memory device  59 , storage device  60 , input device  61 , pointer device  62 , and updates graphics displayed on display screen  57 . Storage device  60  may be a hard-drive, internet connection, flash ram, etc. Input device  61  may be a keyboard, remote button, touch screen area with character recognition, etc. Pointer device  62  may be a mouse, touch screen, touch pad, tablet, track ball, eye tracker, accelerometer, joystick, etc. Releasing a mouse button to complete a drag is equivalent to removing a stylus from a touch screen, and similar actions involving general pointer devices  62 . 
         [0024]    The present invention&#39;s teachings may be implemented in any general purpose application such as, but not limited to, internet browsers, publication packages, presentation packages, medical image packages, or games. 
         [0025]    It will be apparent to one skilled in the art that region  30  may be any shape, such as but not limited to, an octagon, general polygon, circle, or peanut. Re-centering region  30  may occur before displaying the new view in step  54 . The apparent object rotation need not include diagonal directions. 
         [0026]    Thus, the present invention provides a method for smoother rotation of an object viewed from a finite number of angles. Avoids zigzag and jerky rotation when the user drags diagonally by resetting the drag origin at the time a new view displays when the pointer exits a region centered on the drag origin. 
         [0027]    Specific preferred embodiments of the present invention are described hereinabove; it is to be understood that the invention is not limited to those particular embodiments, and one skilled in the art may make various changes and modifications without departing the form the scope or the spirit of the invention as it is defined in the attached claims.