Distributing elements
From TaskDepender
(→Design) |
(→Design) |
||
Line 19: | Line 19: | ||
[[Image:Distribute.png]] | [[Image:Distribute.png]] | ||
− | This gives the total space to occupy. Next the total space occupied by the elements must be calculated. This is done by determining the sum of the widths of all the selected elements | + | This gives the total space to occupy. Next the total space occupied by the elements must be calculated. This is done by determining the sum of the widths of all the selected elements: |
+ | |||
+ | <math>W = \displaystyle\sum_{i=1}^N w_i</math> | ||
+ | |||
+ | This is illustrated in the figure below: | ||
[[Image:Distribute_step_2.png]] | [[Image:Distribute_step_2.png]] | ||
− | + | Using the fact that for ''N'' selected elements there are ''N''-1 spaces, it can be seen from the figure that the value for the space between two adjacent elements is calculated by determining the difference between the rightmost edge and the leftmost edge minus the sum of the widths and dividing this value by ''N''-1. | |
+ | |||
+ | [[Image:Distribute_step_3.png]] | ||
+ | |||
+ | Assuming that the space between two adjacent elements is ''S'', then the edge ''x<sub>i</sub>'' of certain element ''i'' must be positioned at: | ||
+ | |||
+ | <math>x_i = s_{i-1} + w_{i-1} + S</math> | ||
+ | |||
+ | with: | ||
+ | * <math>s_{1} = x_{min}</math> | ||
+ | * <math>S = \displaystyle\frac{x_{max}-x_{min}-W}{N-1}</math> | ||
+ | |||
+ | This means that the position of the element is given by: | ||
+ | <math>X_i =x_i + w_i/2</math> | ||
+ | Since the algorithm assumes the elements being ordered by position of the left edges, this additional step must be performed before running the described algorithm. | ||
− | + | The same algorithm can be used for distributing the elements vertically, in which case the equations are: | |
− | + | ||
− | + | ||
− | + | ||
+ | <math>y_i = s_{i-1} + h_{i-1} + S</math> | ||
+ | with: | ||
+ | * <math>s_{1} = y_{min}</math> | ||
+ | * <math>S = \displaystyle\frac{y_{max}-y_{min}-H}{N-1}</math> | ||
+ | * <math>H = \displaystyle\sum_{i=1}^N h_i</math> | ||
− | + | and the position of an element given by: | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | < | + | <math>Y_i =y_i + h_i/2</math> |
− | + | ||
− | </ | + | |
== Implementation == | == Implementation == |