|
309 | 309 | let angular = proj.axes.at(0)
|
310 | 310 | let distal = proj.axes.at(1)
|
311 | 311 |
|
312 |
| - let (origin, outer) = (proj.transform)((0, distal.min), (0, distal.max)) |
313 |
| - let radius = vector.dist(origin, outer) |
| 312 | + let (origin, start, mid, stop) = (proj.transform)( |
| 313 | + (angular.min, distal.min), |
| 314 | + (angular.min, distal.max), |
| 315 | + ((angular.min + angular.max) / 2, distal.max), |
| 316 | + (angular.max, distal.max), |
| 317 | + ) |
| 318 | + start = start.map(calc.round.with(digits: 6)) |
| 319 | + stop = stop.map(calc.round.with(digits: 6)) |
| 320 | + |
| 321 | + let radius = vector.dist(origin, start) |
314 | 322 |
|
315 | 323 | let style = _prepare-style(ptx, cetz.styles.resolve(ptx.cetz-ctx.style,
|
316 | 324 | root: "axes", merge: style.named(), base: default-style))
|
317 | 325 | let angular-style = _get-axis-style(ptx, style, "angular")
|
318 | 326 | let distal-style = _get-axis-style(ptx, style, "distal")
|
319 | 327 |
|
| 328 | + let r-padding = angular-style.padding.first() |
320 | 329 | let r-start = origin
|
321 | 330 | let r-end = vector.add(origin, (0, radius))
|
322 |
| - draw.line(r-start, r-end, stroke: distal-style.stroke) |
| 331 | + draw.line(r-start, (rel: (0, radius + r-padding)), stroke: distal-style.stroke) |
323 | 332 | if "computed-ticks" in distal {
|
| 333 | + // TODO |
324 | 334 | //ticks.draw-cartesian-grid(min-y, max-y, 1, y, y.computed-ticks, min-x, max-x, y-style)
|
325 | 335 | ticks.draw-cartesian(r-start, r-end, distal.computed-ticks, distal-style)
|
326 | 336 | }
|
327 | 337 |
|
328 |
| - let padding = angular-style.padding.first() |
329 |
| - draw.circle(origin, radius: radius + padding, |
330 |
| - stroke: angular-style.stroke) |
| 338 | + if start == stop { |
| 339 | + draw.circle(origin, radius: radius + r-padding, |
| 340 | + stroke: angular-style.stroke, |
| 341 | + fill: angular-style.fill) |
| 342 | + } else { |
| 343 | + // Apply padding to all three points |
| 344 | + (start, mid, stop) = (start, mid, stop).map(pt => { |
| 345 | + vector.add(pt, vector.scale(vector.norm(vector.sub(pt, origin)), r-padding)) |
| 346 | + }) |
| 347 | + |
| 348 | + draw.arc-through(start, mid, stop, |
| 349 | + stroke: angular-style.stroke, |
| 350 | + fill: angular-style.fill, |
| 351 | + mode: "PIE") |
| 352 | + } |
331 | 353 | if "computed-ticks" in angular {
|
332 | 354 | // TODO
|
333 | 355 | }
|
|
0 commit comments