You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit ca0c508
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: showcase/sundial/README.md
+46-17Lines changed: 46 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,23 @@
1
1
# sundial
2
2
3
-

3
+

4
4
5
5
A horizontal garden sundial for 45° north: a stepped stone plinth, a
6
6
tapered octagonal granite column with a flared foot and collar, a cap, a
7
-
bronze dial plate with a bead rim, a curved-backed bronze gnomon, and
8
-
twenty-two inked lines laid out by the dial formula. **A showcase piece,
7
+
bronze dial plate with a bead rim, a curved-backed bronze gnomon,
8
+
twenty inked hour and half-hour lines laid out by the dial formula, two
9
+
chapter rings and Roman numerals VII–XI and I–V, each numeral on its own
10
+
hour line. Astragal beads ring the column at its foot and under its collar. **A showcase piece,
9
11
not an example** — it witnesses no API contract. It asserts that generated
10
12
geometry meets declared asset budgets, recomputed from the finished mesh.
11
13
12
14
## What it composes
13
15
14
16
| Shipped content | Used for |
15
17
| --- | --- |
16
-
|`skills/mesh-editing-and-bmesh`| frusta, lathed plate and ring, swept ink bars and a lofted gnomon, all in one `bmesh`, chamfered with `bmesh.ops.bevel`|
18
+
|`skills/mesh-editing-and-bmesh`| frusta, octagonal astragal beads, lathed plate and rings, swept ink bars and numeral strokes and a lofted gnomon, all in one `bmesh`, chamfered with `bmesh.ops.bevel`|
17
19
|`skills/custom-properties`| a face attribute (`StoneTone`) read by the granite shader |
18
-
|`skills/procedural-materials-and-shaders`| speckled, mossy granite with a pitted bump; bronze going green in patches; satin ink |
20
+
|`skills/procedural-materials-and-shaders`| speckledgranite with grime and a low-contrast lichen held to the plinth joints, and a pitted bump; bronze going green in patches; satin ink |
19
21
|`skills/bake-high-to-low`| Cycles tangent-space normal bake, a 128-segment high onto the 64-segment low |
| Gnomon bite | 2.0–5.0 mm below the plate's top | 3.50 mm |
@@ -102,6 +104,13 @@ Real-world size: a 1.01 m garden sundial. A 0.40 m dial at hip height
102
104
foot starts 5 mm into the step, the column 10 mm, so the two bottoms
103
105
are not the same plane. Near-right-angle edges are chamfered with
104
106
`bmesh.ops.bevel`, `material=` passed so the chamfer keeps the stone slot.
107
+
-**Beads.** Two octagonal astragals, a closed (width, height) profile
108
+
swept round the shaft's own octagon. The profile is offset from the
109
+
column's width at the bead's height, so the inner wall grips 8 mm
110
+
inside the taper, and the flat that would sit on the foot (or under the
111
+
collar) is buried 3 mm into that block. A bead is told from the stone
112
+
blocks as the only stone shell shallower than the cap; the part budget
113
+
asserts there are two.
105
114
-**Plate.** One lathe about Z: a flat field, a bead rim, a bevelled
106
115
outer edge and an underside that sits 4 mm into the cap. 64 segments;
107
116
the high mesh is 128.
@@ -114,10 +123,24 @@ Real-world size: a 1.01 m garden sundial. A 0.40 m dial at hip height
114
123
-**Ink.** Every line is a keeled hexagon swept along its bearing: a
115
124
ridge 2.0 mm proud of the plate, a keel 2.5 mm buried. A ridge and a keel
116
125
keep the tops and the bottoms of twenty lines from being one plane.
117
-
The noon arrow is the exception: a flat-topped, chamfered prism.
126
+
The noon arrow is the exception: a flat-topped, chamfered prism. Hour
127
+
lines run 60–127 mm out and end in an inner chapter ring at 128.5 mm;
128
+
the numerals stand between it and the outer ring at 166.5 mm.
129
+
-**Numerals.** Each Roman numeral is a set of strokes in the same keeled
130
+
section, laid out in glyph space (across, up) and mapped to the dial so
131
+
a glyph point goes to bearing `φ + u / r_mid`. A constant angular offset
132
+
keeps every I on its own radius, so the three strokes of a III are not
133
+
parallel planes side by side, and their end caps are not one plane.
134
+
The two strokes of a V cross just above the point instead of sharing a
135
+
vertex, which would be a double. Glyph up is outward. The numerals move
136
+
with the lines under `--linear-hours`. XII is left to the noon arrow.
137
+
The part budget counts the strokes in the numeral band (131–161 mm by
138
+
centroid) against the strokes the glyphs call for; numeral bearings are
139
+
not separately asserted, since the hour lines they stand on are.
118
140
-**Collider.** One hull per stone block, one for the gnomon, and one for
119
141
the plate taken over every fourth segment. The ink is left out: it is a
120
-
couple of millimetres of relief on a surface the plate hull covers.
142
+
couple of millimetres of relief on a surface the plate hull covers. So
143
+
are the beads: 17 mm of moulding round a shaft the column hull covers.
121
144
122
145
## Findings the budgets forced
123
146
@@ -133,6 +156,12 @@ Real-world size: a 1.01 m garden sundial. A 0.40 m dial at hip height
133
156
stations are gone.
134
157
-**Collider.** Hulls over chamfered stone are heavier than they look; the
135
158
foot took the compound from 388 to 444 triangles.
159
+
-**Coplanar by coincidence.** Widening the numerals put one stroke of
160
+
the IX's X on the same plane as the end cap of the 10:30 tick, 44 mm
161
+
away: three pairs, exit 15. The X is now 10.4 mm wide, not 11.
162
+
-**A gnomon seen edge-on is a needle.** The hero first turned the piece
163
+
−28°, which put the camera 62° off the gnomon's face, and the fin read
164
+
as a stick. The still now turns it −58°.
136
165
137
166
## Conventions walked
138
167
@@ -147,9 +176,9 @@ Every convention in `showcase/README.md`, and whether it applies here.
147
176
| A member is tenoned into its seat | yes | each stone part into its host; the gnomon 3.5 mm into the plate (`--float-gnomon`) |
148
177
| Seat conformance (a band: minimum so it cannot float) | yes | the gnomon bite and every ink line's proud and buried depth (`--float-gnomon`, `--float-lines`) |
149
178
| Mirrored assemblies | partly | the gnomon and noon arrow are centred on the meridian; asserted as one centroid offset (`--shift-noon`) |
150
-
| Material face floors | yes | stone 140, bronze 430, ink 570|
179
+
| Material face floors | yes | stone 240, bronze 430, ink 1300|
151
180
| One substance, one slot | yes | granite, bronze, ink |
152
-
| Shading is part of the model | yes | stoneand gnomon faceted (dressed stone, a bronze plate); the lathed plate and ring smooth, every edge over 35° hard |
181
+
| Shading is part of the model | yes | stone, beads and gnomon faceted (dressed stone, a bronze plate); the lathed plate and both rings smooth, every edge over 35° hard |
153
182
| Edge treatment | partly | chamfered, but no separate budget: removing the chamfers moves the triangle band first |
154
183
| Sort bmesh operator inputs | yes | the bevel's edge list is sorted by index |
155
184
| The bake cage is narrower than the nearest neighbour | yes |`CAGE_EXTRUSION` 0.01 m |
0 commit comments