Open Moult opened 2 years ago
I agree, the word "override" is unfortunate as mentioned by @TLiebich
Orientation is essentially a single flag in the case of an edge (-1 or +1), so it composes nice if you see it as multiplying with -1.
Maybe something like:
NOTE If the datatype of ParentCurve is IfcTrimmedCurve, or any other type carrying an orientation, the final orientation is composed of SameSense and IfcTrimmedCurve.SenseAgreement
I don't understand enough about this topic to judge, but is that proposed note the same as the default behaviour? If so, maybe no note is required. If not, then I would support your updated note.
Yes well the tricky thing is that TrimmedCurve.SenseAgreement does not only reverse the direction of an otherwise identical edge curve, it also - in case of periodic curves - flips the parametric range over which the curve is defined [a, b] or [b, a + 2pi].
So the default obvious behaviour might be different when you evaluate the geometry procedures top-down vs bottom-up. If you evaluate the final orientation before determining the parametric range of the curve then IfcCompositeCurveSegment.SameSense would also impact the parametric range and I think this is what the note is supposed to prevent, but doesn't do so very clearly.
My proposal also not, because it's rather hard to clearly word this, but we can add it:
NOTE If the datatype of ParentCurve is IfcTrimmedCurve, or any other type carrying an orientation, the final orientation is composed of SameSense and the orientation of the underlying curve. IfcCompositeCurveSegment.SenseAgreement will not affect the parametric range in case of a IfcTrimmedCurve with periodic BasisCurve.
first part of the note refers to all underlying curves, second part to trimmed curve. A slight rephrasing:
NOTE The final orientation is composed of SameSense and the orientation of the underlying ParentCurve. If the datatype of ParentCurve is IfcTrimmedCurve, the SameSense will not affect the parametric range in case of a periodic IfcTrimmedCurve.BasisCurve, and the SameSense is applied after the SenseAgreement of IfcTrimmedCurve.
please double check, in your comment there seems to be a mismatch of TrimmedCurve.SenseAgreement andIfcCompositeCurveSegment.SenseAgreement
Can we mark this as decided and use @TLiebich 's latest note?
Proposal to delete this note:
Originally reported here
The NOTE in the Description about the parameter SameSense (" If the datatype of ParentCurve is IfcTrimmedCurve, the value of SameSense overrides the value of IfcTrimmedCurve.SenseAgreement"), makes no sense.
There is a +1 by trondholen and an indirect +1 by @TLiebich in his sentence "(if at all)" in the original post.