You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Helical surfaces should be mathematically correct - or as close as possible to correct.
Actual behavior
We use 2nd order curves to form the edges of helical extrusions. This leads to non-uniform pitch along the extrusion. This error would probably be reduced by using NURBS of degree 3 enough that we'd never need to worry about it again. One comment on this is here: #1447 (comment)
This function was modified for version 3.0 but is equivalent. An alternative would need to produce curves with 4 control points instead of 3, and the associated weights. I'm not currently up on the math for that. One could use degree elevation to go from 2nd degree to 3rd in the plane perpendicular to the axis, but the axial displacements will still need figuring out.
We probably want to keep the existing 2nd degree surfaces for revolve because there is no error for that case.
You should be informed that the helical surface can't be exaclty repesented nor 2nd, nor 3rd order surfaces. So this is only about lowering number of subdivisions (read as performance).
System information
Expected behavior
Helical surfaces should be mathematically correct - or as close as possible to correct.
Actual behavior
We use 2nd order curves to form the edges of helical extrusions. This leads to non-uniform pitch along the extrusion. This error would probably be reduced by using NURBS of degree 3 enough that we'd never need to worry about it again. One comment on this is here: #1447 (comment)
Additional information
The function for creating these surfaces is here:
solvespace/src/srf/surface.cpp
Line 68 in 7d379e7
This function was modified for version 3.0 but is equivalent. An alternative would need to produce curves with 4 control points instead of 3, and the associated weights. I'm not currently up on the math for that. One could use degree elevation to go from 2nd degree to 3rd in the plane perpendicular to the axis, but the axial displacements will still need figuring out.
We probably want to keep the existing 2nd degree surfaces for revolve because there is no error for that case.
Edit: There is a paper covering this idea called "Interpolation of helical patches by kinematic rational Bézier patches"
by Mick, S., and Röschel, O.
https://www.geometrie.tugraz.at/roeschel/preprints/Interpol_helical_patches_roe.pdf
The text was updated successfully, but these errors were encountered: