@metamesh/modeling 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @metamesh/modeling
2
2
 
3
+ ## 0.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - e405876: Add a bounded closed XY cross-section parameter with immutable values, strict validation,
8
+ normalization, presets, and runtime compatibility checks. Add `sampleCrossSection` for physical
9
+ curve sampling and validated closed-loop geometry. Existing side-profile values remain compatible.
10
+
11
+ ### Patch Changes
12
+
13
+ - e405876: Ignore fully transparent CSS color fills and strokes when importing SVG geometry.
14
+
3
15
  ## 0.8.0
4
16
 
5
17
  ### Minor Changes
package/README.md CHANGED
@@ -210,7 +210,13 @@ so the requested radius reaches the faces. `CylinderOptions` uses the same sizin
210
210
  ## Profiles and mechanical construction
211
211
 
212
212
  `sampleOpenProfile` samples upward radius/height line and cubic chains. Consumers own closure and
213
- product constraints. `circleLoop`, `rectangleLoop`, and other point factories return ordered loops.
213
+ product constraints. `sampleCrossSection` samples 2–32 explicitly closed XY line/cubic segments
214
+ after positive width/height scaling, using the shared physical curve policy. It returns one
215
+ immutable CCW loop without a repeated seam, rejecting sampled self-intersections, zero area,
216
+ nonfinite coordinates, and exhausted budgets. Its default unique vertex ceiling is the smaller of
217
+ 4096 and `limits.maxProfilePoints`; each segment also obeys `limits.maxPathPoints`. It accepts plain
218
+ curve coordinates without an SDK dependency, editor modes, or a normalized-range requirement.
219
+ `circleLoop`, `rectangleLoop`, and other point factories return ordered loops.
214
220
  `Profile` owns identified components, contours, and landmarks; `CorrespondingProfile` retains their
215
221
  shared sampled slots.
216
222
 
@@ -416,6 +422,9 @@ Install `fontkit` to use `prepareVectorFont` from `/text`, and `woff2-encoder` w
416
422
 
417
423
  `svgSection` imports bounded painted SVG documents; `svgPathSection` imports filled path data. Y-down coordinates convert to Y-up; nonzero/even-odd filling preserves counters. Sampling applies after transforms and unit conversion. Basic shapes, groups, affine transforms, physical units, viewBox, fills, and strokes are supported. Text must be outlined. External resources, scripts, clipping, masks, filters, and unsupported content fail contextually. Pure parsers are shared with validation and the vector editor.
418
424
 
425
+ Zero-alpha colors and zero-opacity paint channels contribute no geometry. Positive alpha contributes
426
+ the full painted region; presentation transparency does not reduce its physical area.
427
+
419
428
  ## Final triangle topology
420
429
 
421
430
  `analyzeTriangleMesh` validates and supplies bounds, counts, area, and signed volume in one traversal, with optional edge/component facts. Measurements, bounds, and signatures are independent immutable snapshots; external mutable buffers are inspected freshly on each call. Closed-edge checks require two oppositely wound faces per edge; they do not detect every geometric self-intersection. `createTriangleMeshSignature` adds quantized bounds, volume, topology, and a regression fingerprint, not a cryptographic digest.