检查点是否位于m维矩形内
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查点是否位于m维矩形内相关的知识,希望对你有一定的参考价值。
我正在尝试提出一种通用算法,用于检测点是否位于使用区间定义的m维超矩形的边界内或边界上。
对于2D情况,它是直接的,如果点位于多边形内,则可以使用诸如光线投射之类的技术。但是,如何检查m维超立方角?有没有办法说方程这样的超大角度并检查点是位于边界内还是边界上?
我正在尝试用C ++实现它,是否有任何已知的库可能有所帮助?
谢谢!非常感谢!
答案
如果将超直角(HR)存储为间隔(即中心坐标+范围或开始+结束)和旋转的组合,则可以将查询点转换为HR的坐标系(通过适当的旋转,平移和缩放) 。然后你只需要做2*m
绑定检查。
您建议的使用多面体的替代方案可能是性能损失,因为m维HR具有2^m
角点。
(这当然是假设你没有把自己局限于轴对齐的盒子,在这种情况下答案当然是微不足道的)
另一答案
简单方法有什么问题?
if ((Point.x[0]>= Rect.min[0]) && (Point.x[0] <= Rect.max[0]) &&
...
(Point.x[m-1]>= Rect.min[m-1]) && (Point.x[m-1] <= Rect.max[m-1]))
当然,按尺寸循环
以上是关于检查点是否位于m维矩形内的主要内容,如果未能解决你的问题,请参考以下文章