Я бы выбрал Swing и Java2D или OpenGL (JOGL).
Я использовал OpenGL несколько раз, и рисование текста легко с помощью расширений JOGL (TextRenderer).
Если вы выберете Swing, то трудной частью будет реализация трехмерного преобразования. Вы должны написать какую-то систему частиц. Частицы должны были бы находиться на трехмерной сфере. Вы лично будете нести ответственность за любое трехмерное преобразование, но с использованием ортогональной проекции, которая будет тривиальной. Так что это хорошее упражнение - вам нужно здесь: сферическая координата вики sys и здесь проекция 3D в 2d .
После того, как Вы произвели все преобразования, остается только рисунок. И Java2D, и Swing имеют очень удобный API для этого. Это будет сводиться к выбору размера шрифта и рисования текста по заданным координатам. Пользовательского JPanel с переопределенным методом paintComponent
будет достаточно для начала и окончания.
Что касается второго варианта, то самой сложной частью является сам OpenGL API. Это процедурно, так что если вы в основном знакомы с Java, вам будет сложно использовать не-OO-вещи. Это может привыкнуть и, честно говоря, может быть весьма полезным, так как с этим можно многое сделать. Если вы выберете OpenGL, вы получите все трехмерные преобразования бесплатно, но все равно придется самостоятельно переходить от сферической системы координат к декартовой (первая вики-статья все еще полезна). После этого нужно просто использовать какой-нибудь класс рисования текста, например TextRenderer
, поставляемый с дистрибутивом JOGL.
Таким образом, OpenGL помогает просматривать проекционные расчеты и ускоряет работу оборудования Для Java2D потребовалось бы больше математики, но, на мой взгляд, этот подход кажется немного проще. Да, и между прочим - Java2D пытается использовать любое графическое ускорение (OpenGL или DirectDraw) внутри. Таким образом, Вы защищены от определенных проблем низкого уровня.
Для обоих вариантов Вам также необходимо привязать координаты мыши s к скорости вращения сферы. Будь то Java2D или OpenGL, код будет выглядеть очень похоже. Просто сопоставьте координаты мыши, связанные с центром панели, с некоторым вектором скорости. Во время рисования Вы можете использовать вектор, чтобы соответственно вращать сферу.
И еще одна вещь: если вы хотите попробовать OpenGL, я бы порекомендовал: Язык обработки , созданный в MIT специально для многофункциональных графических апплетов. Их 3D API, не случайно, почти такой же, как OpenGL, но без особых излишеств. Так что, если вы хотите самый быстрый прототип , это лучшая ставка. Обратитесь к этой ветке обсуждения за актуальным примером. Примечание: Обработка написана на Java.