def distance(self, new_distance): """ Возращает физическое расстояние от камеры до сцены :return: """ if new_distance <= 0: # raise CameraError("Distance became negative") return # Расстояние от камеры до поверхности экрана self.__distance = new_distance # Физическая ширина области вилимости камеры self.window_width = 2 * self.__distance * tan(self.h_fov / 2) # Физическая высота области вилимости камеры self.window_height = self.window_width * SCREEN_HEIGHT / SCREEN_WIDTH # Вертикальный угол обзора камеры self.v_fov = atan(self.window_height / self.__distance / 2) # Физическая область видимости камеры self.camera_rect = PhysicalRect( self.__position[0] - self.window_width / 2, self.__position[1] - self.window_height / 2, self.window_width, self.window_height) # Коэффициент, на который умножаются координаты, чтобы отрисовать объекты на экране на экране self.scale_factor = SCREEN_WIDTH / self.window_width
def step(self, dt): self.body_rect = PhysicalRect( *(self.body.position - (self.width / 2, self.height / 2)), self.width, self.height)