Line

A brief reference to the Line class.

Line contains some methods also found in Renderable, but is not a Renderable, as it does not possess a width and height.

Initialization

You can initialize a Line in a few different ways:

line = Line(screen, x1, y1, x2, y2)  # Pass two points
line = Line(screen, (x1, y1), (x2, y2))  # Two points as tuples
line = Line(screen, location1, location2)  # Two points as Locations

Movement

You can move the Line using slightly modified methods from Object:

We can translate by a specified amount with:

line.move(dx, dy)  # Move both points by dx, dy
line.move(dx, dy, point=1)  # Move only the first point by dx, dy

We can move both positions to new locations with:

line.moveto(x1, y1, x2, y2)
line.moveto((x1, y1), (x2, y2))
line.moveto(location1, location2)

We can change only one of the positions with either:

line.pos1(location)
line.pos2(location)

Most methods in Line are able to take numbers, tuples, or Locations because Lines deal with more coordinates than Renderables.

Location

Retrieve both positions in a tuple using the familiar:

line.location()  # Returns both endpoints positions as a tuple (pos1, pos2)

Rotation

You can rotate lines just as you would expect:

line.rotation()  # Get the current rotation
line.rotation(rotation)  # Set a new angle
line.rotate(angle_change)  # Change angle by angle_change

Or we can pass a location in for the line to look at:

line.lookat(location)  # Look at the passed location (moves second endpoint)
line.lookat(location, point=1)  # Move the first point instead

Color

You can change the Color of a Line just like a Renderable:

line.color()  # Retrieve the current Color
line.color(color)  # Set a new Color

Thickness

You can modify the thickness of the line in pixels with:

line.thickness(thickness)

Dashes

You may decide to change the line to a dotted line with:

line.dashes(3)  # Add dashes 3px in length with 3px between them
line.dashes((3, 2))  # Specify dash length and distance separately.

Length

You can get the length of the line by calling:

line.length()

Visibility

Visibility is accessed exactly as it is in Renderable:

line.visible(False)

Transform and Cloning

Transforms and cloning work as in Renderable:

line.transform()  # (pos1, pos2, angle)

Line's transform is a tuple with both positions and current angle.

Cloning works as expected:

line2 = line.clone()  # new line that's the same!

Intersects (Overlaps)

The Line's version of Renderable's overlaps() is intersects(). It can take any Renderable or Line and will check if the line intersects with any of their lines.

line.intersects(line2)
line.intersects(rectangle)

Last updated