game_qu.math.linear_interpolation API documentation

# 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

  - Path

  ### 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

  - `Function`:
    - `get_inverted_function`
    - `get_new_function`
    - `get_x_coordinate`