看到有人问这个问题然后我写叻解决这个问题的一个有用的。接下来简单介绍如何使用判断两个圆柱问题是否相交
如此判断两个圆柱问题是否相交:
1. 如果两个圆柱问題的轴线平行,只须判断轴线距离和半径之和的关系以及圆柱问题在轴线方向上的区间重叠情况(成为容易判断的一维相交问题);
2. 对於其它情况,先求两个轴线公垂线的中点P?求它到大小两个圆柱问题轴线的距离 如果 P? 到大圆柱问题轴线的距离d>R
(或
如果2d≤R+r, 而且 P?在大小兩圆柱问题各自的两个有向底面之间(通过两个底所在有向平面确定),两圆柱问题相交;
如果 P? 到大圆柱问题的轴线距离d≤R 且 (2d≤R+r), 但是不茬大小两个圆柱问题任意一个圆柱问题所在轴线方向上的区间之内需要求
圆周面上经过公垂线和圆周面交点的母线在圆柱问题底面之间嘚部分与另一 圆周轴线距离并跟半径比较大小,或者采用如下
当且仅当 P? 点不在四个圆柱问题底面之间时才考虑如下約束优化问题考虑圆柱问题有两个底面, 所以,不妨弄成带约束的最优化问题。
求点 P(x,y,z), 满足四个圆柱问题底面的线性不等式约束,同时,总有这样嘚点到两条直线的距离平方和最小.
求出来的点 P(x,y,z) 如果到两个轴距离之和 d1+d2≤R+r 则圆柱问题相交. 其它情况不相交.
问题比想象中难些如果是二次规劃问题,还不见得凸也就难免NP-hard; 所以,想单纯用一个带线性约束的最小二乘问题解恐怕不一定行;如果分情况讨论问题可以简化可以解,但是比较繁琐
好吧,放弃把问题交给。
1先判断距离,约束最小二乘问题;如果最小值大于 R2+r2不相交否则考虑下一步:
2。再考虑投影投影到平行于两个轴的平面上,——几何变换问题——检查两个矩形是不是有公共点同时,沿其中一个圆柱问题的轴向投影看投影得到的圆跟椭圆封端的矩形是不是有公共点。任何一个条件不满足都不相交。从画法几何的角度,如果两个圆柱问题轴线方向不平行,那麼,两个圆柱问题相交的充要条件是:
分别沿着两个圆柱问题的轴线方向投影,得到两幅包含至少各有一个圆和一个一对对边平行、另一对对边為椭圆弧的形状的投影两个平面区域都是连通的