Line 29: Line 29:
* [[User:Walter/sandbox]]
* [[User:Walter/sandbox]]
* [[User:Walter/favoritelayout.py]]
* [[User:Walter/favoritelayout.py]]
[[Image:Spiral.png|thumb|left|<pre>
[[Image:Spiral.png|thumb|left|Spiral Home View]]
    def _calculate_position(self, radius, icon_size, index, children_count):
[[Image:FermatSpiral.png|thumb|left|Fermat Spiral]]
        width, height = self.box.get_allocation()
        # angle decreases as the radius increases
        inc = 12.0 + index / 6.0
        angle = index * (2 * math.pi / inc) - math.pi / 2
        # radius is proportional to index/children_count
        myminimum = _MINIMUM_RADIUS * .667
        newradius = ((radius - myminimum) * (index * 1.1) / children_count) +
                                        myminimum
        x = newradius * math.cos(angle) + (width - icon_size) / 2
        y = newradius * math.sin(angle) + (height - icon_size -
                                        style.GRID_CELL_SIZE) / 2
        return x, y
</pre>]]
[[Image:FermatSpiral.png|thumb|left|<pre>
    def _calculate_position(self, radius, icon_size, index, children_count):
        width, height = self.box.get_allocation()
        # include an offset (8) to the index
        # so that the center of the spiral is left blank
        # angle = n * 137.5 degree or 2.4 radians
        angle = (index + 8) * 2.4
 
        # radius = constant * sqrt(n)
        radius = (_MINIMUM_RADIUS / 5) * math.sqrt(index + 8)
 
        x = radius * math.cos(angle) + (width - icon_size) / 2
        y = radius * math.sin(angle) + (height - icon_size -
                                        style.GRID_CELL_SIZE) / 2
 
        return x, y
</pre>]]