如题,这是一个讨论问题,尽管网上给出了双三次样条曲面的复杂表达式,但可能是本人看不懂,一直没能够转化到GeoGebra中来,有哪位大神做过,不妨放上来学习一下。
本人如今只想到了替代办法,就是探讨由四条曲线决定的曲面问题,我们已经实现了三条曲线曲面问题,如何继续实现四条曲线的曲面,由于运算量太大,我们就在二维平面中讨论。
如下图,平面四条样条曲线a、b、h、d:

(直接略去点的坐标了)
l1 = {A, B, C, D, E}
a = 样条曲线(l1, 3)
l2 = {F, G, H, I, J}
b = 样条曲线(l2, 3)
l3 = {E, M, L, K, J}
d = 样条曲线(l3, 3)
l4 = {A, P, O, N, F}
h = 样条曲线(l4, 3)
由于在我的贴《平面曲面(网格)》中已经详细介绍了三条曲线形成的曲面网格,因此直接给出代码:
k = 10
e = 曲线((1 - u / k) E + u / k J, u, 0, k)
f = 曲面((1 - u / k) a(v / k) + u / k b(v / k) + d(u / k) - e(u), v, 0, k, u, 0, k)

这个网格曲面只能满足三条曲线,同样,我们对左边曲线作曲面:
g = 曲线((1 - u / k) A + u / k F, u, 0, k)
i = 曲面((1 - u / k) a(v / k) + u / k b(v / k) + h(u / k) - g(u), v, 0, k, u, 0, k)

它也只能满足三条曲线,这两个网格曲面如何叠加在一起,形成曲面i(绿色)到曲面f(红色)的过渡呢?
我们继续沿用过渡图形的作法,对曲面进行运算,由于这个运算量大,容易卡死,建议别在3D环境中试:
j = 曲面((1 - u / k) i(u, v) + u / k f(u, v), u, 0, k, v, 0, k)
这个表达式看似简单,实则是双重过渡运算,基本实现了四条曲线形成曲面的想法,但总觉得哪些地方可以简化,减少运算量,不然老是不能用于3D环境,意义就不太大,总不至于用这方法给封闭图形填色吧,太奢侈了。

本人如今只想到了替代办法,就是探讨由四条曲线决定的曲面问题,我们已经实现了三条曲线曲面问题,如何继续实现四条曲线的曲面,由于运算量太大,我们就在二维平面中讨论。
如下图,平面四条样条曲线a、b、h、d:

(直接略去点的坐标了)
l1 = {A, B, C, D, E}
a = 样条曲线(l1, 3)
l2 = {F, G, H, I, J}
b = 样条曲线(l2, 3)
l3 = {E, M, L, K, J}
d = 样条曲线(l3, 3)
l4 = {A, P, O, N, F}
h = 样条曲线(l4, 3)
由于在我的贴《平面曲面(网格)》中已经详细介绍了三条曲线形成的曲面网格,因此直接给出代码:
k = 10
e = 曲线((1 - u / k) E + u / k J, u, 0, k)
f = 曲面((1 - u / k) a(v / k) + u / k b(v / k) + d(u / k) - e(u), v, 0, k, u, 0, k)

这个网格曲面只能满足三条曲线,同样,我们对左边曲线作曲面:
g = 曲线((1 - u / k) A + u / k F, u, 0, k)
i = 曲面((1 - u / k) a(v / k) + u / k b(v / k) + h(u / k) - g(u), v, 0, k, u, 0, k)

它也只能满足三条曲线,这两个网格曲面如何叠加在一起,形成曲面i(绿色)到曲面f(红色)的过渡呢?
我们继续沿用过渡图形的作法,对曲面进行运算,由于这个运算量大,容易卡死,建议别在3D环境中试:
j = 曲面((1 - u / k) i(u, v) + u / k f(u, v), u, 0, k, v, 0, k)
这个表达式看似简单,实则是双重过渡运算,基本实现了四条曲线形成曲面的想法,但总觉得哪些地方可以简化,减少运算量,不然老是不能用于3D环境,意义就不太大,总不至于用这方法给封闭图形填色吧,太奢侈了。
