提问人:tomp 提问时间:12/11/2021 最后编辑:Reblochon Masquetomp 更新时间:12/12/2021 访问量:163
如何计算垂直于点的折线上的坐标(3D)?
how to calculate the coordinates on a polyline perpendicular to point (in 3D)?
问:
我有两条近似平行的折线表示铁轨,由数百个(也许是数千个)x、y、z 坐标组成。两条线路相距约1.435米,但像铁路一样弯曲和弯曲。
如果我在其中一条折线上选取一个点,如何找到垂直于另一条平行折线的点?
我认为 CAD 程序使用叉积来查找距离/点,并根据鼠标悬停的位置选择要捕捉到的线。
我想实现同样的事情,但不要将鼠标悬停在线上。
有没有办法简单地计算平行线上最近的线段?或者查看折线的哪一段在选定点处穿过垂直平面?
循环遍历这些段是不切实际的,因为它们太多了。
在 python 中,输入类似于 rail1 上的点 x、y、z,我希望输出 rail2 上的点 x、y、z。
非常感谢。
答:
0赞
John Alexiou
12/12/2021
#1
您需要到另一条轨道的最小距离点。
如果另一条轨迹由线段定义,则每个线段跨越两个点,参数 t 介于 0 和 1 之间
pos(t) => pos_1 + t * ( pos_2 - pos_1 )
您需要找到产生到该点的最小距离的 t 值。在点上放置一个临时坐标系,并用与感兴趣点的相对坐标表示每个线段的末端。pos_1
pos_2
最近点的 t 的值是
dot(pos_1,pos_1) - dot(pos_1,pos_2)
t = ------------------------------------------------------
dot(pos_1,pos_1)-2*dot(pos_1,pos_2)+dot(pos_2,pos_2)
其中是矢量点积。dot(a,b)=ax*bx+ay*by+az*bz
现在,如果得到的 t 介于 0 和 1 之间,则最近的点位于该段上,其坐标由下式给出
pos(t) => pos_1 + t * ( pos_2 - pos_1 )
上一个:删除值后重新计算总体方差的公式
下一个:在具有指数的数字中被忽略的小数点
评论