我有一个由大约4,000,000像素组成的图像。每个像素都有一个地理XY坐标(坐标位于像素的中心),每个像素对应于一个a×am平方。
假设我把一个随机点放在图像上(用随机的xy坐标),并围绕这个点画一个半径为B米的圆:
我的问题是:我怎样才能高效地计算出圆触及的是哪些正方形?
注意,这个函数是针对单正方形的。但是对于方形网格,可以修改这种方法--您可以计算整列的水平移位值一次,计算整行的垂直移位值一次,然后使用计算值squareddist=sqdistforrow[row]+sqdistforcolumn[Col]
function IsCircleIntersectsSquare
(CX, CY, CR: Integer; {circle}
SX, SY, A: Integer{square}): Boolean;
var
halfA, dx, dy, t, SquaredDist: Integer;
begin
//halfsize
halfA := A div 2;
//distances to square center
dx := CX - SX;
dy := CY - SY;
SquaredDist := 0;
//square sides divide plane to 9 parts
t := dx + halfA;
if t < 0 then
SquaredDist := t * t
else begin
t := dx - halfA;
if t > 0 then
SquaredDist := t * t
end;
t := dy + halfA;
if t < 0 then
SquaredDist := SquaredDist + t * t
else begin
t := dy - halfA;
if t > 0 then
SquaredDist := SquaredDist + t * t
end;
Result := SquaredDist <= CR * CR
end;
我确实知道AABBs,但我现在只使用大约10个粒子,AABB现在不是必需的。
这是一个基于我的编程问题的几何问题。基本上,我有一个充满经纬度点的MySQL数据库,每个经纬度点间隔为1km,对应于每个点周围平方公里内居住的人口。然后,我想知道,这些网格中每一个的相对分数,被一个任意大小的圆圈所占,这样我就可以计算出,在一个给定的圆圈内,大致住着多少人。 以下是问题的一种形式(距离不按比例)的一个实际例子: 我想知道居住在X点半径内的人口数量。我的数据库计算出a点和B点的条目与
有2个圆和他们的中心是固定的,将作为输入给出。然后将会有n个点,它们的x和y坐标被给出作为输入。 最后,还会有q个查询。对于每个查询,将给出两个圆(设为r1和r2)的半径。为每个查询输出第一个圆或第二个圆内的点总数。如果一个点到圆心的距离小于或等于圆的半径,则该点位于圆内。 约束条件:n,q<=10^6r1,r2<=10^7,对于每个坐标,x和y<=10^6 我正在寻找一个O(nlogn)或O(n
我确实看到了这个StackOverflow,它似乎是一个类似的问题:在一个圆形扇区中有效地找到点,我用Java实现了它,但如果没有向量,它似乎就不能翻译,我对数学有点困惑,不能让它工作。 我一直试图解决这个问题,我希望任何类型的实现的帮助(不要介意添加触发计算),以及任何理解问题的帮助。谢谢!!
本文向大家介绍Css选择符有哪些?哪些属性可以继承?优先级算法如何计算?相关面试题,主要包含被问及Css选择符有哪些?哪些属性可以继承?优先级算法如何计算?时的应答技巧和注意事项,需要的朋友参考一下 1.id选择器( # myid) 2.类选择器(.myclassname) 3.标签选择器(div, h1, p) 4.相邻选择器(h1 + p) 5.子选择器(ul < li) 6.后代选择器(li
我正在编写软件,扩展圆-矩形碰撞检测(交集),以包括对碰撞的响应。圆边和圆矩形是相当直接的。但一圈又一圈地把我难住了。 例如,在离散事件模拟中,让两个圆碰撞,一个红一个绿。我们可能会出现以下情况: 在它们碰撞后,我们可以立即: 这里的RIP和GIP是在前一个时钟滴答的圆圈的位置。在当前时钟滴答时,在RDP和GDP处检测到冲突。然而,当两个圆位于RCP和GCP时,碰撞发生在时钟滴答之间。在时钟滴答声