PaulWray wrote: ↑Wed Aug 08, 2018 1:48 am
Thanks. I had not realised that the periodic b-spline meant closed.
Its a very nice tool indeed. I have a lot of questions, but clearly most of these require deep knowledge of the math. Still no harm in asking I guess...
there are 4 sources you should study:
The Nurbs book by Piegl, Tiller
The nurbs editor thread
https://forum.freecadweb.org/viewtopic.php?f=3&t=16473
The curves workbench thread
https://forum.freecadweb.org/viewtopic.php?f=8&t=22675
The shoelast thread
https://forum.freecadweb.org/viewtopic.php?f=3&t=20525
With regard to the weights, it seems that they are only meaningful in relation to each other, correct?. Eg if all weights are the same, the actual value is irrelevant. Similarly, if the weights are different, does increasing/decreasing all weights by a constant multiple leave the curve unchanged?
Yes, weights are very special parameters and should only be changed by operations in background for example projective mappings like stretching operations.
BSplines are simply said projections from the 4 dimensional space to our 3D and the weights are the 4th dimension.
If you want to approximate a known curve with a given number of control points, is there an optimal manual procedure to adjust the control point positions and weights? (Some sort of least squares analysis would be nice!)
I use for design Bezier Curves which are special cases of BSplines. Inkscape is a good example how to design such drawings.
There are some approximations too.
https://youtu.be/wa4K7vodTYM
https://youtu.be/iF29eFrHoFI
I am guessing that adding an extra control point (keeping weights the same) gives you about the same equivalent increase in curve matching accuracy as does adjusting one weight to be different from the others. Or does adjusting weights give access to different families of curves not accessible otherwise, or confer some specific benefit?
Nurbs are very complex data object. We have to look for ways to simply the models. Splitting a face into ribs and meridians (curves) which are editable is a big step. If the ribs can be designed as sketches - real 2D another big step to powerful tools is possible.
If we cannot do these simplifications we have to edit the face as a whole. I restarted the work on the nurbs editor and the interface is already very complex, Any controlpoint of a Bezier Surface has 8 neighbors, this means 24 parameters to zoom/stretch, rotate etc.
In most cases the impact of weights is not essential. I only use them for arc approximation.
Finally, if you wanted to parametrically describe, or generate, a family of shapes (eg human faces) by using landmarks (eg the tip of the nose), you're starting with points on the curve rather than the control points. It would be great to be able to switch between these representations, if that is possible.
look through my videos to see what is possible.
I've been working on nurbs with FreeCAD for 2 years. Meantime the core methods are very stable.
try your first simple examples and feel free to ask.