检测3D框内的点

时间:2017-05-03 02:22:27

标签: c# math

我有一个由2个圆柱制成的3D形状:

点(黑色和白色)是每个圆柱上圆形末端的起源。我想得到3分(白点)所以我需要检测并排除圆柱体内的一个点(黑点)。我怎么才能发现它!

编辑:我有每个圆柱的边界框。

1 个答案:

答案 0 :(得分:0)

在圆柱体的末端放置一个坐标系(比如沿 x - 轴放置)。要测试点 A 是否位于圆柱内(长度 L 且半径 R ),请执行以下操作

if( y^2+z^2 <= R^2 && x>=0 && x<=L )
{
   // point (x,y,z) is inside cylinder
}

要使用上述内容,您需要将点(x_A,y_A,z_A)的坐标转换为柱面(x,y,z)的局部坐标。您需要提供有关如何在3D中定义柱面的更多信息,以便显示如何执行此操作的示例。我希望你做3D编程,你熟悉3D旋转并知道一些基本几何。

替代方法是消除最接近圆柱轴的点。关于如何获得点到线的距离,请查看WolframWikipedia