不规则曲面一般用样条曲线来控制其形状,我们讨论过两条曲线之间曲面形成的问题,但较为复杂的空间曲面不能只用此法生成曲面,因为有个最大问题,曲面之间的光滑拼接,这里有三条空间样条曲线:

l1 = {A, B, C, D, E}
l2 = {F, G, H, I, J}
l3 = {K, L, M, N, O}
a = 样条曲线(l1, 3)
c = 样条曲线(l3, 3)
b = 样条曲线(l2, 3)

由这三条曲线构成的曲面怎么弄,我们先试试两曲线之间曲面生成之法:
q = 曲面(u a(t) + (1 - u) c(t), u, 0, 1, t, 0, 1)
r = 曲面(u c(t) + (1 - u) b(t), u, 0, 1, t, 0, 1)

两曲面拼在一起,是不光滑的,这个显然不是我们希望的曲面,我们需要继续处理,本例我们用平行于水平面的平面去切上述三条曲线,得到系列交点,然后组成若干样条曲线:
l4 = {a, c, b}
l5 = 序列(序列(交点(z = n, 元素(l4, m)), m, 1, 3), n, 0, 6.5, 0.5)
l6 = 映射(样条曲线(u, 3), u, l5)

我们的思路是在新得到的这些样条曲线之间生成若干曲面,这个要借助于表格了:
l8 = 序列("B" + (i) + "= Element(l6," + (i) + ")", i, 1, 长度(l6))
在代数区中输入:执行(l8)
这些曲线就进入表格中了,也就是每条曲线有名称了。
l9 = 序列("Surface(u* B" + (i) + "(t) + (1 - u) *B" + (i + 1) + "(t), u, 0, 1, t, 0, 1)", i, 1, 长度(l6) - 1)
这是生成若干曲面的文本命令列表,需要在代数区中输入:执行(l9)
生成图形如下,这个就是我们想要的曲面了:


l1 = {A, B, C, D, E}
l2 = {F, G, H, I, J}
l3 = {K, L, M, N, O}
a = 样条曲线(l1, 3)
c = 样条曲线(l3, 3)
b = 样条曲线(l2, 3)

由这三条曲线构成的曲面怎么弄,我们先试试两曲线之间曲面生成之法:
q = 曲面(u a(t) + (1 - u) c(t), u, 0, 1, t, 0, 1)
r = 曲面(u c(t) + (1 - u) b(t), u, 0, 1, t, 0, 1)

两曲面拼在一起,是不光滑的,这个显然不是我们希望的曲面,我们需要继续处理,本例我们用平行于水平面的平面去切上述三条曲线,得到系列交点,然后组成若干样条曲线:
l4 = {a, c, b}
l5 = 序列(序列(交点(z = n, 元素(l4, m)), m, 1, 3), n, 0, 6.5, 0.5)
l6 = 映射(样条曲线(u, 3), u, l5)

我们的思路是在新得到的这些样条曲线之间生成若干曲面,这个要借助于表格了:
l8 = 序列("B" + (i) + "= Element(l6," + (i) + ")", i, 1, 长度(l6))
在代数区中输入:执行(l8)
这些曲线就进入表格中了,也就是每条曲线有名称了。
l9 = 序列("Surface(u* B" + (i) + "(t) + (1 - u) *B" + (i + 1) + "(t), u, 0, 1, t, 0, 1)", i, 1, 长度(l6) - 1)
这是生成若干曲面的文本命令列表,需要在代数区中输入:执行(l9)
生成图形如下,这个就是我们想要的曲面了:
