判断两个圆柱体是否相交

问题

看到有人问这个问题。然后我写了解决这个问题的一个有用的理论准备。接下来简单介绍如何使用它判断两个圆柱是否相交。

解法

问题中的圆柱假设有中轴线, li , 用固定点 Xi=(ai,bi,ci)T 和方向 Wi=(wi1,wi2,wi3)T 表达。投影矩阵 Ti P 的求法都参考 这里的理论准备。

假设大圆柱半径 R , 小圆柱半径 r

如此判断两个圆柱是否相交:
1. 如果两个圆柱的轴线平行,只须判断轴线距离和半径之和的关系,以及圆柱在轴线方向上的区间重叠情况(成为容易判断的一维相交问题);
2. 对于其它情况,先求两个轴线公垂线的中点 P ,求它到大小两个圆柱轴线的距离 d=d1=d2
3.
如果 P 到大圆柱轴线的距离 d>R (或 2d>R+r ), 显然两圆柱不相交;

如果 2dR+r , 而且 P 在大小两圆柱各自的两个有向底面之间(通过两个底所在有向平面确定),两圆柱相交;

如果 P 到大圆柱的轴线距离 dR 且 ( 2dR+r ), 但是不在大小两个圆柱任意一个圆柱所在轴线方向上的区间之内,需要求

圆周面上经过公垂线和圆周面交点的母线在圆柱底面之间的部分与另一 圆周轴线距离并跟半径比较大小,或者采用如下

带约束的最小化方法

当且仅当 P 点不在四个圆柱底面之间时才考虑如下约束优化问题。考虑圆柱有两个底面, 所以,不妨弄成带约束的最优化问题。

求点 P(x,y,z) , 满足四个圆柱底面的线性不等式约束,同时,总有这样的点到两条直线的距离平方和最小.

求出来的点 P(x,y,z) 如果到两个轴距离之和 d1+d2R+r 则圆柱相交. 其它情况不相交.

补充

问题比想象中难些。如果是二次规划问题,还不见得凸,也就难免NP-hard; 所以,想单纯用一个带线性约束的最小二乘问题解恐怕不一定行;如果分情况讨论问题可以简化。可以解,但是比较繁琐。

判断两个圆柱体是否相交_第1张图片

好吧,放弃,把问题交给现成的解决方案。
文档和说明

其它引申的凸的几何体相交的问题

1。先判断距离,约束最小二乘问题;如果最小值大于 R2+r2 不相交,否则考虑下一步:
2。再考虑投影,投影到平行于两个轴的平面上,——几何变换问题——检查两个矩形是不是有公共点?同时,沿其中一个圆柱的轴向投影,看投影得到的圆跟椭圆封端的矩形是不是有公共点。任何一个条件不满足,都不相交。从画法几何的角度,如果两个圆柱轴线方向不平行,那么,两个圆柱相交的充要条件是: 分别沿着两个圆柱的轴线方向投影,得到两幅包含至少各有一个圆和一个一对对边平行、另一对对边为椭圆弧的形状的投影,两个平面区域都是连通的

你可能感兴趣的:(几何变换)