2012-04-06 2 views
2

Я пытаюсь нарисовать интерактивный плоский прямой график (PSLG) на JApplet. Я использую щелчки мыши для определения вершин PSLG.Интерактивный плоский граф прямых линий в качели

Вот алгоритм, который я использую для рисования краев PSLG. 1. Точка, в которой пользователь выполняет щелчок мыши, добавляется как вершина PSLG. 2. Если он нажмет на вторую точку, ребро создается непосредственно из точки и ранее щелкнул точки

Вот некоторые недостатки, которые я наблюдал в связи с использованием этого алгоритма:

  1. Невозможность для создания непересекающихся плоских множеств, например, просто отрезка линии
  2. Закрытый многоугольник создается только в том случае, если пользователь нажимает на точное место, где была начальная точка. [По сути, если пользователь нажимает очень близко к начальной точке, никак не сказать, что эта точка на самом деле является начальной точкой, поскольку она появляется в определенном диапазоне допуска от точки].

Я проверил некоторые подобные вопросы здесь, и люди предлагают использовать библиотеку JFreeChart. Но, насколько я понимаю, сценарий в этих вопросах заключался в том, что точки PSLG были уже известны. Я не знаю, является ли JFreeChart может быть использован для создания интерактивных PSLG-х

Я думал о добавлении точек и имеет кнопку, которая бы сказать добавить края среди точек, но если это так, выбирая 2 очка еще будет включать в себя близость проблема возникла в 2.

Мне было интересно, может ли кто-нибудь предложить мне лучший подход к тому, как справиться с этой ситуацией.

Заранее спасибо

+0

Я не уверен, что понимаю вашу проблему №1, но для № 2 вы можете открыть меню по правому щелчку, чтобы при необходимости пользователь мог закрыть полигон. –

ответ

4

GraphPanel можно было бы адаптировать к этой задаче, хотя это могло бы извлечь выгоду из более продвинутых edge model для более быстрого поиска. Также рассмотрите JGraph.

+0

См. Также 'JHotDraw', цитируется [здесь] (http://stackoverflow.com/q/13312223/230513). – trashgod

Смежные вопросы