first commit
This commit is contained in:
@@ -0,0 +1,253 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: pytweening
|
||||
Version: 1.2.0
|
||||
Summary: A collection of tweening (aka easing) functions.
|
||||
Home-page: https://github.com/asweigart/pytweening
|
||||
Author: Al Sweigart
|
||||
Author-email: al@inventwithpython.com
|
||||
License: MIT
|
||||
Keywords: 2D animation tween tweening easing
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Environment :: Win32 (MS Windows)
|
||||
Classifier: Environment :: X11 Applications
|
||||
Classifier: Environment :: MacOS X
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Description-Content-Type: text/markdown
|
||||
License-File: LICENSE.txt
|
||||
License-File: AUTHORS.txt
|
||||
|
||||
PyTweening
|
||||
==========
|
||||
|
||||
A collection of tweening (aka easing) functions implemented in Python. You can learn more about it in this blog post: https://inventwithpython.com/blog/2024/02/20/make-lively-movement-animation-with-pytweenings-tweening-functions/ and in the Nordic Game Jam talk by Martin Jonasson and Petri Purho at https://youtu.be/Fy0aCDmgnxg?si=8pgITaxjJSKFyBuB&t=159
|
||||
|
||||
Example Usage
|
||||
=============
|
||||
|
||||
All tweening functions are passed an argument of a float from 0.0 (the beginning of the path) to 1.0 (the end of the path) of the tween:
|
||||
|
||||
>>> pytweening.linear(0.5)
|
||||
0.5
|
||||
>>> pytweening.linear(0.75)
|
||||
0.75
|
||||
>>> pytweening.linear(1.0)
|
||||
1.0
|
||||
>>> pytweening.easeInQuad(0.5)
|
||||
0.25
|
||||
>>> pytweening.easeInQuad(0.75)
|
||||
0.5625
|
||||
>>> pytweening.easeInQuad(1.0)
|
||||
1.0
|
||||
>>> pytweening.easeInOutSine(0.75)
|
||||
0.8535533905932737
|
||||
>>> pytweening.easeInOutSine(1.0)
|
||||
1.0
|
||||
|
||||
The getLine() function also provides a Bresenham line algorithm implementation:
|
||||
|
||||
>>> pytweening.getLine(0, 0, 5, 10)
|
||||
[(0, 0), (0, 1), (1, 2), (1, 3), (2, 4), (2, 5), (3, 6), (3, 7), (4, 8), (4, 9), (5, 10)]
|
||||
|
||||
The getLinePoint() function finds (interpolates) a point on the given line (even if it extends before or past the start or end points):
|
||||
|
||||
>>> getLinePoint(0, 0, 5, 10, 0.0)
|
||||
(0.0, 0.0)
|
||||
>>> getLinePoint(0, 0, 5, 10, 0.25)
|
||||
(1.25, 2.5)
|
||||
>>> getLinePoint(0, 0, 5, 10, 0.5)
|
||||
(2.5, 5.0)
|
||||
>>> getLinePoint(0, 0, 5, 10, 0.75)
|
||||
(3.75, 7.5)
|
||||
>>> getLinePoint(0, 0, 5, 10, 1.0)
|
||||
(5.0, 10.0)
|
||||
|
||||
PyTweening also provides iterators to get the XY coordinates in a for loop between two points (though some floating-point rounding errors naturally occur):
|
||||
|
||||
>>> import pytweening
|
||||
>>> for x, y in pytweening.iterLinear(0, 0, 100, 150, 0.1): print(x, y)
|
||||
...
|
||||
0.0 0.0
|
||||
10.0 15.0
|
||||
20.0 30.0
|
||||
30.000000000000004 45.00000000000001
|
||||
40.0 60.0
|
||||
50.0 75.0
|
||||
60.0 90.0
|
||||
70.0 105.0
|
||||
80.0 119.99999999999999
|
||||
89.99999999999999 135.0
|
||||
100.0 150.0
|
||||
>>> for x, y in pytweening.iterEaseOutQuad(0, 0, 100, 150, 0.1): print(x, y)
|
||||
...
|
||||
0.0 0.0
|
||||
19.0 28.5
|
||||
36.00000000000001 54.00000000000001
|
||||
51.0 76.5
|
||||
64.00000000000001 96.00000000000001
|
||||
75.0 112.5
|
||||
84.0 126.0
|
||||
90.99999999999999 136.5
|
||||
96.00000000000001 144.0
|
||||
99.0 148.5
|
||||
100.0 150.0
|
||||
|
||||
|
||||
Tweens
|
||||
======
|
||||
|
||||
pytweening.linear()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInQuad()
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutQuad()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutQuad()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInCubic()
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutCubic()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutCubic()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInQuart()
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutQuart()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutQuart()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInQuint()
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutQuint()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutQuint()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInSine()
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutSine()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutSine()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInExpo()
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutExpo()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutExpo()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInCirc()
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutCirc()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutCirc()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInElastic()
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutElastic()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutElastic()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInBack()
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutBack()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutBack()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInBounce()
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutBounce()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutBounce()
|
||||
|
||||

|
||||
|
||||
pytweening.easeInPoly() (default degree of 2)
|
||||
|
||||

|
||||
|
||||
pytweening.easeOutPoly() (default degree of 2)
|
||||
|
||||

|
||||
|
||||
pytweening.easeInOutPoly() (default degree of 2)
|
||||
|
||||

|
||||
|
||||
|
||||
Support
|
||||
-------
|
||||
|
||||
If you find this project helpful and would like to support its development, [consider donating to its creator on Patreon](https://www.patreon.com/AlSweigart).
|
||||
Reference in New Issue
Block a user