我已经实现了一种树形数据结构,其中每个节点(递归地)保存指向其子节点的指针列表。
我正在尝试计算可视化树的 (x,y) 坐标。我参考了这篇文章:http://gbook.org/projects/RadialTreeGraph.pdf,但是我无法理解如何越过第一层,即我目前为止写的代码如下:
我不确定如何计算限制、平分线等内容。 这是我的抽屉目前所做的事情: 很显然,这不是我想要的第二个(从0开始)级别。 我可以获取所有需要的信息以获得我想要的东西。
我正在尝试计算可视化树的 (x,y) 坐标。我参考了这篇文章:http://gbook.org/projects/RadialTreeGraph.pdf,但是我无法理解如何越过第一层,即我目前为止写的代码如下:
for (int i = 0; i < GetDepth()+1; i++)
{
if (i == 0)
{
GetNodesInDepth(i).at(0)->SetXRadial(MIDDLE(m_nWidth));
GetNodesInDepth(i).at(0)->SetYRadial(MIDDLE(m_nHeight));
continue;
}
double dNodesInDepth = GetNodesInDepth(i).size();
double dAngleSpace = 2 * PI / dNodesInDepth;
for (int j = 0; j < dNodesInDepth; j++)
{
Node * pCurrentNode = GetNodesInDepth(i).at(j);
pCurrentNode->SetXRadial((SPACING * i) * qCos(j * dAngleSpace) + MIDDLE(m_nWidth));
pCurrentNode->SetYRadial((SPACING * i) * qSin(j * dAngleSpace) + MIDDLE(m_nHeight));
pCurrentNode->m_dAngle = dAngleSpace * j;
if (pCurrentNode->IsParent())
{
//..(I'm stuck here)..//
}
}
}
我不确定如何计算限制、平分线等内容。 这是我的抽屉目前所做的事情: 很显然,这不是我想要的第二个(从0开始)级别。 我可以获取所有需要的信息以获得我想要的东西。
MIDDLE
тњїSPACING
Тў»т«ЈтљЌ№╝Ъ - Андрей Беньковский