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

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

【问题讨论】:

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

标签: c++ opengl math rendering


【解决方案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)

【讨论】:

  • 谢谢,试试看。这正是我的想法,但无法弄清楚细节。
猜你喜欢
  • 2021-06-18
  • 2015-07-21
  • 2017-01-11
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多