Collision is a python library meant for collision detection between convex and concave polygons, circles, and points.
Project description
collision.py
Info
Collision is a python library meant for collision detection between convex and concave polygons, circles, and points.
Insallation
To get the latest stable version:
pip install collision
Or to get the latest development version:
pip install https://github.com/QwekoDev/collision/archive/master.zip
Classes
class collision.Vector(x, y)
A 2D vector/point class
Properties:
x
(int) or (float) - The x-coordinatey
(int) or (float) - The y-coordinate
Methods:
func copy()
→ collision.vec
Return a copy of the vector
func set(v)
Copy another vectors values onto the vector
v
(collision.vec) - The vector to copy from
func perp()
→ collision.vec
Return the vector rotated perpandicularly
func rotate(angle)
→ collision.vec
Return the vector rotated the angle
angle
(int) or (float) - Radians to rotate the point
func reverse()
→ collision.vec
Return a reversed version of the vector
func normalize()
→ collision.vec
Return a normalized version of the vector
func project(v)
→ collision.vec
Return the vector projected onto the passed vector
v
(collision.vec) - The vector to project upon
func project_n(v)
→ collision.vec
Return the vector projected onto a unit vector
v
(collision.vec) - The vector to project upon
func reflect(axis)
→ collision.vec
Return the vector reflected upon the passed axis vector
axis
(collision.vec) - The axis to reflect upon
func reflect_n(axis)
→ collision.vec
Return the vector reflected upon the passed axis unit vector
axis
(collision.vec) - The axis to reflect upon
func dot(v)
→ int or float
Returns the dot product of the vector and another
v
(collision.vec) - The other vector for the dot product
func ln()
→ int or float
Returns the length of the vector
func ln2()
→ int or float
Returns the squared length of the vector
class collision.Circle(pos, radius)
A simple circle with a position and radius
Properties:
pos
(collision.vec) - The center coordinate of the circleradius
(int) or (float) - The radius of the circle
Methods:
func get_aabb()
→ collision.Poly
Returns the AABB bounding box of the circle
class collision.Poly(pos, points, angle = 0)
A convex polygon with a position, a list of points relative to that position, and an angle
Properties:
pos
(collision.vec) - The center coordinate of the circlepoints
(list[collision.vec]) - A list of absolute points (each relative point + the position of the polygon.) Can not be directly edited.rel_points
(list[collision.vec]) - A list of points relative to the position. This property should not be directly changed.angle
(int) or (float) - The angle which the polygon is rotated. Changing this will cause the polygon to be recalculated.
Class Methods:
func Poly.from_box(pos, width, height)
→ collision.Poly
Creates a polygon from
pos
(collision.vec) - The center coordinate of the polygon/boxwidth
(int) or (float) - The width of the boxheight
(int) or (float) - The height of the box
Methods:
func aabb()
→ collision.Poly
Returns the AABB bounding box of the polygon
func set_points(points)
Change the base points relative to the position. After this is done, the polygon will be recalculated again. Angle will be preserved. Use this instead of editing the points
property.
func get_centroid()
→ collision.vec
Get the centroid of the polygon. The arithmatic mean of all of the points.
class collision.Concave_Poly(pos, points, angle = 0)
A concave polygon with a position, a list of points relative to that position, and an angle. This takes longer to collide than a regular Poly
does, so only use this if your shape must be concave.
Properties:
pos
(collision.vec) - The center coordinate of the circlepoints
(list[collision.vec]) - A list of absolute points (each relative point + the position of the polygon.) Can not be directly edited.rel_points
(list[collision.vec]) - A list of points relative to the position. This property should not be directly changed.tris
(list[collision.Poly]) - A list of triangles relative to the position on the poly that make up the concave polygon. Used for concave collisions.angle
(int) or (float) - The angle which the polygon is rotated. Changing this will cause the polygon to be recalculated.
Methods:
func aabb()
→ collision.Concave_Poly
Returns the AABB bounding box of the polygon
func set_points(points)
Change the base points relative to the position. After this is done, the polygon will be recalculated again. Angle will be preserved. Use this instead of editing the points
property.
func get_centroid()
→ collision.vec
Get the centroid of the polygon. The arithmatic mean of all of the points.
class collision.Response()
The result of a collision between two objects. May optionally be passed to collision tests to retrieve additional information. At its cleared state, it may seem to have odd values. Ignore these, they are just there to make generating the response more efficient. The response should be ignored unless there is a successful collision.
Properties:
a
(collision shape) - The first object in the collision testb
(collision shape) - The second object in the collision testoverlap
(int) or (float) - Magnitude of the overlap on the shortest colliding axisoverlap_n
(collision.vec) - The shortest colliding axis (unit vector)overlap_v
(collision.vec) - The overlap vector. If this is subtracted from the position ofa
,a
andb
will no longer be colliding.a_in_b
(bool) - Whethera
is fully inside ofb
b_in_a
(bool) - Whetherb
is fully inside ofa
Methods:
func clear()
→ collision.Response
Clears the Response for re-use, and returns itself
To be finished
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file collision-1.2.2.tar.gz
.
File metadata
- Download URL: collision-1.2.2.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 366b2619e0eb341116f0c461bd933543c6d0b3274c42ac3ebd604972b7335683 |
|
MD5 | 356f08e7f8e5fe9fc946f5ad4e3f4c34 |
|
BLAKE2b-256 | f452e9325e5dcfac12e3047bbcdb3e15d3c5a3b53c52712cb0abb8ec5e06602d |