BamBirds 2021
|
Public Member Functions | |
def | __init__ (self, turn, prev, tuple coords, int entry_edge, int mt, list theta_range, float velocity, no_gravity=False) |
def | next_states (self, pixels, shuffle=True) |
def | next_state (self, int exit_edge, pixels) |
def | bounce (self, start_angles, int bounce_edge, wall_angle) |
def | on_line (self) |
def | next_pixel (self, int i) |
def | free (self, pixels, i=None) |
def | hits_target (self, pixels, i=None) |
np.ndarray | point_angle (self, pixels, i=None) |
def | apply_gravity (self, tuple new_coords, int entry_edge, list possible_angle_range) |
def | on_parabola (self, list angles, float velocity) |
def | __str__ (self) |
def | __eq__ (self, value) |
def | show (self) |
def | plot_points (self, plotter) |
def | show_on_image (self, img, color_prev=(None, None, 255), color_to_show=(None, None, 100), image_name="tmp.png") |
def | path_length (self) |
def | better_path_length (self) |
def | actual_path_length (self) |
def | better_actual_path_length (self) |
def | start_angle_range (self) |
def | first_turn (self) |
def | origin (self) |
Public Attributes | |
turn | |
prev | |
coords | |
entry_edge | |
mt | |
theta_range | |
velocity | |
no_gravity | |
Defines a state in the simulation Arguments: turn {State} -- Last State where the direction changed because of a bounce. prev {State} -- Previous State coords {tuple} -- coordinates of the state entry_edge {int} -- edge on which the current zone was entered mt {int} -- Movement Type. One of settings.[FLY|BOUNCE|SLIDE] theta_range {list} -- Angle interval at turn to reach this state velocity {float} -- velocity at turn Keyword Arguments: no_gravity {bool} -- if no gravity, angle, rebound calculations should be executed (default: {False}) Raises: TypeError: invalid type for coords, entry_edge or mt
def rebound.state.State.actual_path_length | ( | self | ) |
Path length that is more accurate to the acutal path. uses the distance between edges Returns: float -- length of the path
def rebound.state.State.apply_gravity | ( | self, | |
tuple | new_coords, | ||
int | entry_edge, | ||
list | possible_angle_range | ||
) |
Apply gravity to the current angle for the new state Arguments: new_coords {tuple} -- Coordinates of the new zone entry_edge {int} -- entry edge into the new zone possible_angle_range {[type]} -- Possible angle range for the transition over entry edge Raises: ArithmeticError: if there are no possible new angles Returns: tuple -- (new starting angle interval, current angle interval in the new zone)
def rebound.state.State.better_actual_path_length | ( | self | ) |
Combination of parabola path length and actual path length if no_gravity is true Returns: float -- length of the path
def rebound.state.State.better_path_length | ( | self | ) |
Path length for parabolas. Calculates the distance between turn points Returns: float -- length of the path
def rebound.state.State.bounce | ( | self, | |
start_angles, | |||
int | bounce_edge, | ||
wall_angle | |||
) |
bounce and calculate the angles after a bounce Arguments: start_angles {sequence} -- starting angles at turn bounce_edge {int} -- edge of the bounce wall_angle {np.ndarray} -- normal for the wall Returns: list -- new angle interval after the bounce
def rebound.state.State.first_turn | ( | self | ) |
Return the first turn point Returns: State -- first turn point
def rebound.state.State.free | ( | self, | |
pixels, | |||
i = None |
|||
) |
Calculate if the current or next zone is only filled with ABType.Background Arguments: pixels {numpy.ndarray} -- level representation Keyword Arguments: i {int} -- if set the zone at the exit edge i is checked (default: {None}) Returns: bool -- if the zone is free
def rebound.state.State.hits_target | ( | self, | |
pixels, | |||
i = None |
|||
) |
Calculate if the corrent or next zone contains hits the target Arguments: pixels {numpy.ndarray} -- level representation Keyword Arguments: i {int} -- if set the zone at the exit edge i is checked (default: {None}) Returns: bool -- if the zone hits the target
def rebound.state.State.next_pixel | ( | self, | |
int | i | ||
) |
Calculate the coordinates of the next pixel at exit edge i Arguments: i {int} -- exit edge Returns: tuple -- coordinates of the next pixel
def rebound.state.State.next_state | ( | self, | |
int | exit_edge, | ||
pixels | |||
) |
Calculate the a next state Arguments: exit_edge {int} -- edge to exit the current zone pixels {numpy.ndarray} -- matrix for representation Returns: State -- the new state in the zon of exit edge
def rebound.state.State.on_parabola | ( | self, | |
list | angles, | ||
float | velocity | ||
) |
Calculate if the previous state are on the parabola Arguments: angles {list} -- starting angles to test velocity {float} -- starting velocity Returns: bool -- if the previous states are on the parabola
def rebound.state.State.origin | ( | self | ) |
Return the origin of the simulation Returns: State -- origin state
def rebound.state.State.path_length | ( | self | ) |
Primitive path length of the state history. Only considers number of states Returns: int -- length of the path
def rebound.state.State.plot_points | ( | self, | |
plotter | |||
) |
Plot previous state history as points to plotter Arguments: plotter {axis or matplotlib} -- Where to plot the points to
np.ndarray rebound.state.State.point_angle | ( | self, | |
pixels, | |||
i = None |
|||
) |
Calculate the angle of the wall in Arguments: pixels {numpy.ndarray} -- level representation Keyword Arguments: i {int} -- if set the zone at the exit edge i is checked (default: {None}) Raises: ValueError: if there is no object edge in the zone Returns: np.ndarray -- the normal of the edge at the specified zone
def rebound.state.State.show | ( | self | ) |
Show the State and its previous states in a matplotlib window will not be executed if settings.image_debug is false
def rebound.state.State.show_on_image | ( | self, | |
img, | |||
color_prev = (None,None,255) , |
|||
color_to_show = (None,None,100) , |
|||
image_name = "tmp.png" |
|||
) |
Reveal the state history on an image Arguments: img {Image} -- Image to draw the state history to Keyword Arguments: color_prev {tuple} -- color to restore at the respective pixels (default: {(None,None,255)}) color_to_show {tuple} -- color to print at the pixels (default: {(None,None,100)}) image_name {str} -- file to save the image to if settings.save_images is true (default: {"tmp.png"})
def rebound.state.State.start_angle_range | ( | self | ) |
Return the angle interval before the last turn point Returns: list -- angle interval