added SpeedMapDisplay
This commit is contained in:
		
							
								
								
									
										41
									
								
								speed_map_display.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								speed_map_display.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| import pygame | ||||
|  | ||||
| from map_display import MapDisplay | ||||
| from path import Path | ||||
|  | ||||
|  | ||||
| class SpeedMapDisplay(MapDisplay): | ||||
|     def __init__(self, | ||||
|                  surf: pygame.Surface, | ||||
|                  min_lat: float, | ||||
|                  max_lat: float, | ||||
|                  min_lon: float, | ||||
|                  max_lon: float, | ||||
|                  min_speed_col: tuple[int, int, int], | ||||
|                  max_speed_col: tuple[int, int, int], | ||||
|                  segment_threshold: float): | ||||
|         super().__init__(surf, min_lat, max_lat, min_lon, max_lon) | ||||
|         self.min_speed_col: tuple[int, int, int] = min_speed_col | ||||
|         self.max_speed_col: tuple[int, int, int] = max_speed_col | ||||
|         self.segment_threshold: float = segment_threshold | ||||
|  | ||||
|     def draw_path(self, path: Path) -> None: | ||||
|         colors = [] | ||||
|         min_speed = min(path.extra_data) | ||||
|         max_speed = max(path.extra_data) | ||||
|  | ||||
|         colors = list(map(lambda s: self.interpolate_color(s, min_speed, max_speed), path.extra_data)) | ||||
|  | ||||
|         self.draw_colored_path(path, colors) | ||||
|  | ||||
|     def interpolate_color(self, speed: float, min_speed: float, max_speed: float) -> tuple[int, int, int]: | ||||
|         r_span = self.max_speed_col[0] - self.min_speed_col[0] | ||||
|         g_span = self.max_speed_col[1] - self.min_speed_col[1] | ||||
|         b_span = self.max_speed_col[2] - self.min_speed_col[2] | ||||
|  | ||||
|         f = (speed - min_speed) / (max_speed - min_speed) | ||||
|         r = int(r_span * f + self.min_speed_col[0]) | ||||
|         g = int(g_span * f + self.min_speed_col[1]) | ||||
|         b = int(b_span * f + self.min_speed_col[2]) | ||||
|  | ||||
|         return r, g, b | ||||
		Reference in New Issue
	
	Block a user