找到平面内离某点最近的一个点,有什么好的算法?

fightclub131 2009-11-01 09:15:19
鼠标在移动
然后要找到鼠标所坐在位置附近最近的一个点,并显示出来
现在很多程序中有用到这个功能吧 没什么经验 不知道怎么实现效率高点
我点倒是不多只有300多个 现在是穷搜的 然后鼠标移动是每隔100ms重新计算一次
...全文
959 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
donkey301 2009-11-03
  • 打赏
  • 举报
回复
查到了一点知识:
http://zh.wikipedia.org/wiki/%E6%9C%80%E9%82%BB%E8%BF%91%E6%90%9C%E7%B4%A2
11楼说的rtree就是空间分割的一种方法。
看了一下kd树,还是很简单的,这儿有它的介绍:
http://books.google.cn/books?id=flxb6SzrOlgC&pg=PA386&dq=The+Design+of+Dynamic+Data+Structures#PPA113,M1
不过我很想知道那些商用建模工具是如何来实现这个问题的,如果谁知道的话请告知一声。
zeroieme 2009-11-02
  • 打赏
  • 举报
回复
300个点预先分格子、按坐标建索引,这样就只对比鼠标所在附近3、4个点上。
donkey301 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zeroieme 的回复:]
300个点预先分格子、按坐标建索引,这样就只对比鼠标所在附近3、4个点上。

[/Quote]
问一下,一些成熟的三维建模软件譬如AutoCAD,SolidWorks,Pro/E,是这么做的吗?
bigc2000 2009-11-02
  • 打赏
  • 举报
回复
四叉树就行,平不平衡,问题不大,

如果点分布实在不均匀,那就平衡下。。。
绿色夹克衫 2009-11-02
  • 打赏
  • 举报
回复
印象中rtree是干这个用的!
showjim 2009-11-02
  • 打赏
  • 举报
回复
建个2维索引,二分查找最接近的行中的最接近的点,不断缩小行的范围.
fightclub131 2009-11-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hnfeitianwugui 的回复:]
分治发求最近对~~~
[/Quote]
我想起来。。哪本书上看到过
不过如果当前鼠标位置 不在最近对里怎么办
fightclub131 2009-11-01
  • 打赏
  • 举报
回复
没有啦
我是想说 现在数据量小。。。。以后数据量会增加
而且 因为考虑到鼠标移动,所以会频繁计算 所以希望单次查找的时间能快点
arong1234 2009-11-01
  • 打赏
  • 举报
回复
lz的标题欺骗了我
[Quote=引用 4 楼 donkey301 的回复:]
引用 2 楼 arong1234 的回复:

楼主说的是300个点中找到最近的点
[/Quote]
donkey301 2009-11-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 arong1234 的回复:]
平面方程为
ax + by +cz+d=0
给定点为(r,s,t)
那么过点垂直于平面的方程为
x = r + ak
y = s + bk
z = t + ck

带入平面方程,得到一个关于k的方程,解这个方程,就可以知道垂足位置了
[/Quote]
楼主说的是300个点中找到最近的点
donkey301 2009-11-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hnfeitianwugui 的回复:]
分治发求最近对~~~
[/Quote]
能具体点吗?我也想知道
arong1234 2009-11-01
  • 打赏
  • 举报
回复
平面方程为
ax + by +cz+d=0
给定点为(r,s,t)
那么过点垂直于平面的方程为
x = r + ak
y = s + bk
z = t + ck

带入平面方程,得到一个关于k的方程,解这个方程,就可以知道垂足位置了
hnfeitianwugui 2009-11-01
  • 打赏
  • 举报
回复
分治发求最近对~~~

33,025

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧