我正在努力,我希望将是一个非常简单的使用,但强大的二维跨平台CAD软件包我知道这里已经有一些了,但是我这么做更多的是为了学习。
我正在使用OpenGL进行渲染,我希望能够在鼠标移动到每个实体上时高亮显示每个实体我有在实体上找到最近点的算法,等等,但是我不想为每次移动扫描实体的整个数据存储。
我已经看过四叉树、kd树等,但我迷失的是如何使用它们来缩小整个实体的焦点。我看到的大多数例子似乎都是以“点”为导向的。我假设我想基于边界矩形建立索引,然后对矩形内的实体进行最近点搜索。
有人能为我指出正确的方向吗?

最佳答案

认为“Kd树”的方向是正确的现在,您必须更进一步,将点扩展到具有位置和附加参数的多维基本体中。毕竟,Kd是指“K维”。
因此,在圆或圆弧的情况下,可以将中心位置存储在树的前二维中,然后存储在第三维中的半径(对于一组二维基本体)对于所有其他不是圆形的基本体,只要假设一个圆形边界区域。
对于线性基本体,可能需要查看BSP树当然,您也可以将kd的概念与bsp结合起来,例如对曲线基元使用类kd节点,而对由线性凸段限定的基元使用bsp。

关于algorithm - 二维矢量图形的最佳数据存储算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11616594/

10-11 23:54
查看更多