Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use 3rd degree NURBS surfaces for helix extrusions #1448

Open
phkahler opened this issue Feb 8, 2024 · 1 comment
Open

Use 3rd degree NURBS surfaces for helix extrusions #1448

phkahler opened this issue Feb 8, 2024 · 1 comment

Comments

@phkahler
Copy link
Member

phkahler commented Feb 8, 2024

System information

  • SolveSpace version: All
  • Operating system: All

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:

SSurface SSurface::FromRevolutionOf(SBezier *sb, Vector pt, Vector axis, double thetas,

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

@Evil-Spirit
Copy link
Collaborator

Evil-Spirit commented May 21, 2024

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants