I am wanting to understand the value system used to locate ports around a node. I have been using GoObject.MiddleRight, etc. I know there are numerical values, and these seem to follow the pattern of two “circles” around the node, the inner circle being the corners (tl  2, tr  4, br  8, bl  16), where each value is 2 times the previous. And the outer circle being the centers (tc  32, mr  64, bc  128, ml  256).
So some questions:

What is the meaning of these values/locations? Why was this pattern chosen?

Can you use arbitrary values to position a port exactly where you want it, e.g., 38 to be just right of 32? What is the arbitrary value layout?