首页 / 知识
关于.net:非重叠矩形中的点击测试算法
2023-04-17 11:05:00

Algorithm for hit test in non-overlapping rectangles我有一个覆盖矩形的非重叠矩形的集合。 找到包含鼠标单击的矩形的最佳方法是什么? 显而易见的答案是拥有一个矩形数组并按顺序搜索它们,从而使搜索为O(n)。 是否有某种方法可以按位置对它们进行排序,以使算法小于O(n),例如O(log n)或O(sqrt(n))? 您可以将矩形组织成四叉树或kd树。那给你O(log n)。那是主流方法。 针对此问题的另一个有趣的数据结构是R树。如果您必须处理大量矩形,这些方法会非常有效。 http://en.wikipedia.org/wiki/R-tree 然后是O(1)方法,可以简单地生成与您的屏幕相同大小的位图,并用占位符填充"无矩形",然后将点击矩形索引绘制到该位图中。查找变得如此简单:
显然,只有在矩形不经常更改并且可以为位图保留内存的情况下,该方法才有效。 创建一个间隔树。查询间隔树。咨询麻省理工学院出版社的"算法"。 最好将间隔树实现为红黑树。 请记住,通常只有在要单击矩形而不是更改矩形位置的情况下,才建议对矩形进行排序。 您必须记住,必须分别为不同的轴构建索引。例如,您必须查看是否在X和Y上重叠了一个间隔。一个明显的优化是仅检查两个X间隔上是否重叠,然后立即检查Y上的重叠。 另外,大多数股票或" classbook"间隔树仅检查单个间隔,并且仅返回单个间隔(但是您说的是"不重叠",不是吗?) 使用BSP树存储矩形。 将它们推成四叉树。 |
最新内容
相关内容
linux查看鼠标命令?
linux查看鼠标命令?,系统,信息,软件,情况,第一,通用,环境,管理,分析,名称,如何在Linux操作系统下添加鼠标右键菜单1、华为台式电脑linux系统鼠linux鼠标设置命令?
linux鼠标设置命令?,系统,软件,环境,产品,设备,数据,网络,网址,工具,情况,linux操作系统中有无鼠标键功能,怎么设置如果是在Linux命令行界面下防篡改算法linux命令?
防篡改算法linux命令?,技术,网络,系统,数据,区块链,电子,交易,信息,网站,国际,编程高手来啊!!!急啊!!!在你的倒数第5两行中间插入一行:Call Dealinux鼠标滚轮命令?
linux鼠标滚轮命令?,系统,软件,位置,通用,状态,暂停,命令,终端,进程,信号,在Linux的服务器或终端中点击鼠标出现类似Ctrl+C的效果,原因是什么.linux使用命令的方法?
linux使用命令的方法?,系统,信息,工具,标准,数据,命令,左下角,目录,文件夹,图标,linux的cd命令的使用方法1、cd ~:回到用户家目录。注:这得看你linux命令鼠标垫图片?
linux命令鼠标垫图片?,设备,电脑,信息,图片,工作,不了,名称,发行,平台,系统,linux下怎么查找usb对应的设备,比如鼠标...1、grep -v 22c2 /proclinux命令输入方法?
linux命令输入方法?,系统,电脑,密码,管理,地址,命令,网站,工具,首开,位置,linux终端输入~怎么弄中间在电脑上打开需要的Word文件进入。进入到文linux里使用鼠标命令?
linux里使用鼠标命令?,系统,环境,软件,电脑,技术,信息,数据,第一,工作,名称,linux操作系统下,鼠标键盘能不能用?1、如果是在Linux命令行界面下Python中什么是反射?使用方法有哪
Python中什么是反射?使用方法有哪些?,信息,培训,状态,术语,检测,反射,属性,对象,字符串,方法,反射这个术语在很多语言中都存在,并且存在大量的python创建一个集合?
python创建一个集合?,异常,代码,括号,元素,函数,方法,两个,整数,操作,字符串,在Python中,集合是一种无序且不重复的数据类型,可以用于存储一组元Python3实现旋转数组的3种算法
Python3实现旋转数组的3种算法,位置,代码,时间,培训,算法,数组,解法,结果,长度,索引,下面是Python3实现的旋转数组的3种算法。一、题目给定一Python中有哪些方法可以解压文件?
Python中有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大