假设我们有一个3d
空间,线段由其起点和终点 ( A
{Ax, Ay, Az}
, B
{Bx, By, Bz}
) 定义,圆柱体由其中心位置C
{Cx, Cy, Cz}
、半径R
和高度定义H
。如何获得相交的事实以及相交是否发生在哪里?
问问题
12898 次
2 回答
4
试试这个。谷歌的胜利 - 答案就在这里。这甚至有源代码和指向更多信息的链接供您使用。只需一点点搜索,您就可以自己得到这个。
这是基于@DuckQueen 的回答 - 它只是添加投影交点 - 如果有的话 - 看看它是否落在圆柱体的高度内。
于 2013-04-17T18:23:45.857 回答
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 在限制范围内),则输出点。
于 2013-04-16T19:19:28.150 回答