我在2D中有很多(数十亿)点我可以预处理,我想回答以下形式的查询:
给定矩形的所有四个角,输出矩形内的点数.
矩形可以处于任何方向(意味着矩形的轴可以以任何角度定向,而不仅仅是水平或垂直).
有一个快速实用的算法吗?
更新.是否有任何数据结构来存储点,这使得查询可以证明处于亚线性时间?
更新II似乎答案是公司没有https://cstheory.stackexchange.com/questions/18293/can-we-perform-an-nd-range-search-over-an-arbitrary-box-without-resorting-to -si.在任何情况下都接受最流行的答案.
好的,所以我正在为Java类做一个赋值,并且赋值的一部分是找出一个点是否在矩形的维度内.所以我创建了这段代码:
public boolean contains(Point p){
return (this.getLocation().getX() < p.getX() && this.getLocation().getY() < p.getY() &&
this.getLocation().getX() + this.getWidth() > p.getX() &&
this.getLocation().getY() + this.getHeight() > p.getY());
}
Run Code Online (Sandbox Code Playgroud)
我也创建了一个点类,这就是我要求"Point p"参数的原因.为了测试这个布尔值,我在Main类中创建了一个简单的'if'语句:
//check if one rectangle's point is inside another
if (rectangle.contains(rectangle2.getLocation()))
System.out.println("the point is in the rectangle");
Run Code Online (Sandbox Code Playgroud)
该点的位置是(6,7).矩形1的点,宽度和高度分别为(4,5),9和3.我知道这一点是在第一个矩形内部,但println语句没有显示,这意味着我创建的布尔值必定存在问题,但我没有看到错误,也许我的头是阴天但是可能有人指出我这里有什么问题?
PS这是所有控制台工作,我不处理一些GUI或图形编程.
可能重复:
查找点是否位于矩形内
有一个采访问题,"如何确定一个点是否位于矩形内"
请注意,矩形也可以旋转.因此,检查矩形内部点的简单解决方案在这里不起作用......
请分享您对这个问题的看法..
我在互联网上找到了一个链接,并试图理解它,但失败了....请问这里的任何一个机构可以提供完整的计算机图形逻辑解决方案,因为我已经忘记了所有的基础知识.... 如何确定一个点是否在矩形内.
我做了一些研究,但找不到最有效的答案,盒对撞机 2D 还是圆形对撞机 2D?
有这个问题很快就得到了很好的答案,它说最快的是球体对撞机,其次是胶囊对撞机,然后是盒子对撞机,但我想知道 2D 对撞机。
2500 对撞机
胶囊 453-481ms
框 490-520ms
球体 190-233ms
有没有人有关于计算机处理哪个更快的信息?谢谢!
我有一个以这些坐标为顶点的旋转矩形:
1 670273 4879507
2 677241 4859302
3 670388 4856938
4 663420 4877144
Run Code Online (Sandbox Code Playgroud)
我有这些坐标的点:
670831 4867989
675097 4869543
Run Code Online (Sandbox Code Playgroud)
仅使用 Python 2.7 标准库,我想确定这些点是否落在旋转的矩形内。
要做到这一点需要什么?
我有4个点创造了一些四边形,我想知道第五点是否介于两者之间.像这些图像:


无论第五点在哪里,我都需要知道第五点是否在其他4点创建的区域内.
也有4分能够移动.我怎么做?
geometry ×4
algorithm ×3
math ×2
area ×1
c ×1
c# ×1
c++ ×1
collider ×1
coordinates ×1
java ×1
jython-2.7 ×1
python-2.7 ×1
winforms ×1