title: algorithm to generate shapes
body: <p>I need to be able to generate shapes based on multiple circles. So for example:
  If I want to put 8 circles around a square, how to calculate the size of the square that is going to touch each surrounding circles.
  Same issue for a circle or ellipse.</p>
  
  <p>I try to add some image in ascii format, not sure it is clear.</p>
  
  <pre>                                        
  
                       @@@@@           @@@@@                    
                     @@@@@@@@@@     @@@@@@@@@@                  
                    @@@@@ @@@@@@   @@@@@@ @@@@@                 
                   @@@@      @@@@ @@@@      @@@@                
                  @@@@        @@@@@@@        @@@@               
                  @@@          @@@@@          @@@               
                 @@@            @@@            @@@              
                 @@@            @@@            @@@              
                 @@             @@@             @@              
                 @@@            @@@            @@@              
                 @@@            @@@            @@@              
                  @@           @@@@@           @@               
           @@@@@  @@@          @@@@@          @@@  @@@@@        
        @@@@@@@@@@@@@@        @@@ @@@        @@@@@@@@@@@@@@     
       @@@@@@ @@@@@@@@@     @@@@@ @@@@@     @@@@@@@@@ @@@@@@    
      @@@@       @@@@@@@@@@@@@@@   @@@@@@@@@@@@@@@@      @@@@   
      @@@         @@@@@@@@@@@@       @@@@@@@@@@@@@        @@@@  
     @@@           @@@,,,,,,,,,,,,,,,,,,,,,,, @@@          @@@  
     @@@           @@@,                     ,@@@            @@  
     @@             @@,                     ,@@@            @@  
     @@             @@,                     ,@@             @@  
     @@             @@,                     ,@@@            @@  
     @@             @@,                     ,@@@            @@  
     @@@           @@@,                     , @@           @@@  
     @@@@         @@@@,                     , @@@          @@@  
      @@@@       @@@@ ,                     , @@@@        @@@   
       @@@@     @@@@  ,                     ,  @@@@     @@@@@   
        @@@@@@@@@@@   ,                     ,   @@@@@@@@@@@@    
         @@@@@@@@@    ,                     ,    @@@@@@@@@      
        @@@@@@@@@@@   ,                     ,   @@@@@@@@@@@@    
       @@@@     @@@@  ,                     ,  @@@@     @@@@@   
      @@@@       @@@@ ,                     , @@@@        @@@   
     @@@@         @@@@,                     , @@@          @@@  
     @@@           @@@,                     , @@           @@@  
     @@             @@,                     ,@@@            @@  
     @@             @@,                     ,@@@            @@  
     @@             @@,                     ,@@             @@  
     @@             @@,                     ,@@@            @@  
     @@@           @@@,,,,,,,,,,,,,,,,,,,,,,,@@@            @@  
     @@@           @@@@@@@@@@@       @@@@@@@@ @@@          @@@  
      @@@         @@@@@@@@@@@@@     @@@@@@@@@@@@@@        @@@@  
      @@@@       @@@@@@@    @@@@   @@@@    @@@@@@@@      @@@@   
       @@@@@@ @@@@@@@@       @@@@ @@@@       @@@@@@@@ @@@@@@    
        @@@@@@@@@@@@@         @@@@@@@         @@@@@@@@@@@@@     
           @@@@@  @@           @@@@@           @@  @@@@@        
                 @@@            @@@            @@@              
                 @@@            @@@            @@@              
                 @@             @@@             @@              
                 @@@            @@@            @@@              
                 @@@            @@@            @@@              
                  @@           @@@@@           @@               
                  @@@         @@@@@@@         @@@               
                  @@@@       @@@@ @@@@       @@@@               
                   @@@@@    @@@@   @@@@    @@@@@                
                    @@@@@@@@@@@     @@@@@@@@@@@                 
                      @@@@@@@@       @@@@@@@@                   
  </pre>                                        
  
  <p>It should be the same for a circle instead of square in the middle.</p>
  
  <p>Thanks for your help.</p>