#### 11.5.5 Defining Coordinates ¶

Coordinates can be specified using values similar to the value of alignment attributes (see Block Layout). You need two of those separated by a comma and enclosed in parenthesis. All the possibilities of how to form these values apply, with the difference that if you omit the at symbol and the parts after (just specify a block or blocks with or without an offset), the center of the block(s) is taken (with the offset potentially). A few examples

`(A,B)`

  The center of A and the middle of B.

`(A+10, B@top)`

  10 pixels right of the centerline of A and the top of B.

`(A+B, A+B)`

  The midpoint of the bounding box of A and B

`(A@33%, B@m33%)`

  The left thirdpoint of A (ignoring its margins) and the top thirdpoint of B (including its margins).

`(10,20)`

  A coordinate relative to the parent’s inner margin’s (top-left corner).

`(50%+10, 0)`

  Ten pixels right of the vertical centerline of the parent at the top internal margin of it.

`(m0%+15, 100%)`

  Fifteen pixels right of the inner line of the parent and at the bottom inner margin of it. For a detailed explanation on how the ’m’ character modifies number-only coordinates referring to the parent, see Block Layout.

If you use a coordinate at least on one end of an arrow, you can omit one of the coordinates. This will result in a horizontal or vertical arrow, taking the omitted coordinate from the other end.

After coordinates, you can also specify a direction (but not a port number) after the `@` symbol. You can use both compass points and degrees as for blocks. A second `@` symbol with a number may follow the direction specifying the distance of the waypoint (since there is no block to attach a distance to). After that you can further add fine-tuning modifiers to the arrow end as specified in Fine-tuning Arrow Ends. Thus this is a valid arrow: `(a@10,b@20)@sw@10+x10-5`.

If an arrow (or line) starts (or ends) at a coordinate, where the specification of both the X and Y coordinates contain the same single block, that block is used to clip the arrow (if the arrow starts inside the block). This allows coordinates to be used to specify a location for the block not exposed as a port. For such arrow ends, arrow de-overlapping is also executed as explained in Automatic De-Overlapping at Arrow Ends. Arrows starting from coordinates which have different or multiple blocks in the X and Y coordinate specification do not get de-overlapped.