2017-01-26 13 views
0

Я пытаюсь нарисовать дерево диаграмму в Unity3D используя C#, у меня есть список данных, который содержит следующие переменные:C# Сформировать древовидная схема узла Координаты

public class ObjectData 
{ 
    public string ID; 
    public string hierarchyParent; 
    public int hierarchyLevel; 
} 

Родитель переменная содержит идентификатор родительского объект и переменная уровня содержат восходящее число строки, то есть Top row = 1, Row ниже = 2 и т. д. Мне нужно получить координаты в 2D-пространстве каждого узла этой древовидной диаграммы для неизвестного количества элементов. Если я попытаюсь создать это, установив строки и добавляя постоянное значение x, линии подключения часто пересекаются и не центрируются. Я рассмотрел некоторые другие примеры, но не смог найти учебник для моих входных данных. Благодаря!

+1

Не очень простая проблема. Может хорошо работать, если ваши фактические деревья относительно невелики. Ваш вопрос скорее о алгоритме. Посмотрите [этот вопрос] (http://stackoverflow.com/questions/13128750/what-are-the-step-to-the-reingold-tilford-algorithm-and-how-might-i-program-it) для Reingold-Tilford, который предположительно решает ваше требование, «строки часто пересекаются и не центрируются» для нескольких случаев (я предполагаю, что вы хотите корневой иерархии), или если он не пытается использовать алгоритм «SpaceTree», существует множество других алгоритмов в зависимости от того, как вы хотите, чтобы ваше дерево выглядело. – Tewr

+0

Также хотел бы взглянуть на [метод рисования с помощью направленного усилия] (https://en.wikipedia.org/wiki/Force-directed_graph_drawing), если вы еще этого не сделали. Это обычно довольно легко реализовать и может дать хорошие результаты. – Jephron

ответ