任意凸弧的三次贝塞尔近似通用形式及参数$k_n$的通用表达式求解
任意凸弧的三次贝塞尔近似通用形式及参数$k_n$的通用表达式求解
各位大佬好,想请教个关于三次贝塞尔曲线近似凸弧的问题:
假设我有一段从点$P_0$到$P_3$的凸弧,弧在起点$P_0$和终点$P_3$处的单位切线分别为$t_0$和$t_3$,用$L$表示$P_0$到$P_3$的直线距离。
目前我已经知道一些特定情况的结果:
- 当$P_0 = (0, 1)$,$P_3 = (1, 0)$,$t_0 = (1, 0)$,$t_3 = (0, 1)$时,近似这段弧的三次贝塞尔曲线的另外两个控制点是$P_1 = (k, 1)$和$P_2 = (1, k)$,其中$k = \frac{4}{3}(\sqrt{2} - 1)$。
- 更普遍一点,当$t_0$和$t_3$的夹角为90°时,控制点可以表示为$P_1 = P_0 + k_n L t_0$,$P_2 = P_3 + k_n L (-t_3)$,这里的$k_n = \frac{4 - 2\sqrt{2}}{3} \approx 0.39$。
现在我想知道的是:
- 对于任意凸弧,用三次贝塞尔曲线近似它的通用形式是什么?
- 更具体地说,参数$k_n$的通用表达式是什么,能不能用$t_0$和$t_3$之间的夹角$\theta$来表示?
另外我手头有几个已知的$\theta$与$k_n$的对应值可以参考:
- $\theta = 180°$时,$k_n \approx 0.6575$¹
- $\theta = 90°$时,$k_n = \frac{4 - 2\sqrt{2}}{3} \approx 0.39$
- $\theta = 0°$时,$k_n = \frac{1}{3}$
¹ 这个数值是在Inkscape里目测得到的,精度可能没有数字显示的这么高。
之前我找到过一个相关的解答,但它只能解决部分问题:一是我没有弧长的数据,没法用那个方案;二是它没法处理$\theta = 0°$的情况(这时候弧的半径是无穷大)。所以我还是希望能得到一个用$P_0$到$P_3$的距离$L$来表达的答案,而且这个答案在$0° \le \theta \le 180°$的范围内都能给出有限值。
备注:内容来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

