Образец или минимальный пример облака тегов в C++

Я получил проект Tagcloud на C++, из моего университета. Я много гуглил, чтобы найти базовую версию Tagcloud. Но все есть в.net/java. Не возможно сделать Tagcloud в с ++? Мне не удалось найти какой-либо минимальный пример C++ в Интернете.

  1. Возможность сделать TagCloud в C++?
  2. Любое место, чтобы найти минимальный / базовый пример кода, чтобы сделать облако тегов в C++?

Да, это плохо, чтобы спросить минимальный рабочий пример. Но я не смог найти ничего.

1 ответ

Это звучит как домашнее задание, но я укушу...

  1. Прикрепите графический рендерер C++, который вы будете использовать. OpenGL выполним, но имеет сложную кривую обучения, но также дает вам возможность (в некоторой степени) кросс-платформенной совместимости с помощью таких проектов, как Angle. Просто помните, что "дьявол кроется в деталях", когда рендеринг текста в C++ и только текстовый рендеринг - это забавная задача. Если вы решите ограничить свою поддержку, скажем, Windows, существует множество примеров использования C++ для рисования текста. Посмотреть здесь

  2. Если TagCloud(также называемый WordCloud) будет интерактивным, выберите простую абстракцию пользовательского ввода, которая дополняет ваш выбор рендеринга, и проведите множество "хитовых" тестов, чтобы убедиться, что вы отображаете входные данные из "экранного пространства" в "мировое пространство" правильно (также весело на всех устройствах).

  3. Как только эти части будут готовы (только после шагов 1 и 2), изучите алгоритмы в Интернете и изучите другие общедоступные работы, которые вдохновят вас на интерактивную доску. На этом этапе проблема сводится к простой области и проблеме двумерных столкновений (столкновения, будучи "словом", перекрываются в вашем случае).

Вот первые результаты, которые я откатил назад, и уже кажется многообещающим лидерством.

Облако слов поколения

Попытайтесь поместить слово в некоторой начальной точке: обычно около середины или где-нибудь на центральной горизонтальной линии. Если слово пересекается с ранее размещенными словами, переместите его на один шаг по возрастающей спирали. Повторяйте, пока не будут найдены пересечения.

Другие вопросы по тегам