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

C++ 通过弯曲到方向来变换线段,c++,opengl,math,rendering,C++,Opengl,Math,Rendering,我不知道如何处理这个问题: 我需要根据单位方向“弯曲”长度为1的线段。 弯曲的强度为管段长度的1/y。 需要为线段上的每个点定义变换,并且应保留长度。 我有以下想法: 我假设你想要弯曲线段,使其具有恒定的曲率k,也就是说,它将是半径为1/k的圆的长度为1的弧。然后,线段的点(0,t)映射到该点: (1 - cos(kt))/k , sin(kt)/k 对于较小的k值(即当曲率很小且线段几乎笔直时),为了防止被零意外除法,您可以通过以下公式对其进行映射(这是上述k=0附近的泰勒展开式

我不知道如何处理这个问题: 我需要根据单位方向“弯曲”长度为1的线段。 弯曲的强度为管段长度的1/y。 需要为线段上的每个点定义变换,并且应保留长度。 我有以下想法:
我假设你想要弯曲线段,使其具有恒定的曲率k,也就是说,它将是半径为1/k的圆的长度为1的弧。然后,线段的点(0,t)映射到该点:

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

编辑:以下是您的评论:

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

k = atan2(x, y)

大概试试看,方向向量和弯曲有什么关系?这应该是弯曲段末端的切线方向吗?是的,准确地说,它的垂直分量也有限制:y>=0thx,尝试一下。这正是我的想法,但无法理解细节。
k = atan2(x, y)