GCPnts_AbscissaPoint on either side of a curve

Hi,

I'm trying to compute the abscissa on either side of the parameter on a curve.
To do so, I've got a reversed and non-reversed instance of the curve.
To get a decent estimate of where the abscissa should lie on either side of the curve, by computing the intersection of a sphere, placed at the `from` parameter on the curve.

What strikes me is that even though I've reversed the curve, and have given good parameter estimates, that GCPnts_AbscissaPoint finds the same point on both the reversed and non-reversed point. Worse, also points are found that lie not at the given distance at all. Have a look at: http://jelleferinga.com/files/abscissa.png . You'll see some vertices that lie on the inner blue ring.
The vertex close to the red line represents the `from` parameter of GCPnts_AbscissaPoint. In three cases, the right point is found, but if you look at the top right vertices you see that the found point is really close to the `from` parameter. Could it be that GCPnts_AbscissaPoint is not handling seams well? Also, I'm curious how I can find the abscissa on either side of the curve!

Thanks in advance,

-jelle

jelle's picture

duhhh... of course using the _sign_ of the distance determines on which side of the parameter the abscissa is found... stupid me...
still, GCPnts_AbscissaPoint fails when the `from` U0 parameter is close the end parameter and the Ui parameter is close to the beginning ( so, near the seam of the curve )

As you see here, my intersection parameters are near the end/start, this is when GCPnts_AbscissaPoint fails on me.
domain: (-1.0, 2.9999999999999942) found these spheric intersection parameters: [-0.77512245798861978, 2.7011170202961403 ]
parameter to start from: 2.99201746962

Cheers,

-jelle

jelle's picture

When I rebuild the curve such that Contunuity > C1, and make sure that my curve is closed ( does periodic matter? ) I get the expected results.

jelle's picture

Correction; Geom_BSpline.IsPeriodic is required, when wanting to find the abscissa on either side of a parameter, this way the seam doesn't get in the way.
Makes sense.