我需要找到贝塞尔曲线的中心以旋转它。我有所有点的列表(控制点,起点和终点,曲线本身上的所有点)。我要如何找到它的中心?

评论

曲线是数学实体,它们没有这样的中心。但是,您可能正在寻找绑定框中心,最小边界框中心,连接端点时曲线下方的封闭区域的重心,封闭的多贝塞尔曲线的重心,曲线中点,控制点平均值等。

@joojaa我绝对可以想到两个自然中心,一个是t = 0.5点。第二个是关于沿线的旅行笛卡尔距离的几何中点。

@ v.oddou是的,事实上,还有很多多数民众赞成在解释这个问题的原因。我使用过的所有矢量应用程序(Illustrator,xara,corel,草图等。)使用局部边界框中心旋转对象,因此很少看到其他所有中心定义。

#1 楼

贝塞尔曲线是数学实体,没有明确定义的中心。实际上,可以将许多不同的事物定义为贝塞尔曲线的中心。我试图在图1中描绘一些可能的中心。除了此以外,还存在更多。



图1:单个跨度贝塞尔曲线的一些可能中心曲线

实际上,几乎所有用于绘图的图形应用程序都以局部边界框(BB)的中心为中心。动画软件通常具有枢轴的其他概念,因此它们使用询问用户的方法,如果未输入任何内容,则它们通常会恢复为BB中心或只是局部坐标中心。这可能是因为无论如何都需要计算BB,并且很容易做到获得其中心(请参阅贝塞尔曲线上的底漆)。

重心度量标准也很自然,尤其是在动画环境中,尽管计算起来比较麻烦。最容易离散化数据并在离散输入上进行计算。这表示曲线的重心可以使用某些闭合形式的解决方案,但这并不是一个很好公式化和简化的方程。

然后我们在曲线点上有:中点,弧长和$ t $参数为0.5的点。在我看来,$ t $参数通常很成问题,尽管易于计算,当您将多个贝塞尔曲线相互链接起来以得到一个贝塞尔曲线时,它就失去了意义。当然,长度的中心只有在曲线不闭合的情况下才是自然的。

我们还定义了其他可能的中心,该中心可能位于船体的曲线重心处,控制点或控制笼BB中心。尽管实际上这些方法似乎效果不是很好。

请注意:尽管图1中的曲线显示BB中心非常接近某些自然中心,但是对于更复杂的情况并非总是如此曲线,尤其是多贝塞尔曲线。

评论


$ \ begingroup $
我不会对此发表评论。我认为这是一个很好的答案,它解决了问询者当前的知识水平,充分解释了为什么这个问题比预期的要广泛,并为新问题开辟了道路。
$ \ endgroup $
– trichoplax
16年6月28日在14:00

$ \ begingroup $
@trichoplax可以被不太礼貌的人总结为“定义中心”。
$ \ endgroup $
–棘轮怪胎
16年6月28日在15:24

$ \ begingroup $
@ratchetfreak我更喜欢那些试图找出问问者知识鸿沟的答案,而不是期望他们完全理解他们所问的话题。
$ \ endgroup $
– trichoplax
16年6月28日在17:56

$ \ begingroup $
我正在寻找一种方法来获取四方和三次贝塞尔曲线的DISTANCE MIDPOINT。我使用的是t值0.5,正如您所说,我只是意识到这是有问题的。我现在要使用贝塞尔曲线计算要做的是使球匀速运动。但是使用t值会非常困难。我想我需要根据弧长找到合适的t值。有什么资源或小提示对我好吗?
$ \ endgroup $
–Jenix
16年12月14日在20:59

$ \ begingroup $
不幸的是,不存在贝塞尔曲线的简单通用封闭形式解决方案,但是可以找到一个很好的资源涵盖数字化的执行工作,并且可以找到更多内容。在这里,我今天很难读懂,在工作中应该有一个更好的资源,但我没有链接我的手机。但这也许足够@Jenix
$ \ endgroup $
– joojaa
2016年12月14日在21:06



#2 楼

由于我们没有被告知要使用的“中心”定义,因此我们最好还是使用最简单的方法。这将是
$$
\ text {Center} = \ frac14(\ mathbf {P} _0 + \ mathbf {P} _1 + \ mathbf {P} _2 + \ mathbf {P} _3)
$$
其中$ \ mathbf {P} _0 $,$ \ mathbf {P} _1 $,$ \ mathbf {P} _2 $,$ \ mathbf {P} _3 $是控制点曲线的