假设我有数百万的互连Node
个实例,它们共同组成了一个图形。每个Node
都有一个2D位置。用户必须能够平移该图的程序渲染。每个Node
都有一个draw
方法,但如果我draw
每帧都Node
,那就非常慢。
由于用户通常不希望看到整个图表,而是放大图片,因此优化是不会绘制屏幕外的Node
。
将2D世界空间划分为矩形Segment
。将每个Node
分配给他们所在的Segment
。在绘制时,首先找出用户视图与之相交的Segment
组和draw
只有Node
在那些Segment
s。
如何确定Segment
的最佳尺寸? (使其太大,与绘制所有内容的效果相同。使其太小并且还有太多要迭代。)
答案 0 :(得分:1)
嗯,你总是可以通过试验和错误来确定它。 顺便说一下,细分的大小可能取决于缩放级别。
另一种可能的解决方案是有两个排序的节点数组。一个数组Node[] ax
按x
位置排序,另一个Node[] ay
按y
位置排序。
如果要在(x1, y1) - (x2, y2)
中显示节点,您将构建一组节点,这些节点位于使用边界过滤的已排序数组的交叉点。
答案 1 :(得分:1)
我认为Quad trees可能比划分为固定大小的矩形更有用。