本文,用BSplineFunction来拟合曲线或者曲面。
工具/原料
1
电脑
2
Mathematica11+
方法/步骤
1
给出一系列平面上的点:a = RandomReal[{-5, 5}, {36, 2}]
2
用BSplineFunction来拟合这些点:f = BSplineFunction[a]
3
函数的定义域是0到1;函数的输出值是一个二元向量:f[0.366]
4
在平面里面,用折线段连结a里面的点:Graphics[{Red, Point[a], Green, Line[a]}, Axes -> True]
5
加画f的图像:Show[Graphics[{Red, Point[a], Green, Line[a]}, Axes -> True], ParametricPlot[f[t], {t, 0, 1}, PlotStyle -> Blue]]
6
第二个例子,给出一组三维直角坐标点:a = RandomReal[{-5, 5}, {10, 3, 3}]
7
拟合出B样条函数f,但是不封闭:f = BSplineFunction[a, SplineClosed -> False]
8
画出曲面图形:aa = ParametricPlot3D[f[u, v], {u, 0, 5/6}, {v, 0, 1}, PlotStyle -> Green, Axes -> False, Boxed -> False]
9
拟合封闭的B样条函数f:f = BSplineFunction[a, SplineClosed -> True]
10
封闭的曲面如下图。