通过弯曲到方向来变换线段

Posted

技术标签:

【中文标题】通过弯曲到方向来变换线段【英文标题】:Transforming a segment by bending to direction 【发布时间】:2016-11-11 21:58:41 【问题描述】:

我不确定如何处理这个问题: 我需要相对于单位方向“弯曲”长度为 1 的段。 弯曲的强度是段长度的 1/y。 需要为段上的每个点定义变换,并且应该保留长度。 我想到了以下几点:

【问题讨论】:

Bézier curves,也许吧?试试online。 方向向量与弯曲有何关联?那应该是弯曲段末端的切线方向吗? 没错,它的垂直分量也有限:y >= 0 【参考方案1】:

我假设您想要弯曲线段,使其具有恒定的曲率 k,也就是说,它将成为半径为 1/k 的圆的长度为 1 的弧。那么segment的点(0, t)映射到该点:

(1 - cos(kt))/k    ,    sin(kt)/k

对于较小的 k 值(即曲率很小且线段几乎是直的),为防止意外被零除,您可以通过以下公式对其进行映射(这是上述 k 附近的泰勒展开式=0):

  k t^2 / 2       ,      t - k^2 t^3 / 6

编辑:根据您的评论:

假设您的方向向量是 (x,y),那么在弧 (t=1) 的末端给出切线向量的相应曲率值由下式给出:

k = atan2(x, y)

【讨论】:

谢谢,试试看。这正是我的想法,但无法弄清楚细节。

以上是关于通过弯曲到方向来变换线段的主要内容,如果未能解决你的问题,请参考以下文章

改变包裹的弯曲方向

对图像的仿射变换

CPU引脚弯曲修复

WPF:绘制光滑连续贝塞尔曲线

交互式弯曲图像

scss Flexbox SASS Mixin:4。弯曲方向