|
|
1
17
|
|
|
2
10
这是一个8岁的问题,但我最近一直在努力解决,所以我想我会分享我的想法。我花了很多时间试图使用 this text 直到我在谷歌上搜索并得知,显然,方程式中有一些错别字,我才能从中得到任何合理的数字。根据中列出的更正 this blog post ,给定圆弧的起点和终点([x1,y1]和[x4,y4],以及圆的中心([xc,yc]),可以得出三次贝塞尔曲线([x2,y2]和[x3,y3])的控制点如下:
希望这能帮助我以外的人! |
|
|
3
5
Wolfram Mathworld有Mathematica代码: Bézier Curve Approximation of an Arc ,应该可以开始了。 参见: |
|
4
4
Raphael2.1.0支持arc->cubic(path2curve函数),在修复了s和t路径规范化中的错误之后,它现在似乎可以工作了。我更新 * 随机路径发生器 * 所以它只生成弧,所以很容易测试所有可能的路径组合: 测试,如果某条路径失败,我会很高兴得到报告。 编辑:刚刚意识到这是3年前的线索… |
|
|
5
4
在“A的近似值”中给出了一个很好的解释。 Cubic Bezier Curve by Circular Arcs “ 长话短说:使用贝塞尔曲线,您可以获得1.96_10^-4的最小误差,这对于大多数应用程序来说都很好。 对于正象限弧,使用以下点:
其中k是所谓的“幻数”,它是一个非有理数。可近似如下:
|
|
|
6
3
我在回答这个古老的问题(它应该属于数学,所以写公式会很糟糕)的时候做了一些演示。 假设 P0 和 P3 是你弧的起点和终点, P1 和 P2 b_)zier曲线的控制点,以及 X 是角度除以2的度量。假设 X 少一些 圆周率 2。 让 颗粒物 段的中点 P0P3 和 酸碱度 弧的中点。为了接近弧,我们希望b_zier曲线从 P0 通过 酸碱度 结束 P3 ,并与中的弧相切 P0 和 P3 . (单击“运行代码段”以显示该图。诅咒伊姆古尔仍然不支持SVG。)
让 体育课 与弧相切的直线的交点 P0 和 P3 . 为了使曲线与弧相切, P1 必须位于段上 P0PE 和 P2 必须躺在 P3PE . 让 K 成为比例 P0P1 / P0PE (也等于 P3P2 / P3PE ):
我们还有以下内容(做一些比例):
为了简化我们的计算,我考虑了所有的向量点都是基于中心的,但最后这并不重要。 一般的4点b_)zier曲线由以下公式给出:
我们必须拥有 C (1/2)= 酸碱度 如此
这是我们的方程(乘以8) K :
让我们去掉向量( P0 + P3 我们得到:
现在你知道在哪里放置控制点了。万岁! 如果你有 X = 圆周率 4,你会得到 K = 0.552…您可能已经看到了这个值。 在处理椭圆弧时,您所要做的就是相应地缩放点的坐标。 如果必须处理较大的角度,我建议将它们分割成更多的曲线。这实际上是一些软件在绘制圆弧时所做的,因为计算B_zier曲线有时比使用正弦和余弦更快。 |
|
7
2
我已经成功了 general solution for any elliptical arc 作为一条三次贝塞尔曲线。它甚至在公式中包含了起始角和终止角,因此不需要额外的旋转(这对于非圆形椭圆来说是个问题)。 |
|
|
8
1
我最近偶然发现了这个问题。我以模块的形式从这里提到的文章中编译了一个解决方案。 它接受起始角、终止角、中心和半径作为输入。 它很好地近似小圆弧(<=pi/2)。如果您需要将一些弧从pi/2近似为2*pi,则可以将它们分成多个部分<pi/2,然后计算出相应的曲线并将它们连接起来。 这个解是起始角和终止角顺序不可知论-它总是选取小弧。 结果你得到了所有四个点,你需要在绝对坐标下定义一个三次贝塞尔曲线。 我认为这最好用代码和注释来解释:
|
|
|
Vojtjikjhh -4K- · 绘制光标问题 1 年前 |
|
|
FoolishMortal · 无法显示从基64字符串解码的特定图像 1 年前 |
|
|
Dromlius · JPanel透支重叠的JComcoBox 1 年前 |
|
|
mathInferno · 另一个OpenGL纹理未渲染后 2 年前 |
|
|
Pierro · 当我运行一个简单的SFML代码时,为什么像素会失真? 2 年前 |
|
|
Unknown · Were我能找到游戏横幅psd文件吗[关闭] 2 年前 |
|
|
se-tima · 如何绘制微生物学结果图(生长曲线)? 2 年前 |
|
|
user1944491 · 如何在静态基线上绘制SwiftUI矩形? 2 年前 |