ocs_doc_api: Phase 2c-ii — dimension sub-types (radius/diameter/angular)

- CreateDimensionRadius/CreateDimensionDiameter (DimensionRadialSpec) +
  CreateDimensionAngular (DimensionAngularSpec) ops (append-only).
- backend add_dimension_radius/diameter (DimensionRadius/DimensionDiameter::new)
  + add_dimension_angular (DimensionAngular3Pt::new computes angle);
  dimension_measurement returns degrees for angular sub-types.
- facade create_dimension_radius/diameter/angular; spec constructors; api_reference
  + binding_schema regenerated; mocks + baseline.
- Test phase2cii_dimension_radius_diameter_angular -> 613 host lib + 3 consistency green.
This commit is contained in:
Sebastian committed 2026-09-06 12:31:23 +02:00
1 parent 2522979285
commit 8d8c120880
12 files changed
+205 -3

No files matched your search

+14
View File
@@ -183,6 +183,20 @@ impl DocApiBackend for MockBackend {
self.dimension_measurements.insert(id, d);
Ok(id)
}
fn add_dimension_radius(&mut self, spec: &ocs_doc_api::ops::DimensionRadialSpec) -> ApiResult<ObjectId> {
let id = self.alloc("Dimension");
let d = ((spec.center[0] - spec.point[0]).powi(2) + (spec.center[1] - spec.point[1]).powi(2) + (spec.center[2] - spec.point[2]).powi(2)).sqrt();
self.dimension_measurements.insert(id, d);
Ok(id)
}
fn add_dimension_diameter(&mut self, spec: &ocs_doc_api::ops::DimensionRadialSpec) -> ApiResult<ObjectId> {
self.add_dimension_radius(spec)
}
fn add_dimension_angular(&mut self, _spec: &ocs_doc_api::ops::DimensionAngularSpec) -> ApiResult<ObjectId> {
let id = self.alloc("Dimension");
self.dimension_measurements.insert(id, 90.0);
Ok(id)
}
fn dimension_measurement(&self, id: ObjectId) -> ApiResult<f64> {
self.dimension_measurements.get(&id).copied().ok_or(ApiError::UnknownId(id))
}