2012-09-28 99 views
2

我没有解决方案的三维数据结构显示,并希望得到一些建议。三维数据结构显示设计:

每个n节点都有k孩子。通过球形电子充电算法将儿童分布在节点的边界球上。虽然技术上不准确,但最容易的是孩子们在节点的边界上“均匀分布”。

目前,我用球体表示节点。然而,对于大的n,由于绘制球体的复杂性,这变成计算效率低下的动态显示。

这是必要的溶液以具有可以理解的,在视觉上正则表示为nk_i所有的选择,在视觉上常规含义,如果一个线垂直于两个节点中的两个面,那么所有的线垂直于的一些选择两个节点的一些选择的两个面等等。

我有几个选择这里:

  1. 使用球绘制算法,使用更少的面孔来代表一个球体。

    • 这看起来很丑陋,从“球体”延伸出来的线不会退出图形(从“球体”A到“球体”B的线不能保证垂直于入射面A或B,更不用说这两者。)
  2. 使用凸正多面体代替球体,使得多面体的面的数目等于孩子的数目。这将允许线以垂直于绘制多面体A和B.多面体既

    • 这是在数学上是不可能的,因为只有5与非可变多面这样的数字,但这种结构要求有足够的面来映射k分。如果我们尝试映射到顶点,则参数保持相似。
  3. 使用????多面体,但画线从顶点到顶点。
    • 我相信这总是有效,因为据我所知,我绘制的线条勾画出这些多面体。但是,我不知道绘制这些多面体的高效算法,我不知道他们的名字是要自己查看。
  4. 社区可能对我有任何建议。

我附上了一张图片来说明我的显示器的结构。这是一个带有根节点的结构,有30个孩子。根节点的孩子没有孩子。

Structure

我已附加的第二画面,没有节点绘制,以显示在3中记载的多面体的一个例子,如果我的意思是不是已经显而易见。

Polyhedron

+0

什么是您的照明模型?如果你只有无限光源,没有阴影,没有反射,那么所有的球体看起来都是一样的(除了大小)。您可以渲染一个球体一次,然后根据需要缩放图像。对于更复杂的模型,没有足够的数据来回答这个问题...... –

+0

如果我明白你在说什么,那么你正在讨论是否生成静态图像 - 渲染模型。相反,我希望通过UI中的旋转,插入,删除等等动态显示。如果我误解了你,那么我仍然会回答你的问题:我没有阴影或反射,只有无穷无尽的灯光。 –

+0

仅当观察者改变其视图的方向时,球体的视图才会改变。然后你需要再次渲染球体。观察者静止时,可以对所有球体使用相同的图像。我也忘了,如果你想模拟一个广角相机,你需要将视角考虑进去(位于框架中心的球看起来更像椭圆,所以你需要拉伸图像,不仅需要缩放,而且应该仍然比完整渲染更容易)。 –

回答

0

与广场更换球,并给他们使用ad hoc着色球体的方面。 要显示线条,就好像它们从球体表面弹出一样,只需将其设置为:将起点和终点设置为球体的表面(计算坐标是简单的数学运算)。