我不确定如何解决这个问题:
我需要相对于单位方向“弯曲”一段长度为1的段。
在该段的长度上,弯曲的强度为1 / y。
需要为段上的每个点定义转换,并且应保留长度。
我想到以下几点:
c++ - 通过弯曲方向来变换线段-LMLPHP

最佳答案

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

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

对于较小的k值(即,当曲率很小且线段几乎笔直时),为了防止被零事故除,可以通过以下公式(即上述k = 0附近的泰勒展开)进行映射。 :
  k t^2 / 2       ,      t - k^2 t^3 / 6

编辑:发表您的评论:

假设您的方向 vector 为(x,y),则将在弧的末端(t = 1)给出正切 vector 的相应曲率的值由下式给出:
k = atan2(x, y)

10-05 22:03