Module game_qu.math.linear_interpolation
Expand source code
from game_qu.math.function import Function
from game_qu.math.line_segment import LineSegment
class LinearInterpolation(Function):
""" Made up of multiple lines that are all connected. The previous point and the next point are connected by a line.
For instance, a line looks like: LineSegment(points[0], points[1]). IMPORTANT: no LineSegments can share the same
x_coordinate (besides the first x_coordinate between adjacent lines) otherwise the code won't work"""
lines = []
points = []
last_point = None
def __init__(self, start_point, other_points):
"""Initializes the object with the start_point and other_points. This method calls add_point() for each point in other_points"""
self.lines = []
self.points = [start_point]
self.last_point = start_point
for other_point in other_points:
self.add_point(other_point)
def add_point(self, point):
"""Adds the point to this path by adding a new line to the path: LineSegment('last_point', 'point')"""
self.lines.append(LineSegment(self.last_point, point))
self.last_point = point
self.points.append(point)
def get_y_coordinate(self, x_coordinate):
"""
Returns:
float: the y_coordinate at that x_coordinate. Or in other words, what the LineSegment that contains
the x_coordinate get_y_coordinate() method returns"""
y_coordinate = 0
for line in self.lines:
if line.contains_x_coordinate(x_coordinate):
y_coordinate = line.get_y_coordinate(x_coordinate)
break
return y_coordinate
def get_lines(self):
"""
Returns:
list[LineSegment]: the lines of this simple path"""
return self.lines
def get_first_line(self):
"""
Returns:
LineSegment: the last LineSegment of the Path"""
return self.lines[0]
def get_last_line(self):
"""
Returns:
LineSegment: the last LineSegment of the Path"""
last_index = len(self.lines) - 1
return self.lines[last_index]
def __str__(self):
"""
Returns:
str: the string representation of the Path"""
string = ""
for x in range(len(self.lines)):
string += f"{self.lines[x]} || "
return string
def is_moving_down(self, x_coordinate):
"""
Returns:
bool: if the slope is negative for the last line that contains this specific 'x_coordinate'"""
return_value = None
for line in self.lines:
if line.contains_x_coordinate(x_coordinate):
return_value = not line.slope_is_positive()
return return_value
Classes
class LinearInterpolation (start_point, other_points)
-
Made up of multiple lines that are all connected. The previous point and the next point are connected by a line. For instance, a line looks like: LineSegment(points[0], points[1]). IMPORTANT: no LineSegments can share the same x_coordinate (besides the first x_coordinate between adjacent lines) otherwise the code won't work
Initializes the object with the start_point and other_points. This method calls add_point() for each point in other_points
Expand source code
class LinearInterpolation(Function): """ Made up of multiple lines that are all connected. The previous point and the next point are connected by a line. For instance, a line looks like: LineSegment(points[0], points[1]). IMPORTANT: no LineSegments can share the same x_coordinate (besides the first x_coordinate between adjacent lines) otherwise the code won't work""" lines = [] points = [] last_point = None def __init__(self, start_point, other_points): """Initializes the object with the start_point and other_points. This method calls add_point() for each point in other_points""" self.lines = [] self.points = [start_point] self.last_point = start_point for other_point in other_points: self.add_point(other_point) def add_point(self, point): """Adds the point to this path by adding a new line to the path: LineSegment('last_point', 'point')""" self.lines.append(LineSegment(self.last_point, point)) self.last_point = point self.points.append(point) def get_y_coordinate(self, x_coordinate): """ Returns: float: the y_coordinate at that x_coordinate. Or in other words, what the LineSegment that contains the x_coordinate get_y_coordinate() method returns""" y_coordinate = 0 for line in self.lines: if line.contains_x_coordinate(x_coordinate): y_coordinate = line.get_y_coordinate(x_coordinate) break return y_coordinate def get_lines(self): """ Returns: list[LineSegment]: the lines of this simple path""" return self.lines def get_first_line(self): """ Returns: LineSegment: the last LineSegment of the Path""" return self.lines[0] def get_last_line(self): """ Returns: LineSegment: the last LineSegment of the Path""" last_index = len(self.lines) - 1 return self.lines[last_index] def __str__(self): """ Returns: str: the string representation of the Path""" string = "" for x in range(len(self.lines)): string += f"{self.lines[x]} || " return string def is_moving_down(self, x_coordinate): """ Returns: bool: if the slope is negative for the last line that contains this specific 'x_coordinate'""" return_value = None for line in self.lines: if line.contains_x_coordinate(x_coordinate): return_value = not line.slope_is_positive() return return_value
Ancestors
- Function
- abc.ABC
Subclasses
Class variables
var last_point
var lines
var points
Methods
def add_point(self, point)
-
Adds the point to this path by adding a new line to the path: LineSegment('last_point', 'point')
Expand source code
def add_point(self, point): """Adds the point to this path by adding a new line to the path: LineSegment('last_point', 'point')""" self.lines.append(LineSegment(self.last_point, point)) self.last_point = point self.points.append(point)
def get_first_line(self)
-
Returns
LineSegment
- the last LineSegment of the Path
Expand source code
def get_first_line(self): """ Returns: LineSegment: the last LineSegment of the Path""" return self.lines[0]
def get_last_line(self)
-
Returns
LineSegment
- the last LineSegment of the Path
Expand source code
def get_last_line(self): """ Returns: LineSegment: the last LineSegment of the Path""" last_index = len(self.lines) - 1 return self.lines[last_index]
def get_lines(self)
-
Returns
list[LineSegment]
- the lines of this simple path
Expand source code
def get_lines(self): """ Returns: list[LineSegment]: the lines of this simple path""" return self.lines
def get_y_coordinate(self, x_coordinate)
-
Returns
float
- the y_coordinate at that x_coordinate. Or in other words, what the LineSegment that contains
the x_coordinate get_y_coordinate() method returns
Expand source code
def get_y_coordinate(self, x_coordinate): """ Returns: float: the y_coordinate at that x_coordinate. Or in other words, what the LineSegment that contains the x_coordinate get_y_coordinate() method returns""" y_coordinate = 0 for line in self.lines: if line.contains_x_coordinate(x_coordinate): y_coordinate = line.get_y_coordinate(x_coordinate) break return y_coordinate
def is_moving_down(self, x_coordinate)
-
Returns
bool
- if the slope is negative for the last line that contains this specific 'x_coordinate'
Expand source code
def is_moving_down(self, x_coordinate): """ Returns: bool: if the slope is negative for the last line that contains this specific 'x_coordinate'""" return_value = None for line in self.lines: if line.contains_x_coordinate(x_coordinate): return_value = not line.slope_is_positive() return return_value
Inherited members