假设我们有一个3d
空格,由其起点和终点(A
{Ax, Ay, Az}
,B
{Bx, By, Bz}
定义的线段,并由其中心位置C
{Cx, Cy, Cz}
,半径R
和高度H
。如何得到一个交叉点的事实,如果发生了交叉,那么?
答案 0 :(得分:2)
Try this。谷歌的胜利 - 答案甚至在这里。这甚至包含源代码和更多信息的链接供您使用。只需要一点点搜索,你就可以自己做到这一点。
这是基于@ DuckQueen的答案 - 它只是添加投影交叉点 - 如果有的话 - 看它是否落在圆柱体的高度内。
答案 1 :(得分:1)
设x =(y-a2)/ b2 =(z-a3)/ b3为线的等式。
设(x-c1)^ 2 +(y-c2)^ 2 = d ^ 2是圆柱的方程。
将线方程中的x代入圆柱方程。
您可以使用二次方程求解y。您可以有0个解决方案(圆柱和直线不相交),1个解决方案或2个解决方案。
将y的值替换为线方程以获得x和z坐标。
要从两点获得线方程,请参阅:http://www.nabla.hr/Z_CGLinesAndPlanesIn3DSpace-A.htm
我提供的解决方案适用于无限高度的气缸。限制为高度为H的圆柱体:如果点在高度内(即z在限制范围内),输出点,则找到交点。