Hi!

Daniel has worked on additional circle layouts, which are now included in Roassal.
We now have RTEquidistantCircleLayout and RTWeightedCircleLayout in addition to RTCircleLayout and RTCenteredCircleLayout

Consider this small script:
=-=-==-=-==-=-==-=-=
| view aux |
view := RTView new.
aux := RTEllipse new.
aux color: Color red.
1 to: 20 do: [ :i |
aux sizeElement: i*4+5.
view add: (aux elementOn: i) ].
RTCircleLayout 
new 
initialRadius: 150;
on: view elements.
view open
=-=-==-=-==-=-==-=-=
It produces the output:

There are two recurrent problems with this rendering:
- circles are not centered
- circles overlaps and this overlap can be avoided since there is spaces between the small circles. The layout does not consider the size of the elements

RTEquidistantCircleLayout and RTWeightedCircleLayout  address these problems.

In the script above, replacing RTCircleLayout by RTWeightedCircleLayout produces the following:

The space is allocated to each element according to its size.

A variation of this situation may be seen with the following:
=-=-==-=-==-=-==-=-=
| view aux |
view := RTView new.
aux := RTEllipse new.
aux color: Color red.
1 to: 10 do: [ :i |
aux sizeElement: i*10+5.
view add: (aux elementOn: i) ].
RTWeightedCircleLayout 
new 
initialRadius: 150;
on: view elements.
view open
=-=-==-=-==-=-==-=-=

The script produces 

It may happens however that you want always the same space between the elements. You should therefore use RTEquidistantCircleLayout as in:
=-=-==-=-==-=-==-=-=
| view aux |
view := RTView new.
aux := RTEllipse new.
aux color: Color red.
1 to: 10 do: [ :i |
aux sizeElement: i*10+5.
view add: (aux elementOn: i) ].
RTEquidistantCircleLayout 
new 
initialRadius: 150;
on: view elements.
view open
=-=-==-=-==-=-==-=-=

It produces the following:

The work of Daniel may be found in Roassal2.
Thanks Daniel!

Cheers,
Alexandre
-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.