ON_RevSurface->Ev1Der() get error at end points of reference curve

Hi all,

I know the revolution surface is generated by a reference curve rotating around a fixed axis, like a sphere/hemisphere, but when I try to use ON_RevSurface->Ev1Der(…) to compute the normal at the end points of the reference curve, the result seems to be incorrect, please check the following screenshots.

S is the coordinate of the point, it is correct; Su and Sv are the first derivatives at that point, but Su=(0,0,0), so the normal at that point is N = cross_product(Su, Sv) = (0,0,0), that point should be considered as a singular point, so is there a solution to avoid this situation or any other ideas to solve the problem?


Use EvNormal(), which detects singularities and computes the Jacobian to find the normal when possible.