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]] | ||
Line 27: | Line 31: | ||
[[Image:Distribute_step_3.png]] | [[Image:Distribute_step_3.png]] | ||
− | Assuming that the space between two adjacent elements is ''S'', then | + | 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> | <math>x_i = s_{i-1} + w_{i-1} + S</math> | ||
with: | 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 == |