如何找到贝塞尔曲线上两点之间的角度?
在我当前的 OpenGL 项目中,我试图使链条的链接紧贴贝塞尔曲线的轮廓。 如何找到曲线上两点之间的角度,以便我可以定位链条的链接,使它们沿着曲线移动。
这里是曲线和链条的图片,我需要一些旋转链接的方法,以便他们遵循曲线。
这里有人知道该怎么做吗?
In my current OpenGL project I am trying to make the links of a chain hug the contours of a Bezier curve. How can I find the angle between two points on the curve so that I can position the links of the chain so that they follow the curve.
Here is a picture of the curve and chain, I need some way of rotating the links so that they follow the curve.
Does anybody here know how to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
也许类似 this 就是您所需要的。
Maybe something like this is what you need.
令贝塞尔曲线上的点为 A 和 B。对向量 AB 进行归一化,使其长度为 1。将其设为 AB_norm。 然后使用 asin(AB_norm.y) 或 acos(AB_norm.x) 获取角度。 那么 0 度角是向右的水平向量。 C 风格的伪代码如下:
Let the points on your bezier curve be A and B. Normalize the Vector AB so it has length 1. Let this be AB_norm. Then use asin(AB_norm.y) or acos(AB_norm.x) to get the angle. An angle of 0 degrees is a horizontal vector to the right, then. C-style pseudocode follows:
你需要一些数学知识。 您可以找到切线、法线和副法线向量,然后可以找到角度。 如果您仍然感兴趣,请告诉我,我有关于此主题的一些详细信息。
You need some math here. You can find tangent, normal, and binormal vectors, and then you can find the angle. If you are still interested let me know, I have some details on this topic.