我正在尝试找出3D盒子内部的点云的3D点。仅当3d框与轴对齐时,我才能通过以下逻辑获得3D框内的点,但是在旋转3d框时,逻辑会失败。
(仅在框的边缘与坐标轴对齐时适用。)
如果顶点是(x1,y1,z1),(x2,y1,z1),(x1,y2,z1),⋯,(x2,y2,z2),则任意点(x,y,z )仅在以下情况下位于框内
x1<x<x2
and
y1<y<y2
and
z1<z<z2
换句话说,点的坐标在顶点的坐标之间。
现在我从https://math.stackexchange.com/questions/2909812/points-inside-a-3d-rectangle?noredirect=1&lq=1得到了算法,但无法弄清楚如何获取“位置向量”。
任何建议!
另一个问题:有没有一种快速的方法来找出3D框内的所有点,而不是遍历整个点云。
任何建议都值得赞赏!
答案 0 :(得分:1)
由于您在问题的标记中列出了point-cloud-library
,因此 pcl::CropBox 可能正是您要寻找的。您基本上提供了两个角点,一个平移和一个旋转,然后,您可以提取框中的所有点。
答案 1 :(得分:0)
I'll use the notation $\vec{OA}=\vec A-\vec O$ for a difference of position vectors. $O$ is one vertex, and $A,B,C$ are its three adjacent vertices.
O,A,B,C有长方体的顶点。作为parallelepiped,立方体可以由三个相邻的面定义,总共四个点。