buildingSMART / ifc-gherkin-rules

MIT License
9 stars 17 forks source link

ALS012 curve segment polynomial curves #254

Open jmirtsch opened 1 month ago

jmirtsch commented 1 month ago

(https://github.com/buildingSMART/ifc-gherkin-rules/blob/f7dcaac762beb0c613d46f29fe94ca8aa778f9dd/features/ALS012_Alignment-segment-start-and-length-attribute-types.feature) requires curve segments to be use length measures to trim the basis curve. This is reasonable for line, arc and clothoid curveswhere the length is explicitly related to the parameterization. For polynomial curves it seems much harder, which will reduce reliability. For example a parabola it seems to me that integration is needed to compute the arc length. Reversing this from length to trim point on a curve seems not to be practical. http://calculuscourse.maa.org/sample/Chapter8/Projects/Length%20of%20a%20curve/length1.html Parabolic transition can be frequently used on road vertical alignments (or profiles), and some regions use cubics as transitions on horizontal alignments.

I would request that the rule permit the trim to be accepted as a parameter value for polynomial basis curves.

If there are straight forward methods to determine the point on a parabola or cubic based on arc length, please let me know so I can research this.

`#228= IFCAXIS2PLACEMENT2D(#226,#227);

229= IFCPOLYNOMIALCURVE(#155,(0.0,1.0),(668.533223860785,0.032660131366265,-0.00012347613018937),$);

230= IFCCURVESEGMENT(.CONTINUOUS.,#228,IFCPARAMETERVALUE(0.0),IFCPARAMETERVALUE(200.0),#229);`

Attached is a test file. If I'm overlooking a practical way to use length measure with polynomials, I'm grateful for any guidance.

Profile-2C parabolic.zip

evandroAlfieri commented 1 month ago

Thanks Jon. If memory serves, this issue was longly discussed within the Implementers Forum. Multiple options have been proposed (a flexible yet unclear select, a where rule, and a couple more options), with pros and cons on almost every option. A complete consensus was never reached among participants in the discussion. The issue was then brought to the ISO Editorial Group, which suggested that

To guarantee future compatibility with next IFC releases, it has been decided to lighten the constraint, by removing the WR and transform the constraint into a Formal Proposition, easier to be removed in future (when documentation of parameters for all curves becomes available).

This resulted in the Formal Proposition for IfcCurveSegment (also reported below)

For the foreseeable future, until implementer agreements have resulted in a defined parametric space for all possible types in attribute ParentCurve, the values for attributes SegmentStart and SegmentStart shall be of type IfcLengthMeasure.

In conclusion, this rule of the Validation Service is merely enforcing a requirement that is already captured in the official documentation and, as specified, can only be lifted in a future release - when parametrisation of all available curves will be defined.