Glam Prestige Journal

Bright entertainment trends with youth appeal.

$\begingroup$

I am attempting to distrubute objects evenly in concentric circles according to the following rules.

  1. There will always be 1 object at the centre of the plane at $(0,0)$.
  2. Each circle will have n elements which need to be distributed.
  3. The number of each element in the circle is known as k.
  4. The circles level, known as h, starts at 1 at the center object.
  5. Every element has a parent, of which it has a direct relation. Each element should be at one level more than its parent.
  6. No element shall have more than 1 parent, or be its own parent.
  7. A parent may have 0 to many children.
  8. With the exception of the first circle, each element should be distributed in respect to the elements parent to no more than half of its parent's angle.
    • This image gives more context here but a way of explaining this is if each parent has a pie wedge, which is half way between it and k-1 and k+1, then each child element should sit between these two points.
  9. The radius of the circles is known as r.

The purpose of this is to generate a hierarchy of people and who they report to in an organisation.

I can currently generate the second circle's distribution via the formula:

  • x = Parent_x + r cos(2kπ/n)
  • y = Parent_y + r sin(2kπ/n)

However, I am unsure as to how to proceed for h >= 3

$\endgroup$ 3

1 Answer

$\begingroup$

Seems like this hierarchical structure is a rooted tree. So will be using graph theory notation.

One possible way of approaching this is to allocate a sector for each node. That is, allocate sector $(0,2\pi)$ for the root. From here on, it should just be a matter of allocating the right sector to each vertex.

Let $v$ be a vertex that has been allocated a sector, call it $(a_v,b_v)$. Suppose $v$ has $k$ children $\{v_0,v_1,\ldots,v_{k-1}\}$. Assign sector $$\left(a_v+\frac{(b_v-a_v)i}{k},a_v+\frac{(b_v-a_v)(i+1)}{k}\right)$$ to $v_i$.

This should define a sector for each vertex of the tree. Now, to actually compute coordinates for each vertex, let $v$ be a vertex of the tree and let $d$ be the distance from the root to $v$. The coordinates for $v$ should be $$dh\left(\cos\left(\frac{a_v+b_v}{2}\right),\sin\left(\frac{a_v+b_v}{2}\right)\right),$$ where $h$ is the increase in the radius of two consecutive circles.

Here is an example of the kind of layout this generates. Is this something like what you had in mind?

example layout

Could you possibly be looking for the "radial layout" of a tree? Was reminded of that term after trying to come up with a name for the image ;-)

$\endgroup$

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy