def get_projected_tl_tr_bl_br(self) -> tuple[tuple[float, float], tuple[float, float], tuple[float, float],
                                                 tuple[float, float]]:
        tl = rotate((self._obj.pos[0], self._obj.pos[1]), (self._obj.pos[0] - 5, self._obj.pos[1] - 5), self.rotation)
        tr = rotate((self._obj.pos[0], self._obj.pos[1]), (self._obj.pos[0] + 5, self._obj.pos[1] - 5), self.rotation)
        bl = rotate((self._obj.pos[0], self._obj.pos[1]), (self._obj.pos[0] - 5, self._obj.pos[1] + 5), self.rotation)
        br = rotate((self._obj.pos[0], self._obj.pos[1]), (self._obj.pos[0] + 5, self._obj.pos[1] + 5), self.rotation)

        m = Matrix()
        tl = m.project(*tl, self._obj.pos[2],
                            self.parent.camera.model_matrix, self.parent.camera.projection_matrix,
                            self.parent.camera.pos.x, self.parent.camera.pos.y, width(), height())


        tr = m.project(*tr, self._obj.pos[2],
                               self.parent.camera.model_matrix, self.parent.camera.projection_matrix,
                               self.parent.camera.pos.x, self.parent.camera.pos.y, width(), height())

        bl = m.project(*bl, self._obj.pos[2],
                       self.parent.camera.model_matrix, self.parent.camera.projection_matrix,
                       self.parent.camera.pos.x, self.parent.camera.pos.y, width(), height())

        br = m.project(*br, self._obj.pos[2],
                       self.parent.camera.model_matrix, self.parent.camera.projection_matrix,
                       self.parent.camera.pos.x, self.parent.camera.pos.y, width(), height())


        return tl[0:2], tr[0:2], bl[0:2], br[0:2]
    def get_projected_tl_br(self) -> tuple[tuple[float, float], tuple[float, float]]:
        m = Matrix()
        x, y, z = m.project(self._obj.pos[0] - 5, self._obj.pos[1] - 5, self._obj.pos[2] - 5,
                            self.parent.camera.model_matrix, self.parent.camera.projection_matrix,
                            self.parent.camera.pos.x, self.parent.camera.pos.y, width(), height())


        x2, y2, z2 = m.project(self._obj.pos[0] + 5, self._obj.pos[1] + 5, self._obj.pos[2],
                               self.parent.camera.model_matrix, self.parent.camera.projection_matrix,
                               self.parent.camera.pos.x, self.parent.camera.pos.y, width(), height())



        return (x, y), (x2, y2)
    def get_projected_origin(self) -> tuple[int, int]:
        m = Matrix()
        x, y, z = m.project(self._obj.pos[0], self._obj.pos[1], self._obj.pos[2],
                            self.parent.camera.model_matrix, self.parent.camera.projection_matrix,
                            self.parent.camera.pos.x, self.parent.camera.pos.y, width(), height())

        return x, y