3

假设我们有一个3d空间,线段由其起点和终点 ( A {Ax, Ay, Az}, B {Bx, By, Bz}) 定义,圆柱体由其中心位置C {Cx, Cy, Cz}、半径R和高度定义H。如何获得相交的事实以及相交是否发生在哪里?

4

2 回答 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 回答