多语言展示
当前在线:472今日阅读:84今日分享:32

Mathematica通过一系列点拟合B样条函数的方法

本文,用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

封闭的曲面如下图。

推荐信息