U.S. patent number RE46,758 [Application Number 13/890,934] was granted by the patent office on 2018-03-20 for animation of graphical objects.
This patent grant is currently assigned to Apple Inc.. The grantee listed for this patent is Apple Inc.. Invention is credited to Thomas Dowdy, David Heller, Anne Jones.
United States Patent |
RE46,758 |
Dowdy , et al. |
March 20, 2018 |
Animation of graphical objects
Abstract
A method for animating graphical objects is provided. In one
embodiment, the method includes providing a plurality of graphical
objects and displaying a subset of the objects in a viewport. In
this embodiment, the method may also include calculating a virtual
destination for one of the graphical objects based on a received
user input, and moving the graphical object to the virtual
destination over a period of time. Various additional methods,
machine-readable media, and devices for animating graphical objects
and controlling operational characteristics of a device are also
provided.
Inventors: |
Dowdy; Thomas (Sunnyvale,
CA), Heller; David (San Jose, CA), Jones; Anne
(Emerald Hills, CA) |
Applicant: |
Name |
City |
State |
Country |
Type |
Apple Inc. |
Cupertino |
CA |
US |
|
|
Assignee: |
Apple Inc. (Cupertino,
CA)
|
Family
ID: |
40409459 |
Appl.
No.: |
13/890,934 |
Filed: |
May 9, 2013 |
Related U.S. Patent Documents
|
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
Issue Date |
|
Reissue of: |
11899036 |
Sep 4, 2007 |
7941758 |
May 10, 2011 |
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F
9/451 (20180201); G06F 3/04883 (20130101); G06F
3/0481 (20130101); G06F 3/04883 (20130101); G06F
9/451 (20180201); G06F 3/0481 (20130101); G06F
2203/04802 (20130101); G06F 2203/04802 (20130101) |
Current International
Class: |
G06F
3/048 (20130101); G06F 3/0488 (20130101); G06F
9/44 (20180101); G06F 3/0481 (20130101) |
Field of
Search: |
;715/700,744,764,765,781,810,835,839,846,864,766,767,775,785,802,828-831,834,838,848,850
;345/169,173,473-475,902 |
References Cited
[Referenced By]
U.S. Patent Documents
Other References
Darrel Plant, "What's a Besier Curve?", Feb. 1, 2001,
http://www.moshplant.com/direct-or/bezier/index.html. cited by
examiner .
Dave Caolo "Browse iTunes cover art with CoverFlow" published Aug.
11, 2005, pp. 1-4. cited by applicant .
"CoverFlow" downloaded from
www.steelskies.com/coverflow/homepage.html via the Wayback Machine,
Jan. 10, 2006. p. 1. cited by applicant .
Brian Benzinger "CoverFlow--Find and view album art" published Aug.
24, 2005 pp. 1-4. cited by applicant .
"CoverFlow FAQ" downloaded from
www.steelskies.com/coverflow/faq.html via the Wayback Machine, Jan.
11, 2006 p. 1. cited by applicant .
"CoverFlow Features" downloaded from
www.steelskies.com/coverflow/features.html via the Wayback Machine,
Jan. 11, 2006 p. 1. cited by applicant .
"CoverFlow : my visual album browser needs your help" Ars Technica
Forum discussion, Jun. 27-28, 2005, pp. 1-44. cited by applicant
.
"CoverFlow" revised Jul. 4, 2005, downloaded from
www.steelskies.com/coverflow/homepage.html p. 1. cited by applicant
.
Ben Whitehouse "CoverFlow: Better Digital Music Navigation"
published Aug. 15, 2005, downloaded from wandco.com, pp. 1-2. cited
by applicant .
Jonathan del Strother "CoverFlow, Tech Demo Dec. 2005" Dec. 2005,
pp. 1-4. cited by applicant .
Tremblay, Christopher, U.S. Appl. No. 11/899,033, filed Sep. 4,
2007. cited by applicant .
Tremblay, Christopher, U.S. Appl. No. 11/899,166, filed Sep. 4,
2007. cited by applicant.
|
Primary Examiner: Campbell; Joshua
Attorney, Agent or Firm: Kowert; Robert C. Meyertons, Hood,
Kivlin, Kowert & Goetzel, P.C.
Claims
What is claimed is:
1. A method comprising: defining a plurality of evaluators
associated with respective operational characteristics of a device;
defining a control function dependent on time and including first
and second evaluators of the plurality of evaluators, wherein at
least one of the first or second evaluators includes an additional
function dependent on time; and storing the plurality of evaluators
and the control function in a memory of the device, wherein .[.the
device is configured to vary.]. the operational characteristics
associated with the first and second evaluators .Iadd.vary
.Iaddend.based at least in part on the control function; wherein
the operational characteristics associated with the first and
second evaluators comprise one or more display characteristics of a
.Iadd.given .Iaddend.graphical object.[.,.]. .Iadd.and .Iaddend.the
control function comprises a rendering function.[., and the device
is configured to animate.]..Iadd.; the method further comprising:
determining a target position for a graphical object outside of a
display of the device based on a user input; animating .Iaddend.the
graphical object .[.and to vary.]..Iadd.; varying .Iaddend.the one
or more display characteristics associated with the first and
second evaluators during animation of the graphical object
.Iadd.over a pre-determined period of time .Iaddend.based at least
in part on the rendering function; .Iadd.determining another target
position for the graphical object or another graphical object
outside of the display of the device based on another user input,
wherein the target position and the other target position are
different distances from a position of the graphical object or the
other graphical object; animating the graphical object or the other
graphical object; and varying the one or more display
characteristics associated with the first and second evaluators
during animation of the graphical object or the other graphical
object over the pre-determined period of time based at least in
part on the rendering function, .Iaddend. wherein the rendering
function comprises a recursive interpolation function for animating
the .Iadd.given .Iaddend.graphical object.Iadd., over the
pre-determined period of time, .Iaddend.between a source position
.Iadd.on the display of the device .Iaddend.and a target position
.Iadd.outside the display of the device.Iaddend.; and wherein
.[.the target.]. .Iadd.a current .Iaddend.position .Iadd.for the
given graphical object being animated between the source position
and the target position at a given time within the pre-determined
period of time .Iaddend.is defined at least in part by one of the
first or second evaluators including the additional function
dependent on time such that the .[.target.]. .Iadd.current
.Iaddend.position varies with respect to time, and the .Iadd.given
.Iaddend.graphical object is animated from the source position to
the target position over .[.a.]. .Iadd.the pre-determined
.Iaddend.period of time such that the .Iadd.given
.Iaddend.graphical object arrives .[.substantially.]. at the
.[.current.]. target position at the end of the
.Iadd.pre-determined .Iaddend.period of time.
2. The method of claim 1, wherein the one or more display
characteristics associated with the first and second evaluators
comprise a position of the .Iadd.given .Iaddend.graphical
object.
3. The method of claim 1, wherein the additional function dependent
on time includes at least one of a linear function, a polynomial
function, an exponential function, a logarithmic function, or a
trigonometric function.
4. The method of claim 1, wherein the rendering function .[.is
configured to adjust.]. .Iadd.adjusts .Iaddend.a plurality of
display characteristics of the .Iadd.given .Iaddend.graphical
object via evaluators, the display characteristics comprising two
or more of position, velocity, acceleration, size, opacity, or
color.
5. The method of claim 1, wherein the first and second evaluators
of the control function operate concurrently.
6. A method comprising: providing a plurality of graphical objects;
displaying a subset of the plurality of graphical objects in a
viewport of a display; receiving a user input; calculating a
virtual destination for at least one graphical object of the subset
based on the user input; and moving the at least one graphical
object to the virtual destination over a .Iadd.pre-determined
.Iaddend.time period .Iadd.according to a time dependent function
as time elapses during the pre-determined time period.Iaddend.,
wherein moving the at least one graphical object comprises moving
the at least one graphical object from an actual display position
within the viewport to a virtual display position .Iadd.outside of
the viewport of the display such that the at least one graphical
object arrives at the virtual display position at the end of the
pre-determined time period; receiving another user input;
calculating another virtual destination for another at least one
graphical object of the subset based on the other user input,
wherein a distance between the at least one graphical object and
the virtual destination and another distance between the other at
least graphical object and the other virtual destination are
different distances; moving the other at least one graphical object
to the other virtual destination over the pre-determined time
period according to the time dependent function as time elapses
during the pre-determined time period, wherein moving the other at
least one graphical object comprises moving the other at least one
graphical object from an actual display position within the
viewport to the other virtual display position outside of the
viewport of the display such that the other at least one graphical
object arrives at the other virtual display position at the end of
the pre-determined time period.Iaddend..
7. The method of claim 6, comprising: receiving an additional user
input .Iadd.while moving the at least one graphical object
.Iaddend.during the .Iadd.pre-determined .Iaddend.time period;
updating the virtual destination for the at least one graphical
object based on the additional user input; and moving the at least
one graphical object to the updated virtual destination over an
additional .Iadd.pre-determined .Iaddend.time period.
8. The method of claim 6, wherein moving the at least one graphical
object comprises moving the at least one graphical object according
to a function including an evaluator.
9. The method of claim 6, wherein moving the at least one graphical
object comprises moving the at least one graphical object according
to an interpolation between its original position and its virtual
destination.
10. The method of claim .[.6.]. .Iadd.9.Iaddend., wherein the
interpolation comprises a .[.linear.]. .Iadd.non-linear
.Iaddend.interpolation.
.[.11. The method of claim 6, wherein the virtual destination is
outside of the viewport..].
12. The method of claim 6, comprising: calculating virtual
destinations for each graphical object of the plurality of
graphical objects based on the user input; and animating the
sequence of graphical objects of the plurality of graphical objects
within the viewport over the .Iadd.pre-determined .Iaddend.time
period such that each graphical object of the plurality of
graphical objects is moved to its respective virtual destination
.[.over.]. .Iadd.at the end of .Iaddend.the .Iadd.pre-determined
.Iaddend.time period.
13. A device comprising: a housing; a display disposed in the
housing; a memory device disposed in the housing, the memory device
including executable application instructions stored therein; and a
processor disposed in the housing .[.and configured to
execute.]..Iadd., wherein .Iaddend.the application instructions
stored in the memory device.[.; wherein the device is configured
to.]..Iadd., when executed by the processor, cause the device to:
.Iaddend.pan through a plurality of images in response to a user
input, .Iadd.wherein to pan through the plurality of images the
application instructions when executed by the processor cause the
device to: calculate, based on the user input, a virtual
destination outside of the viewport of the display; move
.Iaddend.at least one image .[.is moved.]. .Iadd.of the plurality
of images .Iaddend.over a .Iadd.pre-determined .Iaddend.period of
time to .[.a.]. .Iadd.the .Iaddend.virtual destination .[.that is
calculated from the user input,.]. .Iadd.according to a time
dependent function as time elapses during the pre-determined period
of time; .Iaddend.and .[.the.]. .Iadd.move .Iaddend.at least one
.Iadd.other .Iaddend.image .[.is moved.]. .Iadd.of the plurality of
images .Iaddend.at least between a virtual display position outside
of the display and an actual display position within the display
.Iadd.according to the time dependent function as time elapses
during the pre-determined period of time, and wherein to perform
another pan through the plurality of images the application
instructions when executed by the processor cause the device to:
calculate, based on another user input, another virtual destination
outside of the viewport of the display, wherein a distance to the
virtual destination and a distance to the other virtual destination
are different distances; move at least one image of the plurality
of images over the pre-determined period of time to the other
virtual destination according to the time dependent function as
time elapses during the pre-determined period of time; and move at
least one other image of the plurality of images at least between a
virtual display position outside of the display and an actual
display position within the display according to the time dependent
function as time elapses during the pre-determined period of
time.Iaddend..
14. The device of claim 13, wherein the device comprises a
touch-sensitive user interface, and the virtual destination
.Iadd.or the other virtual destination .Iaddend.calculated depends
on .[.the.]. .Iadd.a .Iaddend.speed of .[.the.]. .Iadd.a
.Iaddend.user movement on the touch-sensitive interface.
15. The device of claim 13, wherein the plurality of images
comprises .[.at least one of.]. a photograph .[.or cover art for a
media file.]..
16. One or more .Iadd.non-transitory .Iaddend.machine-readable
storage media having application instructions encoded thereon, the
application instructions comprising: instructions for displaying a
portion of a sequence of images; instructions for calculating a
virtual destination for a particular image of the sequence of
images based on a user input; .[.and.]. instructions for animating
the sequence of images over a first .Iadd.pre-determined
.Iaddend.time period .Iadd.according to a time dependent function
as time elapses during the first pre-determined time period
.Iaddend.such that the particular image arrives at .[.its.].
.Iadd.the .Iaddend.virtual destination at the end of the first
.Iadd.pre-determined .Iaddend.time period.Iadd.; instructions for
calculating another virtual destination for the particular image or
for another particular image of the sequence of images based on
another user input, wherein the other virtual destination is
outside of a display of a device displaying the portion of the
sequence of images and wherein the other virtual destination is
further away from or closer to the particular image or the other
particular image in the sequence of images than is the virtual
destination in the sequence of images from the particular image;
and instructions for animating the sequence of images over another
predetermined time period having a same duration as the first
pre-determined time period according to the time dependent function
as time elapses during the other pre-determined time period such
that the particular image or the other particular image arrives at
the other virtual destination at the end of the other
pre-determined time period.Iaddend..
17. The one or more .Iadd.non-transitory .Iaddend.machine-readable
storage media of claim 16, wherein the application instructions
comprise instructions for updating the virtual destination .Iadd.or
the other virtual destination .Iaddend.in response to an additional
user input, wherein the instructions for updating comprise
instructions to cancel any animation process remaining for the
first .Iadd.pre-determined .Iaddend.time period .Iadd.or the other
pre-determined time period .Iaddend.in favor of a new animation
process to move the particular image .Iadd.or the other particular
image .Iaddend.to the updated virtual destination over a second
.Iadd.pre-determined .Iaddend.time period.
18. The one or more .Iadd.non-transitory .Iaddend.machine-readable
storage media of claim 16, wherein the one or more
.Iadd.non-transitory .Iaddend.machine-readable storage media
comprise a flash memory device.
.Iadd.19. The method of claim 6, further comprising adjusting a
plurality of display characteristics of the at least one graphical
object or the other at least one graphical object, wherein the
display characteristics include position, velocity, acceleration,
size, opacity, or color. .Iaddend.
.Iadd.20. The method of claim 6, wherein at least some of the
subset of graphical objects are displayed at an angle relative to
the display. .Iaddend.
.Iadd.21. The method of claim 6, wherein the virtual destination or
the other virtual destination is calculated in three dimensions.
.Iaddend.
.Iadd.22. The method of claim 6, wherein said moving the at least
one graphical object or said moving the other at least on graphical
object is performed about a virtual axis. .Iaddend.
.Iadd.23. The method of claim 6, wherein an opacity of the at least
one graphical object at the actual display position is different
than an opacity of the at least one graphical object at the virtual
display position or the other virtual display position; or an
opacity of the other at least one graphical object at the actual
display position is different than an opacity of the other at least
one graphical object at the other virtual display position.
.Iaddend.
.Iadd.24. The method of claim 6, wherein the calculated virtual
destination includes the virtual display position and the other
calculated virtual destination includes the other virtual display
position. .Iaddend.
.Iadd.25. The device of claim 13, wherein the plurality of images
comprises cover art for a media file. .Iaddend.
.Iadd.26. The device of claim 13, wherein the application
instructions when executed by the processor further cause the
device to adjust display characteristics of the at least one image,
wherein the display characteristics include position, velocity,
acceleration, size, opacity, or color. .Iaddend.
.Iadd.27. The device of claim 13, wherein the at least one image or
the other at least one image is moved over an additional
pre-determined time period to an updated virtual destination that
is calculated from an additional user input received during the pan
through the plurality of images or the other pan through the
plurality of images. .Iaddend.
.Iadd.28. The device of claim 13, wherein the user input or the
other user input is received as an input to a touch-sensitive user
interface. .Iaddend.
.Iadd.29. The device of claim 13, wherein at least some of the
plurality of images are displayed at an angle relative to the
display. .Iaddend.
.Iadd.30. The device of claim 13, wherein the virtual destination
or the other virtual destination is calculated in three-dimensions.
.Iaddend.
.Iadd.31. The device of claim 13, wherein the at least one image is
moved about a virtual axis. .Iaddend.
.Iadd.32. The device of claim 13, wherein an opacity of the at
least one image at the actual display position is different than an
opacity of the at least one image at the virtual display position
or the other virtual display position. .Iaddend.
.Iadd.33. The device of claim 13, wherein the calculated virtual
destination includes the virtual display position, wherein the
virtual display position includes coordinates outside of the
display. .Iaddend.
.Iadd.34. The one or more non-transitory machine-readable storage
media of claim 16, wherein the application instructions further
comprise: instructions for adjusting display characteristics of the
particular image or the other particular image, wherein the display
characteristics include at least one of position, velocity,
acceleration, size, opacity, or color. .Iaddend.
.Iadd.35. The one or more non-transitory machine readable storage
media of claim 16, wherein the application instructions further
comprise: instructions for updating the virtual destination for the
particular image based on an additional user input; and
instructions for animating the sequence of images over a second
pre-determined time period such that the particular image arrives
at the updated virtual destination at the end of the second
pre-determined time period. .Iaddend.
.Iadd.36. The one or more non-transitory machine-readable storage
media of claim 16, wherein the user input or the other user input
is received via a touch-sensitive user interface, and wherein the
calculated virtual destination or the other calculated virtual
destination depends on a speed of a user movement on the
touch-sensitive user interface. .Iaddend.
.Iadd.37. The one or more non-transitory machine-readable storage
media of claim 16, wherein at least some of the images in the
sequence of images are displayed at an angle relative to the
display. .Iaddend.
.Iadd.38. The one or more non-transitory machine-readable storage
media of claim 16, wherein the virtual destination or the other
virtual destination is calculated in three dimensions.
.Iaddend.
.Iadd.39. The one or more non-transitory machine-readable storage
media of claim 16, wherein said animating is performed about a
virtual axis. .Iaddend.
.Iadd.40. The one or more non-transitory machine-readable storage
media of claim 16, wherein an opacity of the particular image at
its virtual destination is different than an opacity of the
particular image at another destination and an opacity of the
particular image or the other particular image at its other virtual
destination is different than an opacity of the particular image or
the other particular image at another destination. .Iaddend.
.Iadd.41. A non-transitory computer-readable storage medium storing
program instructions, wherein the program instructions are
computer-executable to implement: displaying a subset of graphical
objects of a plurality of graphical objects, wherein the plurality
of graphical objects are associated with respective coordinates; in
response to user input, determining a virtual position for at least
one graphical object of the subset of graphical objects, wherein
the virtual position is associated with coordinates corresponding
to a location outside of a display area; moving the at least one
graphical object from its respective coordinates to the coordinates
of the virtual position over a pre-determined period of time
according to a time dependent function as time elapses during the
pre-determined period of time; and in response to another user
input, determining another virtual position for the at least one
graphical object or another at least one graphical object of the
subset of graphical objects, wherein the other virtual position is
associated with coordinates corresponding to a location outside of
the display area; moving the at least one graphical object or the
other at least one graphical object from its respective coordinates
to the coordinates of the other virtual position over the
pre-determined period of time according to the time dependent
function as time elapses during the pre-determined period of time,
wherein a distance to move the at least one graphical object to the
virtual position and a distance to move the at least one graphical
object or the other at least one graphical object to the other
virtual position are different distances. .Iaddend.
.Iadd.42. A method, comprising: performing, by a computing device:
displaying a subset of graphical objects of a plurality of
graphical objects, wherein the plurality of graphical objects are
associated with respective coordinates; in response to a user
input, determining a virtual position for at least one graphical
object of the subset of graphical objects, wherein the virtual
position is associated with coordinates corresponding to a location
outside of a display area; and moving the at least one graphical
object from its respective coordinates to the coordinates of the
virtual position over a pre-determined period of time according to
a time dependent function as time elapses during the pre-determined
period of time; in response to another user input, determining
another virtual position for the at least one graphical object or
another at least one graphical object of the subset of graphical
objects, wherein the other virtual position is associated with
coordinates corresponding to a location outside of the display
area; and moving the at least one graphical object or the other at
least one graphical object from its respective coordinates to the
coordinates of the other virtual position over the pre-determined
period of time according to the time dependent function as time
elapses during the pre-determined period of time, wherein a
distance to move the at least one graphical object to the virtual
position and a distance to move the at least one graphical object
or the other at least one graphical object to the other virtual
position are different distances. .Iaddend.
Description
BACKGROUND
1. Technical Field
The present invention relates generally to image processing and,
more particularly, to the animation of graphical objects within
graphical user interfaces.
2. Description of the Related Art
This section is intended to introduce the reader to various aspects
of art that may be related to various aspects of the present
invention, which are described and/or claimed below. This
discussion is believed to be helpful in providing the reader with
background information to facilitate a better understanding of the
various aspects of the present invention. Accordingly, it should be
understood that these statements are to be read in this light, and
not as admissions of prior art.
Electronic devices and systems increasingly include display screens
as part of the user interface of the device or system. As may be
appreciated, display screens may be employed in a wide array of
devices and systems, including desktop computer systems, notebook
computers, and handheld computing devices, as well as various
consumer products, such as cellular phones and portable media
players. Such display screens may be useful for displaying status
information about the device or for displaying information about an
operation being performed by the device. For example, portable
music and/or video players may display information about a music or
video file being played by the device, such as the title of the
song or video being played, the time remaining, the time elapsed,
the artist or cast, or other information of interest.
Alternatively, the display of such a device may display a piece of
artwork or an arbitrary design during operation of the device.
In some instances, it may be desirable to show an image including
one or more graphical objects on the display screen, and to allow a
user to pan through a relatively large set of such graphical
objects. Further, in some cases, the number of graphical objects
may exceed that which may be conveniently displayed at one time. In
these cases, the display screen may depict only a subset of the
total number of graphical objects, and the particular displayed
subset may change as a user pans through the total number of
graphical objects. Further, the animation of images and graphical
objects may consume a significant amount of memory and processing
resources, which may negatively impact performance of the
electronic device.
SUMMARY
Certain aspects of embodiments disclosed herein by way of example
are summarized below. It should be understood that these aspects
are presented merely to provide the reader with a brief summary of
certain forms an invention disclosed and/or claimed herein might
take and that these aspects are not intended to limit the scope of
any invention disclosed and/or claimed herein. Indeed, any
invention disclosed and/or claimed herein may encompass a variety
of aspects that may not be set forth below.
The present disclosure generally relates to techniques for
animating graphical objects and images, and for controlling other
operational aspects of a device or system. In accordance with one
disclosed embodiment, an exemplary method may include controlling
and adjusting display characteristics of an image via one or more
evaluators. Such display characteristics, in various embodiments,
may include position, velocity, acceleration, size, and/or opacity,
for example. In some embodiments, multiple evaluators may be
incorporated into a rendering function to create complex visual
animation effects of one or more graphical objects. In other
embodiments, evaluators may be used to control other operational
aspects of a device, such as a sound generated by the device. In
accordance with another disclosed embodiment, an exemplary method
may include displaying a portion of a set of images, and moving one
or more of the images to a virtual destination in response to a
user input. Further, in some embodiments, the virtual destination
may be updated in mid-animation upon the receipt of an additional
user input, facilitating a smooth animation of the object from its
original position to the updated virtual destination.
Various refinements of the features noted above may exist in
relation to various aspects of the present invention. Further
features may also be incorporated in these various aspects as well.
These refinements and additional features may exist individually or
in any combination. For instance, various features discussed below
in relation to one or more of the illustrated embodiments may be
incorporated into any of the above-described aspects of the present
invention alone or in any combination. Again, the brief summary
presented above is intended only to familiarize the reader with
certain aspects and contexts of embodiments of the present
invention without limitation to the claimed subject matter.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other features, aspects, and advantages of the present
invention will become better understood when the following detailed
description of certain exemplary embodiments is read with reference
to the accompanying drawings in which like characters represent
like parts throughout the drawings, wherein:
FIG. 1 is a perspective view illustrating a portable media player
in accordance with one embodiment of the present invention;
FIG. 2 is a simplified block diagram of the portable media player
of FIG. 1 in accordance with one embodiment of the present
invention;
FIG. 3 is a flowchart depicting a process for animating a graphical
object in accordance with one embodiment of the present
invention;
FIG. 4 illustrates the animation of a graphical object through use
of an evaluator accordance with one embodiment of the present
invention;
FIG. 5 generally depicts the movement of a graphical object through
use of a time-varying evaluator in accordance with one embodiment
of the present invention;
FIG. 6 depicts the animation of a graphical object in which values
for the location of the object and the opacity of the object are
output from time-dependent evaluators in accordance with one
embodiment of the present invention;
FIG. 7 is a flowchart depicting a process for animating a series of
images in accordance with one embodiment of the present
invention;
FIG. 8 illustrates an exemplary viewport including images that
include cover art associated with one or more media files in
accordance with one embodiment of the present invention;
FIG. 9 is a diagram generally illustrating a series of image
objects in relative positions and the calculation of a virtual
destination for a particular image object in accordance with one
embodiment of the present invention;
FIG. 10 is a diagram illustrating the movement of the series of
image objects of FIG. 9 such that the particular image object is
located at its virtual destination in accordance with one
embodiment;
FIG. 11 is a diagram generally illustrating a series of image
objects and the calculation of a first virtual destination and a
second, updated virtual destination for a particular image object
in accordance with one embodiment of the present invention;
FIG. 12 is a diagram illustrating the position of the image objects
of FIG. 11 at the time the second virtual destination is calculated
in one embodiment of the present invention; and
FIG. 13 is a diagram illustrating the movement of the series of
image objects of FIGS. 11 and 12 such that the particular image
object is located at its updated virtual destination in accordance
with one embodiment of the present invention.
DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS
One or more specific embodiments of the present invention will be
described below. These described embodiments are only exemplary of
the present invention. Additionally, in an effort to provide a
concise description of these exemplary embodiments, all features of
an actual implementation may not be described in the specification.
It should be appreciated that in the development of any such actual
implementation, as in any engineering or design project, numerous
implementation-specific decisions must be made to achieve the
developers' specific goals, such as compliance with system-related
and business-related constraints, which may vary from one
implementation to another. Moreover, it should be appreciated that
such a development effort might be complex and time consuming, but
would nevertheless be a routine undertaking of design, fabrication,
and manufacture for those of ordinary skill having the benefit of
this disclosure.
An exemplary electronic device 10 is illustrated in FIG. 1 in
accordance with one embodiment of the present invention. In some
embodiments, including the presently illustrated embodiment, the
device 10 may be a portable electronic device, such as a media
player, a cellular phone, a personal data organizer, or the like.
Indeed, in such embodiments, a portable electronic device may
include a combination of the functionalities of such devices. In
addition, the electronic device 10 may allow a user to connect to
and communicate through the Internet or through other networks,
such as local or wide area networks. For example, the portable
electronic device 10 may allow a user to access the internet and to
communicate using e-mail, text messaging, instant messaging, or
using other forms of electronic communication. By way of example,
the electronic device 10 may be a model of an iPod having a display
screen or an iPhone available from Apple Inc.
In certain embodiments, the device 10 may be powered by one or more
rechargeable and/or replaceable batteries. Such embodiments may be
highly portable, allowing a user to carry the electronic device 10
while traveling, working, exercising, and so forth. In this manner,
and depending on the functionalities provided by the electronic
device 10, a user may listen to music, play games or video, record
video or take pictures, place and receive telephone calls,
communicate with others, control other devices (e.g., via remote
control and/or Bluetooth functionality), and so forth while moving
freely with the device 10. In addition, device 10 may be sized such
that it fits relatively easily into a pocket or a hand of the user.
While certain embodiments of the present invention are described
with respect to a portable electronic device, it should be noted
that the presently disclosed techniques may be applicable to a wide
array of other, less portable, electronic devices and systems that
are configured to render graphical data, such as a desktop
computer.
In the presently illustrated embodiment, the exemplary device 10
includes an enclosure or housing 12, a display 14, user input
structures 16, and input/output connectors 18. The enclosure 12 may
be formed from plastic, metal, composite materials, or other
suitable materials, or any combination thereof. The enclosure 12
may protect the interior components of the electronic device 10
from physical damage, and may also shield the interior components
from electromagnetic interference (EMI).
The display 14 may be a liquid crystal display (LCD), a light
emitting diode (LED) based display, an organic light emitting diode
(OLED) based display, or some other suitable display. In accordance
with certain embodiments of the present invention, the display 14
may display a user interface and various other images, such as
logos, avatars, photos, album art, and the like. Additionally, in
one embodiment, the display 14 may include a touch screen through
which a user may interact with the user interface. The display may
also include various function and/or system indicators to provide
feedback to a user, such as power status, call status, memory
status, or the like. These indicators may be incorporated into the
user interface displayed on the display 14.
In one embodiment, one or more of the user input structures 16 are
configured to control the device 10, such as by controlling a mode
of operation, an output level, an output type, etc. For instance,
the user input structures 16 may include a button to turn the
device 10 on or off. Further the user input structures 16 may allow
a user to interact with the user interface on the display 14.
Embodiments of the portable electronic device 10 may include any
number of user input structures 16, including buttons, switches, a
control pad, a scroll wheel, or any other suitable input
structures. The user input structures 16 may work with the user
interface displayed on the device 10 to control functions of the
device 10 and/or any interfaces or devices connected to or used by
the device 10. For example, the user input structures 16 may allow
a user to navigate a displayed user interface or to return such a
displayed user interface to a default or home screen.
The exemplary device 10 may also include various input and output
ports 18 to allow connection of additional devices. For example, a
port 18 may be a headphone jack that provides for the connection of
headphones. Additionally, a port 18 may have both input/output
capabilities to provide for connection of a headset (e.g., a
headphone and microphone combination). Embodiments of the present
invention may include any number of input and/or output ports, such
as headphone and headset jacks, universal serial bus (USB) ports,
IEEE-1394 ports, and AC and/or DC power connectors. Further, the
device 10 may use the input and output ports to connect to and send
or receive data with any other device, such as other portable
electronic devices, personal computers, printers, or the like. For
example, in one embodiment, the device 10 may connect to a personal
computer via an IEEE-1394 connection to send and receive data
files, such as media files.
Additional details of the illustrative device 10 may be better
understood through reference to FIG. 2, which is a block diagram
illustrating various components and features of the device 10 in
accordance with one embodiment of the present invention. In the
presently illustrated embodiment, the device 10 includes the
display 14 and the I/O ports 18 discussed above. In addition, as
discussed in greater detail below, the exemplary device 10 may
include a user interface 20, one or more processors 22, a memory
device 24, a non-volatile storage 26, card interface(s) 28, a
networking device 30, and a power source 32.
As discussed further herein, the user interface 20 may be displayed
on the display 14, and may provide a means for a user to interact
with the electronic device 10. The user interface may be a textual
user interface, a graphical user interface (GUI), or any
combination thereof, and may include various layers, windows,
screens, templates, elements, or other components that may be
displayed in all or in part of the display 14. The user interface
20 may, in certain embodiments, allow a user to interface with
displayed interface elements via one or more user input structures
16 and/or via a touch sensitive implementation of the display 14.
In such embodiments, the user interface provides interactive
functionality, allowing a user to select, by touch screen or other
input structure, from among options displayed on the display 14.
Thus the user can operate the device 10 by appropriate interaction
with the user interface 20.
The processor(s) 22 may provide the processing capability required
to execute the operating system, programs, user interface 20, and
any other functions of the device 10. The processor(s) 22 may
include one or more microprocessors, such as one or more
"general-purpose" microprocessors, one or more special-purpose
microprocessors and/or ASICS, or some combination thereof. For
example, the processor 22 may include one or more reduced
instruction set (RISC) processors, such as a RISC processor
manufactured by Samsung, as well as graphics processors, video
processors, and/or related chip sets.
As noted above, embodiments of the electronic device 10 may also
include a memory 24. The memory 24 may include a volatile memory,
such as random access memory (RAM), and/or a non-volatile memory,
such as read-only memory (ROM). The memory 24 may store a variety
of information and may be used for various purposes. For example,
the memory 24 may store the firmware for the device 10, such as an
operating system, other programs that enable various functions of
the device 10, user interface functions, processor functions, and
may be used for buffering or caching during operation of the device
10.
The non-volatile storage 26 of device 10 of the presently
illustrated embodiment may include ROM, flash memory, a hard drive,
or any other suitable optical, magnetic, or solid-state storage
medium, or a combination thereof. The storage 26 may store data
files such as media (e.g., music and video files), software (e.g.,
for implementing functions on device 10), preference information
(e.g., media playback preferences), lifestyle information (e.g.,
food preferences), exercise information (e.g., information obtained
by exercise monitoring equipment), transaction information (e.g.,
information such as credit card information), wireless connection
information (e.g., information that may enable the device 10 to
establish a wireless connection, such as a telephone connection),
subscription information (e.g., information that maintains a record
of podcasts, television shows, or other media to which a user
subscribes), telephone information (e.g., telephone numbers), and
any other suitable data.
The embodiment illustrated in FIG. 2 also includes one or more card
slots 28. The card slots may be configured to receive expansion
cards that may be used to add functionality to the device 10, such
as additional memory, I/O functionality, or networking capability.
Such an expansion card may connect to the device through any type
of suitable connector, and may be accessed internally or external
to the enclosure 12. For example, in one embodiment, the card may
be flash memory card, such as a SecureDigital (SD) card, mini- or
microSD, CompactFlash card, Multimedia card (MMC), or the like.
Additionally, in an embodiment including mobile telephone
functionality, a card slot 28 may receive a Subscriber Identity
Module (SIM) card.
The exemplary device 10 depicted in FIG. 2 also includes a network
device 30, such as a network controller or a network interface card
(NIC). In one embodiment, the network device 30 may be a wireless
NIC providing wireless connectivity over any 802.11 standard or any
other suitable wireless networking standard. The network device 30
may allow the device 10 to communicate over a network, such as a
LAN, WAN, MAN, or the Internet. Further, the device 10 may connect
to and send or receive data with any device on the network, such as
portable electronic devices, personal computers, printers, and so
forth. For example, in one embodiment, the device 10 may connect to
a personal computer via the network device 30 to send and receive
data files, such as media files. Alternatively, in some
embodiments, the portable electronic device may not include a
network device 30. In such an embodiment, a NIC may be added into
card slot 28 to provide similar networking capability as described
above.
Further, the device 10 may also include a power source 32. In one
embodiment, the power source 32 may be one or more batteries, such
as a Li-Ion battery, may be user-removable or secured to the
housing 12, and may or may not be rechargeable. Additionally, the
power source 32 may include AC power, such as provided by an
electrical outlet, and the device 10 may be connected to the power
source 32 via the I/O ports 18.
.[.In.]. .Iadd.It .Iaddend.should again be noted that various
images and data, including graphical data, may be processed and
displayed by the device 10. Keeping this in mind, a flowchart of an
exemplary method 40 for animating graphical objects is illustrated
in FIG. 3 in accordance with one embodiment of the present
invention. The exemplary method 40 may include defining a plurality
of evaluators associated with a graphical object, as generally
indicated in block 42. As used herein, an evaluator is a function
that returns a value associated with some operational
characteristic of a device or system. In various embodiments, such
operational characteristics may include a display characteristic of
a graphical object in display screen, a characteristic of a sound
generated by the device, an internal property, or the like. In some
embodiments, evaluators are components containing a mathematical
function that is sampled along with various parameters. For
instance, in one embodiment, an evaluator may include a function
that calls for a linear interpolation between two values. In this
case, the parameters may include a time evaluator that interpolates
time from start to end, as well as the beginning and end value for
the interpolation. Additionally, in some instances, the evaluators
can also be defined recursively. For example, instead of using two
constant values for the linear interpolation, the start and/or end
points themselves could also be defined as a linear interpolation
between two sets of unique values, which may create what is known
as a Bezier curve with the fundamental definition of
evaluators.
In some embodiments, a basic set of evaluators (e.g., addition,
subtraction, multiplication, linear interpolation, trigonometric
interpolation, spherical interpolation, or the like) may be defined
with various parameters, such as time, or simply two evaluators
(i.e., defined recursively). Once a working set of evaluators has
been defined, these evaluators may be used in various combinations
to create desired effects. Consequently, in one embodiment, a given
task (e.g., animating an object, controlling a sound or internal
process, or the like) may be accomplished via selection of an
appropriate combination of evaluators, rather than requiring the
creation of entirely new functions or substantial modification of
existing functions. Moreover, in one embodiment, the evaluators can
also be used in an animation design tool where each component, or
"box", defines a single function that can be combined with other
components to perform complex tasks attached to a selected
property.
As noted above, in some embodiments, an evaluator may return a
constant value, or may include a time-based function such that the
value returned by or sampled from the evaluator varies with respect
to time. Both constant evaluators and time-varying evaluators may
return a value associated with any number of display
characteristics of a graphical object. For instance, an evaluator
may return a value associated with the position, size, velocity,
acceleration, color, opacity, or some other characteristic of the
display object. Specific exemplary uses of some such evaluators are
discussed below with respect to FIGS. 4-6.
The exemplary method 40 may also include defining a control
function, such as a rendering function (in those embodiments
relating to control of graphical animation), that includes such
evaluators, as generally indicated in block 44. In other
embodiments, however, the control function may be defined to modify
other, non-display characteristics, such as those noted above. In
the presently illustrated embodiment, the method 40 also includes
storing the evaluators and the rendering (or other control)
function, as generally depicted in block 46. As will be
appreciated, the evaluators and the rendering function may be
stored in any suitable memory and/or storage device, such as the
memory 24 and/or the non-volatile storage 26 of device 10, as
described above. In some embodiments, the method 40 may also
include animating a graphical object via the rendering function, as
generally provided in block 48. In various embodiments, the
animated graphical object may be a photograph, cover art, avatars,
icons, an individual pixel, or any other desired graphical or image
object.
While numerous aspects of a graphical object may be manipulated via
the evaluators and the rendering function noted above, specific
examples of such evaluators and animation are discussed below with
reference to FIGS. 4-6 for illustrative purposes. It will be
appreciated, however, that these examples are merely provided for
the sake of clarity, and other animations and operations may be
performed via evaluators in full accordance with the present
techniques.
With reference to an exemplary graph 60 of FIG. 4, and by way of
example, it may be desirable to animate a graphical object 62 from
a starting point (a) to a destination point (b) over a desired
period of time (t). Although the graph 60 is generally illustrated
as a two-dimensional rectangular coordinate system, with units of
distance along the horizontal and vertical axes 64 and 66,
respectively, it will be appreciated that the present techniques
may also be applied in various other coordinate systems, including
a three-dimensional system. In the exemplary graph 60, point a is
located at coordinates (0,0) and point b is located at coordinates
(8,4). In one embodiment, an evaluator "A" may be defined to return
the location of point a, and an evaluator "B" may be defined to
return the location of point b. A rendering function for animating
the graphical object 62 from point a to point b may then be defined
as a linear interpolation from the value returned by evaluator A to
the value returned by evaluator B over a desired period of time,
such as four seconds, or: R(t)=lerp(A,B), over t=0 to t=4. In this
embodiment, execution of the rendering function results in the
movement of the graphical object 62 from point a to point b along a
path 68 over the course of four seconds. Thus, counting in one
second intervals (e.g., times t.sub.1, t.sub.2, t.sub.3, and
t.sub.4), the graphical object 62 may be located at coordinates
(2,1), (4,2), (6,3), and (8,4) at respective times t.sub.1,
t.sub.2, t.sub.3, and t.sub.4.
In another embodiment, the evaluators may be used to render a more
complex animation effect, as generally illustrated in the exemplary
graph 70 of FIG. 5. As in graph 60, graph 70 may be a
two-dimensional rectangular coordinate system with horizontal and
vertical axes 72 and 74, respectively. In this embodiment, however,
rather than defining evaluators A and B as functions that return
set points and/or values, evaluator A may be defined to return the
location of the graphical object 62 at a given time, and the
evaluator B may defined as a linear time-based function that
returns the location of a point b that moves with respect to time
along a path 76, as generally indicated in FIG. 5. Further, an
evaluator "D" may be defined as a recursive linear interpolation
function over a given time period, such as four seconds. With the
evaluators defined in this manner, the rendering function:
R(t)=D(A,B), over t=0 to t=4, may result in the animation of the
graphical object 62 along a path 78, as also generally illustrated
in FIG. 5.
Further, additional evaluators may be defined and utilized by the
rendering function to adjust other display characteristics of the
graphical object 62. For example, an evaluator "C" may be defined
to control the opacity of the graphical object 62 over a period of
time. For instance, the evaluator C may include the function:
f(t)=(4-t)/4, from t=0 to t=4 such that the evaluator returns an
opacity value between 0 and 1, inclusive, where an opacity value of
1 corresponds to fully opaque and the opacity value 0 corresponds
to fully transparent (i.e., not visible). The rendering function
for the graphical object 62 may then be defined as:
R(t)=[D(A,B)],C; from t=0 to t=4, resulting in the gradual fading
of the graphical object 62 as it travels along the path 78, as
generally illustrated in FIG. 6. Particularly, as the evaluator C
includes a linear function from fully opaque to fully transparent,
the graphical object is fully opaque at its initial position
P.sub.0 at time t.sub.0, is 75% opaque at position P.sub.1, and
time t.sub.1, 50% opaque position P.sub.2 and time t.sub.2, 25%
opaque at position P.sub.3 and time t.sub.3, and is fully
transparent at position P.sub.4 and time t.sub.4. As noted above,
while these particular examples have been provided for illustrative
purposes, it will be appreciated that a wide array of various
characteristics, whether display characteristics or other
characteristics, may be adjusted through the use of evaluators
and/or rendering functions via the techniques described above.
Further, while linear interpolations were implemented in some of
the evaluators discussed above, it will be appreciated that other
forms of interpolation, such as polynomial, exponential,
trigonometric, logarithmic, or the like, may be used in full
accordance with the present techniques.
An exemplary method 90 for animating a series of graphical objects
or images is depicted in FIG. 7. In one embodiment, the method 90
includes providing a plurality of graphical objects or images, and
displaying a subset or a portion of the graphical objects in a
viewport of the display, such as the display 14 of the device 10,
as generally indicated in blocks 92 and 94. In various embodiments,
the graphical objects may include photographs, icons, avatars,
cover art, or the like, which a user may be able to browse through
by panning or scrolling through the plurality of graphical
objects.
In one embodiment, the exemplary method 90 includes receiving a
user input, such as via a user input structure 16, and calculating
a virtual destination for one or more displayed graphical objects
based on the user input, as generally indicated in blocks 96 and 98
of FIG. 7. In some embodiments, the user input structure 16 is a
touch-sensitive device, and the calculation of the virtual
destination depends on some aspect of the user interaction with the
touch-sensitive device. For instance, a fast motion by a user
against the touch-sensitive input device may result in the
calculation of a virtual destination that is further from the
graphical object that that which would be calculated in response to
a slower motion. It should be noted that, as used herein, the term
"virtual destination" refers to a calculated destination for an
image object, and may include an actual display position within the
viewport or a virtual display position falling outside the edges of
the viewport, as discussed in greater detail below with respect to
FIGS. 8-13.
Once the virtual destination is calculated for a graphical object,
the graphical object may be animated toward its virtual destination
over any desired time period, as generally indicated in block 100.
If an additional user input is received during animation of the
graphical object toward its virtual destination (block 102), a new,
updated virtual destination for the graphical object may be
calculated based on the new user input and the graphical object may
proceed from its present location to its new virtual destination
over a new time period. In one embodiment, the receipt of a new
user input during an animation sequence initiated by a previous
user input results in the cancellation of the original animation
sequence and the beginning of a new animation sequence. Such
cancellation may be performed such that the graphical object is
essentially "handed-off" from the first animation sequence to the
second animation sequence without any, or any significant,
perceptible break in the animation of the graphical object from its
original position to its updated virtual destination.
In some embodiments, the time periods associated with the animation
sequences in response to original and new user inputs may be
substantially equivalent, although differing time periods may be
used in full accordance with the present techniques. The moving or
animating of the graphical object may be performed according to a
function including an evaluator, such as generally described above
with respect to FIGS. 3-6. With or without the use of evaluators,
such animation may also be performed through interpolation between
the location the graphical object prior to receipt of the user
input and the virtual destination calculated following the user
input. In one embodiment, such interpolation is a linear
interpolation, although other forms of interpolation, such as
polynomial, exponential, trigonometric, or the like, may be used.
Once the graphical object reaches its virtual destination, the
method 90 ends (block 104).
An exemplary viewport 110, in which graphical objects may be
displayed, is provided in FIG. 8. In some embodiments, the viewport
110 may be provided on the display 14. As noted above, the viewport
110 may display a subset of a plurality of graphical objects 112,
such as cover art, photos, or the like. In one embodiment, the
viewport 110 may be configured to display a subset of the plurality
of graphical objects 112, wherein the subset is of a certain size.
For instance, in the presently illustrated embodiment, the viewport
110 is generally configured to display five graphical or image
objects 112, although a greater or lesser number of such objects
may be displayed within the viewport 110 in other embodiments.
Additionally, a user may scroll or pan through the graphical
objects 112 via the scroll bar 114. As the viewport 110 displays
only a subset of the graphical objects 112, other graphical objects
112 may be considered to be in virtual positions 116 (i.e., in
positions that are not displayed in the viewport 110) on either
side of the viewport 110.
The animation of a particular graphical or image object 120 of the
plurality of graphical objects 112 may be better understood with
reference to the diagrams illustrated in FIGS. 9-13. For example,
the diagram 124 of FIG. 9 generally illustrates a plurality of
graphical objects O.sub.1-O.sub.20 and their respective location
with respect to a series of positions 126 (P.sub.5-P.sub.37) in
accordance with one embodiment. The depiction of the graphical
objects 112 in FIG. 9 generally corresponds to that of FIG. 8, with
the particular graphical object 120 occupying a generally central
position within the viewport 110. In the presently illustrated
embodiment, the positions P.sub.20-P.sub.24 generally correspond to
the actual display positions of the subset of the graphical objects
112 within the viewport 110, while the remaining positions 126 may
be considered to be virtual positions as discussed above.
Once a user input is received, a virtual destination 130, at a
distance x.sub.1 from a starting location 132 (at P.sub.22) of the
graphical object 120 may be calculated. The graphical object 120
may then be moved or animated from the location 132 to the virtual
destination 130 over a given period of time, such as one second,
three seconds, or some other amount of time. At the conclusion of
such animation, the sequence of graphical objects 112 may be
located within the positions 126 as illustrated in diagram 136 of
FIG. 10. As illustrated in the exemplary diagram 136, the plurality
of graphical objects 112 have been shifted to the right with
respect to the viewport 110, such that the graphical object 120 is
now located at its virtual destination 130, while an additional
graphical object 138 has been animated into the location 132
previously occupied by the graphical 120 prior to the animation. As
noted above, the virtual destination calculated for a given
graphical object 112 may correspond to an actual display position
within the viewport 110 or a virtual position outside of the
viewport 110.
In an additional embodiment, an additional user input may be
received during animation of the graphical object 120 from its
starting location 132 to its virtual destination 130, as generally
illustrated in diagram 142 of FIG. 11. In such an embodiment, the
graphical object 120 may have only traversed a portion of the
distance x.sub.1 between the starting location 132 and the virtual
destination 130 when the additional user input is received. For
instance, if the graphical object 120 is to be animated from the
location 132 to the virtual destination 130 over a period of one
second, an additional user input may be received 0.4 seconds into
the animation, at which time the graphical objects 112 are
generally located in the positions illustrated in the diagram 144
of FIG. 12. Notably, at the time of receipt of new user input, the
graphical object 120 is located at a position 146 and a new,
updated virtual destination 148 may be calculated based on the new
user input. Subsequently, the graphical object 120 may be animated
from the location 146 to the updated virtual destination 148, as
generally illustrated in the exemplary diagram 152 of FIG. 13.
Additionally, although the examples provided above include the
movement of the graphical object 120 (in accordance with a
calculated virtual destination) from an actual display position
within the viewport 110 to a virtual display position outside of
the viewport 110 (FIGS. 9 and 10), and from one virtual display
position to another (FIGS. 12 and 13), it should be noted that
other types of movement may also be performed in other embodiments.
For instance, in other embodiments, a graphical object may be
animated from its virtual display position to an actual display
position, or between two actual display positions, in full
accordance with the present techniques. Still further, a graphical
object may be animated from a virtual display position on one side
of the viewport 110 to a virtual display position on the opposite
side of the viewport 110.
While the invention may be susceptible to various modifications and
alternative forms, specific embodiments have been shown by way of
example in the drawings and have been described in detail herein.
However, it should be understood that the invention is not intended
to be limited to the particular forms disclosed. Rather, the
invention is to cover all modifications, equivalents, and
alternatives falling within the spirit and scope of the invention
as defined by the following appended claims.
* * * * *
References