回答
您可以通过形成6个方形金字塔来测试该方法,其中您的点为头部,每个四边形的4个顶点为底部,然后总计四角锥体的体积。如果数量的总和等于您的箱子的体积,则该点位于箱子中。如果音量总和大于您的盒子音量,那么它在盒子外(音量总和永远不会小于盒子音量)。
要计算每个正方形金字塔的体积,可以将它分解为两个四面体,其体积可以通过mix vector product轻松计算。你也可以用混合矢量产品计算盒子的容量。
假设点有一个已知的顺序,你可以计算出法向量。这种测试不需要标准化,所以成本并不高。如果您已经知道这是一个长方体,那么您只需要计算两个法线,因为您可以用十字产品获得第三个法线,然后使用其他点来计算距离。显然你是交叉产生以获得法线,所以这更多的是关于你想向谁揭露什么信息的问题。
如果点没有已知的顺序,那么你可以应用QuickHull的微缩版本 - 从最初的三角形开始,你应该发现你已经有一个真正的边缘面(在这种情况下,你可以使用该法线并在该法线的另一个极端找到相关点以及相互正交的要求以得到所有三个法线),或者一步给出至少两个真实的边缘,当它们的局部集合前面的点变空了。
一个疯狂的想法,也许是: -
- 组建3D正投影上1x1像素视
- 设置相机和近剪裁平面这样的的关注点是在近剪裁平面
- 呈现框而没有任何背景拣出
- 如果只有一个象素被渲染然后点是盒子,0或2或更多个像素渲染然后内部的点是框
我会说这是一个疯狂的想法:)我在这种事情上我的深度,但不是你的答案做更多的工作,然后有必要确定答案使用普通的旧数学? –
我想这取决于你有什么设施可以让你进行光栅化处理?它还提出了另一种线性代数方法 - 即如果从任何方向上的点到无限的线段恰好与盒子相交一次,则该点在盒子内。如果光栅化,则通过裁剪和投影来执行该测试。 – Tommy
- 1. 无法定义顶点
- 2. A *算法重新顶点
- 3. 计算顶点法线
- 4. 计算边界框的顶点
- 5. SceneKit中的自定义顶点属性
- 6. 如何计算中点顶点?
- 7. 顶点覆盖的近似算法
- 8. 计算网格的顶点法线
- 9. 如何定义形状的顶点
- 10. OpenGL ES 2.0顶点转换算法
- 11. Dijkstra算法找出两个顶点C++
- 12. 固定点Cholesky算法的优点
- 13. 从定点算法的浮点转换
- 14. XNA 4.0自定义顶点声明
- 15. 顶点触发与自定义对象
- 16. 从特定顶点执行深度优先算法
- 17. graph_tool graph_draw顶点文本框边距顶点重叠
- 18. Gremlin-Traversing查找与特定顶点无关的所有顶点
- 19. MIPS中的定点算术
- 20. JUNG2:将顶点放在固定点
- 21. 计算旋转矩形的顶点
- 22. 预先计算CPU上的顶点
- 23. 用于查找关节点或切割图的顶点的算法的说明
- 24. 定点算术
- 25. 算法计算最大点在点集
- 26. 在Python中使用mplPath定义多边形的顶点
- 27. 更改导入模型中顶点缓冲区的定义
- 28. 修改VTK中的polyData点/顶点
- 29. 给定图的顶点的k-着色计算(k-1) - 着色
- 30. 特定的滴点算法 - Matlab
你有没有试过在[数学](http://math.stackexchange.com/)上问这个问题? –