我试图画一个自行车前轮的路径,而只有贝塞尔曲线的后轮是已知的。现在,我想我知道如何得到公式,但答案必须是(一组) Bezier曲线。我猜,如果后轮路径是Bezier曲线,前轮路径不是必要的。所以,我可能要用不止一条曲线来递归地近似它?
我想在SVG中查看结果。
请试着用一小步解释,因为26年后我的数学有点生疏了.
要了解我在说什么,请看:自行车车轮路径实例
在这里,一些背景信息可能会有所帮助:我正在为Inkscape构建一个插件,用于计算数控机床在移动带有给定偏移量的旋转刀时应该遵循的路径。这类似于有一个已知的自行车后轮路径,并试图从它的前轮路径。因此,输入是一个带有路径的SVG文件(我想切割的形状),输出是同一个文件,并添加了额外的SVG路径(数控机床应该遵循的路径,以便用旋转刀切割所需的形状)。
有趣的是,自行车会开始骑车,沿着起点和控制点之间的直线行驶,终点和Bezier曲线的终点和控制点之间的直线完全平行。我似乎无法控制这两点之间发生的事情.
发布于 2014-08-31 14:45:21
找到了!
我想我找到了一个优雅的解决方案后,仔细审查基科展示给我的底漆。看第6段(De Casteljau算法)
请注意,绿线与Bezier曲线相切。我们可以用它来表示自行车的车架(长度L) (它总是与这条线平行)。这使得绘制前轮路径非常容易。
但是我需要前轮路径以Bezier曲线的形式…
Step1:复制第一条贝塞尔曲线并对其进行修改,使前两个控制点(示例中的p1和p2)与L平行于线的长度(p1,p2 )被抵消。P3和P4也是如此。这个Bezier将是我们对前轮路径的第一次估计。Step2:开始为后轮和前轮绘制Bezier曲线,同时跟踪计算出的前轮路径和估计的前轮Bezier曲线之间的差异。如果差异变大,将估计的Bezier曲线除以,并调整新形成的控制点。重复此过程,直到绘图完成。
发布于 2014-08-30 16:59:06
也许你想要: Bézier曲线的底座?
http://pomax.github.io/bezierinfo
在我看来是个有用的网页。但从你给出的链接中,我看到它只是一个相移曲线,振幅稍高。最好是过滤后轮数据,这样,才能得到前轮数据。这完全取决于你掌握的后轮数据。
发布于 2014-08-30 21:07:09
假设我们假设“前轮与后轮的距离是固定的,并且它总是在切线上”,这使得问题易于处理。
B(t)=(1-t)^3 P_0 +3(1-t)^2t P_1 +3(1-t)t^2 P_2+t^3 P_3给出了Bézier曲线。
通过微分可以找到切线。
T= dB/dt =‘-3 P_0 t^2+9 P_1 t^2-9 P_2 t^2+3 P_3 t^2+6 P_0 t-12 P_1 t+6 P_2 t-3 P_0+3 P_1
通过求N=T/ sqrt(T.T),我们可以找到一个单位长度的正态N。我们想要的曲线,B(t) + a N。对于常量a,这将不是一个很好的表达。你可能是最好的计算一些点和拟合一条曲线。你也许可以用CAS来做代数上的事情。
https://stackoverflow.com/questions/25583895
复制相似问题