1# place
2
3A *place* is a specific point on an object.
4A *[position](./position.md)* is a more general concept that means
5any X,Y coordinate on the drawing.  This page is about *place*.
6
7  *  *object*
8  *  *object* *dot-edgename*
9  *  *edgename* **of** *object*
10  *  ORDINAL **vertex of** *object*
11
12Every object has at least 9 places.  Line objects have additional
13places for each internal vertex.   Most places are on the boundary
14of the object, though ".center" or ".c" is in the middle.  The
15".start" and ".end" places might be in the interior of the object
16for the case of lines.
17Some places may overlap.
18Places usually have multiple names.
19There are 22 different place names to refer to the 9 potentially
20distinct places.
21
22For a block object, when the layout direction is "right", we have:
23
24~~~ pikchr
25B: box thick thick color blue
26
27circle ".n" fit at 1.5cm heading 0 from B.n
28    arrow thin from previous to B.n chop
29circle ".north" fit at 3cm heading 15 from B.north
30    arrow thin from previous to B.north chop
31circle ".t" fit at 1.5cm heading 30 from B.t
32    arrow thin from previous to B.t chop
33circle ".top" fit at 3cm heading -15 from B.top
34    arrow thin from previous to B.top chop
35circle ".ne" fit at 1cm ne of B.ne; arrow thin from previous to B.ne chop
36circle ".e" fit at 2cm heading 50 from B.e; arrow thin from previous to B.e chop
37circle ".right" fit at 3cm heading 75 from B.right
38    arrow thin from previous to B.right chop
39circle ".end¹" fit at 3cm heading 100 from B.end
40    arrow thin from previous to B.end chop
41circle ".se" fit at 1cm heading 110 from B.se
42    arrow thin from previous to B.se chop
43circle ".s" fit at 1.5cm heading 180 from B.s
44    arrow thin from previous to B.s chop
45circle ".south" fit at 3cm heading 195 from B.south
46    arrow thin from previous to B.south chop
47circle ".bot" fit at 1.8cm heading 215 from B.bot
48    arrow thin from previous to B.bot chop
49circle ".bottom" fit at 2.7cm heading 160 from B.bottom
50    arrow thin from previous to B.bottom chop
51circle ".sw" fit at 1cm sw of B.sw; arrow thin from previous to B.sw chop
52circle ".w" fit at 2cm heading 270 from B.w
53    arrow thin from previous to B.w chop
54circle ".left" fit at 3cm heading 180+75 from B.left
55    arrow thin from previous to B.left chop
56circle ".start¹" fit at 2.5cm heading 295 from B.start
57    arrow thin from previous to B.start chop
58circle ".nw" fit at 1cm nw of B.nw; arrow thin from previous to B.nw chop
59circle ".c" fit at 2.5cm heading -25 from B.c
60    line thin from previous to 0.5<previous,B.c> chop
61    arrow thin from previous.end to B.c
62circle ".center" fit at 3.6cm heading 180-44 from B.center
63    line thin from previous to 0.5<previous,B.center> chop
64    arrow thin from previous.end to B.center
65circle "&lambda;" fit at 2.5cm heading 250 from B
66    line from previous to 0.5<previous,B> chop
67    arrow thin from previous.end to B
68~~~
69
70The diagram above is for a box with square corners.  The non-center
71places for other block objects are always on the boundary of the
72object.  Thus for an ellipse:
73
74~~~ pikchr
75B: ellipse thick thick color blue
76
77circle ".n" fit at 1.5cm heading 0 from B.n
78    arrow thin from previous to B.n chop
79circle ".north" fit at 3cm heading 15 from B.north
80    arrow thin from previous to B.north chop
81circle ".t" fit at 1.5cm heading 30 from B.t
82    arrow thin from previous to B.t chop
83circle ".top" fit at 3cm heading -15 from B.top
84    arrow thin from previous to B.top chop
85circle ".ne" fit at 1cm ne of B.ne; arrow thin from previous to B.ne chop
86circle ".e" fit at 2cm heading 50 from B.e; arrow thin from previous to B.e chop
87circle ".right" fit at 3cm heading 75 from B.right
88    arrow thin from previous to B.right chop
89circle ".end&sup1;" fit at 3cm heading 100 from B.end
90    arrow thin from previous to B.end chop
91circle ".se" fit at 1cm heading 110 from B.se
92    arrow thin from previous to B.se chop
93circle ".s" fit at 1.5cm heading 180 from B.s
94    arrow thin from previous to B.s chop
95circle ".south" fit at 3cm heading 195 from B.south
96    arrow thin from previous to B.south chop
97circle ".bot" fit at 1.8cm heading 215 from B.bot
98    arrow thin from previous to B.bot chop
99circle ".bottom" fit at 2.7cm heading 160 from B.bottom
100    arrow thin from previous to B.bottom chop
101circle ".sw" fit at 1cm sw of B.sw; arrow thin from previous to B.sw chop
102circle ".w" fit at 2cm heading 270 from B.w
103    arrow thin from previous to B.w chop
104circle ".left" fit at 3cm heading 180+75 from B.left
105    arrow thin from previous to B.left chop
106circle ".start&sup1;" fit at 2.5cm heading 295 from B.start
107    arrow thin from previous to B.start chop
108circle ".nw" fit at 1cm nw of B.nw; arrow thin from previous to B.nw chop
109circle ".c" fit at 2.5cm heading -25 from B.c
110    line thin from previous to 0.5<previous,B.c> chop
111    arrow thin from previous.end to B.c
112circle ".center" fit at 3.6cm heading 180-44 from B.center
113    line thin from previous to 0.5<previous,B.center> chop
114    arrow thin from previous.end to B.center
115circle "&lambda;" fit at 2.5cm heading 250 from B
116    line from previous to 0.5<previous,B> chop
117    arrow thin from previous.end to B
118~~~
119
120The "&lambda;" case refers to when a bare object name is used.
121A bare object name is the same as referring to the center of
122the object.
123
124In the previous two diagrams, the ".start" and ".end" objects
125are marked with "&sup1;" because
126the location of ".start" and ".end" varies
127according to the layout direction.  The previous diagrams assumed
128a layout direction of "right".  For other layout directions, we have:
129
130<blockquote>
131<table border="1" cellpadding="10px" cellspacing="0">
132<tr><th>Layout Direction<th>.start<th>.end
133<tr><td>right<td>.w<td>.e
134<tr><td>down<td>.n<td>.s
135<tr><td>left<td>.e<td>.w
136<tr><td>up<td>.s<td>.n
137</table></blockquote>
138
139For a line, the place names refer to a bounding box that
140encloses the line:
141
142~~~ pikchr
143B: line thick thick color blue go 0.8 heading 350 then go 0.4 heading 120 \
144    then go 0.5 heading 35 \
145    then go 1.2 heading 190  then go 0.4 heading 340 "+"
146
147   line thin dashed color gray from B.nw to B.ne to B.se to B.sw close
148
149circle ".n" fit at 1.5cm heading 0 from B.n
150    arrow thin from previous to B.n chop
151circle ".north" fit at 3cm heading 15 from B.north
152    arrow thin from previous to B.north chop
153circle ".t" fit at 1.5cm heading 30 from B.t
154    arrow thin from previous to B.t chop
155circle ".top" fit at 3cm heading -15 from B.top
156    arrow thin from previous to B.top chop
157circle ".ne" fit at 1cm ne of B.ne; arrow thin from previous to B.ne chop
158circle ".e" fit at 2cm heading 50 from B.e; arrow thin from previous to B.e chop
159circle ".right" fit at 3cm heading 75 from B.right
160    arrow thin from previous to B.right chop
161circle ".end" fit at 2cm heading 120 from B.end
162    arrow thin from previous to B.end chop
163circle ".se" fit at 1cm heading 170 from B.se
164    arrow thin from previous to B.se chop
165circle ".s" fit at 1.5cm heading 180 from B.s
166    arrow thin from previous to B.s chop
167circle ".south" fit at 3cm heading 195 from B.south
168    arrow thin from previous to B.south chop
169circle ".bot" fit at 1.8cm heading 215 from B.bot
170    arrow thin from previous to B.bot chop
171circle ".bottom" fit at 2.7cm heading 160 from B.bottom
172    arrow thin from previous to B.bottom chop
173circle ".sw" fit at 1cm sw of B.sw; arrow thin from previous to B.sw chop
174circle ".w" fit at 2cm heading 300 from B.w
175    arrow thin from previous to B.w chop
176circle ".left" fit at 3cm heading 280 from B.left
177    arrow thin from previous to B.left chop
178circle ".start" fit at 2.5cm heading 265 from B.start
179    arrow thin from previous to B.start chop
180circle ".nw" fit at 1cm nw of B.nw; arrow thin from previous to B.nw chop
181circle ".c" fit at 2.5cm heading -15 from B.c
182    line thin from previous to 0.5<previous,B.c> chop
183    arrow thin from previous.end to B.c
184circle ".center" fit at 3.3cm heading 110 from B.center
185    line thin from previous to 0.5<previous,B.center> chop
186    arrow thin from previous.end to B.center
187circle "&lambda;" fit at 1.7cm heading 250 from B
188    line from previous to 0.5<previous,B> chop
189    arrow thin from previous.end to B
190~~~
191
192The ".start" of a line always refers to its first vertex.
193The ".end" is usually the last vertex, except when the "`close`"
194keyword is used, in which case the ".end" is the same as
195".e", ".s", ".w", or ".n" depending on layout direction,
196just like a block object.
197
198The vertexes of a line object are also places:
199
200~~~ pikchr
201B: line -> thick color blue go 0.8 heading 350 then go 0.4 heading 120 \
202    then go 0.5 heading 35 \
203    then go 1.2 heading 190  then go 0.4 heading 340
204
205oval "1st vertex" fit at 2cm heading 250 from 1st vertex of B
206    arrow thin from previous to 1st vertex of B chop
207oval "2nd vertex" fit at 2cm west of 2nd vertex of B
208    arrow thin from previous to 2nd vertex of B chop
209oval "3rd vertex" fit at 2cm north of 3rd vertex of B
210    arrow thin from previous to 3rd vertex of B chop
211oval "4th vertex" fit at 2cm east of 4th vertex of B
212    arrow thin from previous to 4th vertex of B chop
213oval "5th vertex" fit at 2cm east of 5th vertex of B
214    arrow thin from previous to 5th vertex of B chop
215oval "6th vertex" fit at 2cm heading 200 from 6th vertex of B
216    arrow thin from previous to 6th vertex of B chop
217~~~
218