in src-python/trp/trp2.py [0:0]
def rotate(self, origin: TPoint = TPoint(0, 0), degrees: float = 180) -> TBoundingBox:
"""
rotate bounding box
a bounding box sides are always parallel to x and y axis
"""
points = []
points.append(TPoint(x=self.left, y=self.top).rotate(origin_x=origin.x, origin_y=origin.y, degrees=degrees))
points.append(
TPoint(x=self.left + self.width, y=self.top).rotate(origin_x=origin.x, origin_y=origin.y, degrees=degrees))
points.append(
TPoint(x=self.left, y=self.top + self.height).rotate(origin_x=origin.x, origin_y=origin.y, degrees=degrees))
points.append(
TPoint(x=self.left + self.width, y=self.top + self.height).rotate(origin_x=origin.x,
origin_y=origin.y,
degrees=degrees))
xmin = min([p.x for p in points])
ymin = min([p.y for p in points])
xmax = max([p.x for p in points])
ymax = max([p.y for p in points])
new_width = xmax - xmin
new_height = ymax - ymin
new_left = xmin
new_top = ymin
self.width = new_width
self.height = new_height
self.left = new_left
self.top = new_top
return self