buildingSMART / IFC4.3.x-development

Repository to collect updates to the IFC4.3 Specification
Other
168 stars 83 forks source link

Remove note on SameSense attribute for IfcCompositeCurveSegment #189

Open Moult opened 2 years ago

Moult commented 2 years ago

Proposal to delete this note:

NOTE If the datatype of ParentCurve is IfcTrimmedCurve, the value of SameSense overrides the value of IfcTrimmedCurve.SenseAgreement

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.

aothms commented 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

Moult commented 2 years ago

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.

aothms commented 2 years ago

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.

TLiebich commented 2 years ago

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

Moult commented 2 years ago

Can we mark this as decided and use @TLiebich 's latest note?