diff --git a/docs/index.html b/docs/index.html
index ec97e716..cb0a533f 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -38,7 +38,7 @@
-
+
diff --git a/docs/ja-JP/index.html b/docs/ja-JP/index.html
index 2a9b6d5d..84543586 100644
--- a/docs/ja-JP/index.html
+++ b/docs/ja-JP/index.html
@@ -41,7 +41,7 @@
-
+
diff --git a/docs/ko-KR/index.html b/docs/ko-KR/index.html
index b8abfb59..b8023607 100644
--- a/docs/ko-KR/index.html
+++ b/docs/ko-KR/index.html
@@ -43,7 +43,7 @@
-
+
diff --git a/docs/news/2020-09-18.html b/docs/news/2020-09-18.html
index e7613566..c7a6ebf0 100644
--- a/docs/news/2020-09-18.html
+++ b/docs/news/2020-09-18.html
@@ -33,8 +33,8 @@
-
-
+
+
diff --git a/docs/news/2020-11-22.html b/docs/news/2020-11-22.html
index bad48a60..3b5be1c2 100644
--- a/docs/news/2020-11-22.html
+++ b/docs/news/2020-11-22.html
@@ -33,8 +33,8 @@
-
-
+
+
diff --git a/docs/news/index.html b/docs/news/index.html
index fec549c5..6f595f28 100644
--- a/docs/news/index.html
+++ b/docs/news/index.html
@@ -33,7 +33,7 @@
-
+
diff --git a/docs/news/rss.xml b/docs/news/rss.xml
index ecb01750..331aa43d 100644
--- a/docs/news/rss.xml
+++ b/docs/news/rss.xml
@@ -6,7 +6,7 @@
@@ -1965,8 +1965,8 @@
@@ -2008,59 +2008,20 @@
以上变形可行是因为[M · M-1推导新的凸包坐标
-->
很好!现在得出新的二次曲线:
@@ -2386,16 +2347,9 @@
-->
@@ -1945,9 +1945,9 @@
-->
-->
@@ -1984,9 +1984,9 @@
-->
推导新的凸包坐标
-->
-
-
-
-
-
-
+
+
+
推导新的凸包坐标
-->
@@ -2115,8 +2076,8 @@ 推导新的凸包坐标
-->
@@ -2132,8 +2093,8 @@ 推导新的凸包坐标
-->
@@ -2160,8 +2121,8 @@ 推导新的凸包坐标
-->
@@ -2176,8 +2137,8 @@ 推导新的凸包坐标
-->
@@ -2193,8 +2154,8 @@ 推导新的凸包坐标
-->
@@ -2209,8 +2170,8 @@ 推导新的凸包坐标
-->
@@ -2225,8 +2186,8 @@ 推导新的凸包坐标
-->
@@ -2242,8 +2203,8 @@ 推导新的凸包坐标
-->
@@ -2258,8 +2219,8 @@ 推导新的凸包坐标
-->
@@ -2275,8 +2236,8 @@ 推导新的凸包坐标
-->
@@ -2302,8 +2263,8 @@ 推导新的凸包坐标
-->
@@ -2320,8 +2281,8 @@ 推导新的凸包坐标
-->
@@ -2341,8 +2302,8 @@ 推导新的凸包坐标
-->
@@ -2362,9 +2323,9 @@ 推导新的凸包坐标
-->
如果有一条二次曲线,那么可以如下构造三次曲线精确重现原来的曲线:首先选择相同的起点和终点,然后两个控制点分别选为“1/3起点+2/3终点”和“2/3起点+1/3终点”。所得曲线与原来的相同,只不过表示为了三次曲线而不是二次曲线。
将n次曲线升为n+1次曲线的一般规则如下(注意起点和终点的权重与旧曲线的相同):
- - +然而这一规则也直接意味着通常无法将n次曲线稳妥地降到n-1次,这是因为控制点无法被简洁地“拆开”。可以做些尝试,但所得曲线不会与原曲线重合,而且其实还可能看起来完全不同。
@@ -2406,13 +2360,9 @@先将标准的贝塞尔函数写得紧凑一些:
- - +
然后用一个朴素(其实极其有用)的变形技巧:既然t
值总在0到1之间(含端点),且1-t
加t
恒等于1,那么任何数都可表示为t
与1-t
的和:
于是用这一看似平凡的性质可将贝塞尔函数拆分为1-t
和t
两部分之和:
目前一切顺利。现在为了理解为什么这么做,将1-t
和t
两部分具体写出并观察结果。首先是1-t
:
用这一看似朴素的技巧瞬间就将n次贝塞尔函数的一个部分用n+1次贝塞尔函数表示出来了,这非常像曲线升次!当然t
的部分也要表示出来,但这不是问题:
将n
次的表达式变为n+1
次的之后再将其重新合并。虽然n
次函数是从0到n
求和,n+1
次函数是从0到n+1
求和,但补上“贡献为零”的项即可。下一章“导数”会论述为什么“没有对应的二项式系数的更高次项”和“低于零次的项”都“贡献为零”,因此需要什么形式的项就可以加上什么项。将这些项包含在和式中没有影响,而所得函数与低次曲线依然相等:
接下来从变形转到线性代数(矩阵)——现在Bézier(n,t)和Bézier(n+1,t)之间的关系可用非常简单的矩阵乘法表示:
- +其中矩阵M为(n+1)×n
阶的矩阵,其形如:
@@ -2573,9 +2463,9 @@
其中的步骤为:
@@ -2630,8 +2520,8 @@虽然有时候有人告诉说“这是导数”就行,但还是可能想一探究竟。既然如此,就来看看这个导数的证明。首先,因为权重不影响完整的贝塞尔函数的求导,所以求导只涉及多项式基函数的导数。基函数的导数为:
- - + - - +上式不易处理,因此打开括号:
- - +现在技巧性的一步是将上式再次化为含二项式系数的形式,需要得到形如“x!/y!(x-y)!”的项。如果得到关于n-1和k-1的项,那么说明方向是对的。
- - +这是第一步。上式括号里的两项其实为标准的、低一次的贝塞尔函数:
- - +现在将上式应用于已有的加权贝塞尔函数。先写出之前所见的平面曲线公式,再逐步求出导数:
- - +如果打开上式的括号(用颜色表示相匹配的项),再按递增的k值重排各项,那么有:
- - +上式中有两项会消失掉:因为任意和式都没有第-1项,所以上式第一项消失。既然这一项总是贡献为零,那么求导时就可以放心地将其完全无视。消失的另外一项为展开式的最后一项——包含B“慢着,为什么这是对的?” >的一项。这一项含有二项式系数Cii+1,而这一系数通常约定等于0。因此这一项贡献为零,也可被略去。这意味着剩下的项为:
- - +此即低次函数之和:
- - +将上式改写为正常的和式即可:
- - +将上式改写为与原式相似的形式有助于看出它们的区别。先写出原式,再写出导数:
- - - - + +有什么区别?对于实际的贝塞尔曲线而言几乎没有区别!虽然次数降低了(从n次变为n-1次),但是贝塞尔函数没有改变。唯一的真正的区别在于推导表示曲线的函数时权重如何变化。如果有A、B、C、D四个点,那么导数有三个点,二阶导数有两个点,三阶导数有一个点:
- - +只要有多于一个权重即可运用这一方法。只剩一个权重时,下一步会出现k=0,而贝塞尔函数的和式因为无项可加而化为零。因此二次函数没有二阶导数,三次函数没有三阶导数,更一般地有n次函数有n-1阶(有意义的)导数,其更高阶导数为零。
@@ -2913,9 +2642,9 @@此即所需的方向向量。可以在每一点将方向向量规范化后得到单位方向向量(即长度为1.0),再根据这些方向进行所需的操作:
@@ -2938,32 +2667,17 @@切向量对于沿曲线移动很有用,但如果要从曲线附近“移向远处”,而且移动方向与曲线在某点t处垂直,那该怎么办?这时需要的是法向量。这一向量与曲线的方向保持垂直,且长度通常为1.0,因此只需旋转单位方向向量即可:
- - +其实旋转坐标只要知道方法就非常简单——“施加旋转矩阵 --> @@ -2990,8 +2704,8 @@
首先假设已有函数用于计算上文提及的指定点的弗勒内标架,输出的标架具有如下性质:
-{
+
+
+
+ 1
+
+
+
+
+
+ 2
+
+
+ 3
+
+
+ 4
+
+
+ 5
+
+
+ 6
+
+
+
再如下写出生成一系列旋转最小化标架的函数:
- generateRMFrames(steps) -> frames:
+
+
+
+ 1
+
+
+
+
+
+ 2
+
+
+ 3
+
+
+ 4
+
+
+ 5
+
+
+ 6
+
+
+ 7
+
+
+ 8
+
+
+ 9
+
+
+ 10
+
+
+ 11
+
+
+ 12
+
+
+ 13
+
+
+ 14
+
+
+ 15
+
+
+ 16
+
+
+ 17
+
+
+ 18
+
+
+ 19
+
+
+ 20
+
+
+ 21
+
+
+ 22
+
+
+ 23
+
+
+ 24
+
+
+ 25
+
+
+ 26
+
+
+ 27
+
+
+ 28
+
+
+
即使忽略注释,代码也明显比计算单个弗勒内标架的多,但也没有多得离谱,而且得到了长得更好的法向量。