Line 1: |
Line 1: |
| + | <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> |