sdl2.ext.algorithms  Useful Algorithms¶
This module contains some useful algorithms for working with shapes and surfaces. At present it contains functions for clipping lines to fit within a set of 2D boundaries and for determining whether a point falls along a given line.

sdl2.ext.algorithms.
cohensutherland
(left, top, right, bottom, x1, y1, x2, y2)[source]¶ Clips a line to a rectangular area.
This implements the CohenSutherland line clipping algorithm.
left
,top
,right
andbottom
define the bounds of the clipping area, by which the line from(x1, y1)
to(x2, y2)
will be clipped.Parameters:  left (int) – The left boundary of the clipping area.
 top (int) – The top boundary of the clipping area.
 right (int) – The right boundary of the clipping area.
 bottom (int) – The bottom boundary of the clipping area.
 x1 (int) – The xcoordinate of the starting point of the line.
 y1 (int) – The ycoordinate of the starting point of the line.
 x2 (int) – The xcoordinate of the end point of the line.
 y2 (int) – The ycoordinate of the end point of the line.
Returns: The start and end coordinates of the clipped line in the form
(cx1, cy1, cx2, cy2)
. If the line does not intersect with the rectangular clipping area, all 4 values will beNone
.Return type:

sdl2.ext.algorithms.
liangbarsky
(left, top, right, bottom, x1, y1, x2, y2)[source]¶ Clips a line to a rectangular area.
This implements the LiangBarsky line clipping algorithm.
left
,top
,right
andbottom
define the bounds of the clipping area, by which the line from(x1, y1)
to(x2, y2)
will be clipped.Parameters:  left (int) – The left boundary of the clipping area.
 top (int) – The top boundary of the clipping area.
 right (int) – The right boundary of the clipping area.
 bottom (int) – The bottom boundary of the clipping area.
 x1 (int) – The xcoordinate of the starting point of the line.
 y1 (int) – The ycoordinate of the starting point of the line.
 x2 (int) – The xcoordinate of the end point of the line.
 y2 (int) – The ycoordinate of the end point of the line.
Returns: The start and end coordinates of the clipped line in the form
(cx1, cy1, cx2, cy2)
. If the line does not intersect with the rectangular clipping area, all 4 values will beNone
.Return type:

sdl2.ext.algorithms.
clipline
(l, t, r, b, x1, y1, x2, y2, method='liangbarsky')[source]¶ Clips a line to a rectangular area using a given method.
Parameters:  l (int) – The left boundary of the clipping area.
 t (int) – The top boundary of the clipping area.
 r (int) – The right boundary of the clipping area.
 b (int) – The bottom boundary of the clipping area.
 x1 (int) – The xcoordinate of the starting point of the line.
 y1 (int) – The ycoordinate of the starting point of the line.
 x2 (int) – The xcoordinate of the end point of the line.
 y2 (int) – The ycoordinate of the end point of the line.
 method (str, optional) – The method to use for clipping lines, can be either ‘cohensutherland’ or ‘liangbarsky’. Defaults to liangbarsky.
Returns: The start and end coordinates of the clipped line in the form
(cx1, cy1, cx2, cy2)
. If the line does not intersect with the rectangular clipping area, all 4 values will beNone
.Return type: