3D盒子圆形相交

4
我有一个由中心点(x,y,z),半径和指定圆面朝向的方向向量定义的圆。我需要测试这样一个圆是否与轴对齐的边界框相交。为了澄清,所谓的相交是指如果圆内的任何点在边界框描述的区域内,则构成“相交”。
这不是用于游戏,我不想以某种方式逼近圆。不过,如果将圆视为具有非常小高度的圆柱体,则应该可以处理更容易。
谢谢。
Nick

你有没有在谷歌上搜索“盒子圆相交”? - Oliver Charlesworth
不确定你所说的“边界框”是什么意思。通常,“边界框”不会相交... - Dr. belisarius
所有的box-circle谷歌搜索结果都是关于2D,而不是沿着向量定向的3D“圆形”。 - Nick Collier
1个回答

1

你的圆心和向量定义了一个平面;将该平面与你的盒子相交(具体来说是由你的盒子组成的6个平面);这将给你一组线段。使用点线最近点算法,确定每条线段上距离你的中心点最近的点;如果该点与你的圆心点之间的距离的平方(使用平方距离进行距离比较,它更快且同样准确)小于你半径的平方,则你的盒子与你的圆相交。

注意:这个过程是通用的;使用轴对齐边界框会使一切变得更加容易。


1
谢谢。鉴于飞机是无限的,我首先进行了平面框相交测试,然后进行了上述操作。看起来效果不错。 - Nick Collier
很高兴能够帮忙,而且首先进行平面-盒子相交测试是一个不错的优化。 - Paul Sonier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接