def update_coordinate_system_box(coordinate_system, cube_surface, arrows, labels, offset=0.5, scale=1.0):
    cube_points, dims = generators.generate_cuboid(
        scale, scale, scale, origin=np.array([scale / 2, scale / 2, scale / 2])
    )
    color = euler_color(coordinate_system.euler_angles)
    cube_surface.parent.parent.data.set(points=coordinate_system.to_parent(cube_points))
    cube_surface.actor.property.edge_visibility = 1
    cube_surface.actor.property.edge_color = color
    cube_surface.actor.property.color = color
    if arrows is None:
        return cube_surface, arrows, labels
    else:
        arrows, labels = update_coordinate_system_axes(coordinate_system, arrows, labels, offset=offset, scale=scale)
    return cube_surface, arrows, labels
def draw_coordinate_system_box(fig, coordinate_system, offset=0.5, scale=1.0, draw_axes=True, draw_labels=True):
    mlab.figure(fig, bgcolor=fig.scene.background)
    cube_points, dims = generators.generate_cuboid(
        scale, scale, scale, origin=np.array([scale / 2, scale / 2, scale / 2])
    )
    cube = tvtk.StructuredGrid(dimensions=dims)
    cube.points = coordinate_system.to_parent(cube_points)
    color = euler_color(coordinate_system.euler_angles)
    cube_surface = mlab.pipeline.surface(cube, color=color)
    cube_surface.parent.parent.name = "Euler colored box: " + coordinate_system.name
    cube_surface.actor.property.edge_visibility = 1
    cube_surface.actor.property.edge_color = color
    arrows, labels = None, None
    if draw_axes:
        arrows, labels = draw_coordinate_system_axes(
            fig, coordinate_system, offset=offset, scale=scale, draw_labels=draw_labels
        )
    return cube_surface, arrows, labels