Today, I test a set of points using the built-ins BSplineSurface[]
and BSplineFunction[]
, respectively.
(*about nets and knots, please see the addendum's link*)
Graphics3D[BSplineSurface[nets, SplineKnots -> knots]] // AbsoluteTiming

h = BSplineFunction[nets, SplineKnots -> knots]
ParametricPlot3D[h[x, y], {x, 0, 1}, {y, 0, 1}] // AbsoluteTiming

Show[{ParametricPlot3D[h[x, y], {x, 0, 1}, {y, 0, 1}],
Graphics3D[{Opacity[0.5],
BSplineSurface[nets, SplineKnots -> knots]}]},
Boxed -> False, Axes -> False]

Obviously, the surface generated by BSplineSurface[]
is very smooth, especially at the corner. In addtion, it is also much faster than the latter. However, for the combination of ParametricPlot3D[]
and BSplineFunction[]
, which cannot generate a smooth surface when without the help of option PlotPoints -> 100
(That's means, it will take more time to compute!).
So I have the following question:
- What strategy does they use to sample the 3D points?
Addendum
The nets
and knots vector that in the V
direction could be downloaded from here and here, respectively. (Thanks for happy fish's help:))
Moreover, the knots vector that in the U
direction is:
U = {0.,0.,0.,0.,0.502247,1.,1.,1.,1.};
knots = {U, V};