Automatic Generation of Constrained Furniture Layouts