What happened?
Hi,
This model is not being rendered correctly: SOCKEL.ifc.txt
There is one triangle missing in each entity of IFCBSPLINESURFACEWITHKNOTS.
It seems like the cause can be found in curve-utils.h in GetRationalBSplineCurveWithKnots(...)
|
for (double i = 0; i < 1; i += step) |
|
{ |
|
glm::dvec3 point = InterpolateRationalBSplineCurveWithKnots(i, degree, points, knots, weights); |
|
c.push_back(point); |
|
} |
The curve points are added including the first control point (i=0) but missing the last one (i=1)
So the curve is missing its endpoint.
This is usually compensated by the fact, that the next edge curve also contains the endpoint of it's predecessor as its starting point. When a curves orientation is reversed though, that point is missing in both curves. And thats exactly what happened here.
I fixed it by simply adding the last control point to the list. Should I submit a PR for this?
Version
0.77
What browsers are you seeing the problem on?
Chrome
Relevant log output
Anything else?
No response
What happened?
Hi,
This model is not being rendered correctly: SOCKEL.ifc.txt
There is one triangle missing in each entity of IFCBSPLINESURFACEWITHKNOTS.
It seems like the cause can be found in curve-utils.h in GetRationalBSplineCurveWithKnots(...)
engine_web-ifc/src/cpp/web-ifc/geometry/operations/curve-utils.h
Lines 284 to 288 in f20fcdd
The curve points are added including the first control point (i=0) but missing the last one (i=1)
So the curve is missing its endpoint.
This is usually compensated by the fact, that the next edge curve also contains the endpoint of it's predecessor as its starting point. When a curves orientation is reversed though, that point is missing in both curves. And thats exactly what happened here.
I fixed it by simply adding the last control point to the list. Should I submit a PR for this?
Version
0.77
What browsers are you seeing the problem on?
Chrome
Relevant log output
Anything else?
No response