从切向量和两点的恒定半径转弯
Constant Radius Turn From Tanget Vector and Two Points
我一直在研究一个小型火车模拟程序,只是为了好玩,截至目前,它使用一个相当烦人的复杂系统(贝塞尔曲线)来创建轨道。我想要一个更简单的表格。我的想法类似于游戏 Planet Coaster 中的路径构建。据我所知,游戏只使用路径的初始点,即所述初始点的方向(在我的例子中,我的 3D space 中的切向量)。
过去几天我一直在研究这个问题,我觉得在使用样条曲线一段时间后,我一直在思考它。我试着用铅笔和纸把它画出来,想找到解决它的方法,但我有点筋疲力尽了,想换个角度。如果有人对绘制上述曲线有任何建议或方法,将不胜感激。
一些更多的技术细节/另一个措辞,给定一个点 A 和一个在 a 处的切向量,求解一条将到达具有恒定半径的点 B 的曲线。
A link 到与我的想法相似的绘图:
抱歉,如果我的格式很奇怪,我是 post 交易所的新手!谢谢您的帮助! (我不太清楚 post 这个问题,数学或溢出,但我认为该应用程序更适合溢出)
等半径曲线为圆弧
给定:点 A
、B
、切向量 T
(Ua
在你的图片上)
半径向量P
(图中a-o)垂直于切线(圆属性)。
垂直于圆弧弦的中点(c-Md)过圆心
所以我们可以找到圆心作为直线 (a-o) 和 (c-Md) 的交点。
但是在 (a-o) 处找到这样的点 C
更简单,该点垂直于 Md
处的弦 - 它是圆心。
制作差异矢量D = B - A
做中间点M = (B + A) / 2
使矢量垂直于切线矢量P = (T.Y, -T.X)
圆心为 C = A + t * P
,其中 t 参数未知
向量 CM
和 D
应该垂直,所以它们的点积为零:
(M - C).dot.D = 0
求解此方程 t
得到点 C
和圆弧半径
我一直在研究一个小型火车模拟程序,只是为了好玩,截至目前,它使用一个相当烦人的复杂系统(贝塞尔曲线)来创建轨道。我想要一个更简单的表格。我的想法类似于游戏 Planet Coaster 中的路径构建。据我所知,游戏只使用路径的初始点,即所述初始点的方向(在我的例子中,我的 3D space 中的切向量)。
过去几天我一直在研究这个问题,我觉得在使用样条曲线一段时间后,我一直在思考它。我试着用铅笔和纸把它画出来,想找到解决它的方法,但我有点筋疲力尽了,想换个角度。如果有人对绘制上述曲线有任何建议或方法,将不胜感激。
一些更多的技术细节/另一个措辞,给定一个点 A 和一个在 a 处的切向量,求解一条将到达具有恒定半径的点 B 的曲线。
A link 到与我的想法相似的绘图:
抱歉,如果我的格式很奇怪,我是 post 交易所的新手!谢谢您的帮助! (我不太清楚 post 这个问题,数学或溢出,但我认为该应用程序更适合溢出)
等半径曲线为圆弧
给定:点 A
、B
、切向量 T
(Ua
在你的图片上)
半径向量P
(图中a-o)垂直于切线(圆属性)。
垂直于圆弧弦的中点(c-Md)过圆心
所以我们可以找到圆心作为直线 (a-o) 和 (c-Md) 的交点。
但是在 (a-o) 处找到这样的点 C
更简单,该点垂直于 Md
处的弦 - 它是圆心。
制作差异矢量D = B - A
做中间点M = (B + A) / 2
使矢量垂直于切线矢量P = (T.Y, -T.X)
圆心为 C = A + t * P
,其中 t 参数未知
向量 CM
和 D
应该垂直,所以它们的点积为零:
(M - C).dot.D = 0
求解此方程 t
得到点 C
和圆弧半径