Смекни!
smekni.com

Использование JAVA технологий для разработки графических приложений (стр. 3 из 3)

В следующей таблице приведены некоторые подклассы классов Group, Leaf и Node-Component:

Класс Описание
Частичный список классов класса GroupJava 3D
BranchGroup Корневой узел (объект Node) графа сцены, который вложен в класс Locale
Switch Может отображать либо один дочерний узел, либо несколько дочерних узлов, задаваемых маской
TransformGroup Содержит преобразование (например, перемещение, вращение или масштабирование)
Частичный список классов класса Leaf
Behavior Содержит методы для получения пользовательского ввода (например,нажатие клавиш и щелчков мышью), а также методы, которые описывают поведение объекта при определенных событиях (например, при столкновениях)
Light Описывает набор параметров источников освещения Java 3D
Shape3D Описывает трехмерные геометрические объекты
ViewPlatform Управляет точкой наблюдения трехмерной сцены
Частичный список классов класса NodeComponent
Appearance Задает атрибуты объекта Shape3D, такие как цвет и текстура
Material Описывает свойства освещенного объекта (например, отраженный цвет.

Таблица 2. Основные методы подкласса классов Group, Leaf и Node-Component


2.3. Разработки 3DPaint

В данной работе я создал графический редактор 3D Paint.

Идеей моего проекта является использование двухмерной и трехмерной графики на Java для создания удобного и многофункционального графического редактора.

Для реализации проекта мне потребовалась изучить подробно графику на Java и разработки вышеперечисленных программных интерфейсов Java 2D и Java 3D.

На первом этапе я создал саму визуальную оболочку (каркас графического редактора); трехмерные фигуры: «цветной куб», «цилиндр», «сфера», «параллелепипед», «конус» и создание трехмерного текста, с возможностью изменение типа шрифта, размера и стиля; панель изменения цвета для фигур и для фона, где размещаются фигуры.

На втором этапе я планирую создать панель с двухмерной графикой, которая будет рисовать: линии, прямоугольники, треугольники и другие элементы, с возможностью изменения цвета, затирания, трансформации. Также я хочу связать трехмерную и двухмерную графику для создания общих проектов, таких как дизайн трехмерного объекта или обычное рисование графических картинок.

В начала проекта, используя программное обеспечение NetBeansIDE 6.0, я создал так называемый каркас приложения (Рис 1). Он позволяет управлять, созданными фигурами трехмерной графики. Все кнопки и панели (меню, управления) находятся в пакетах SWING и AWT.


Рис 1. Графический редактор 3DPaint

На левой панели приложения располагаются кнопки с фигурами, на нижней панели кнопки управления этими фигурами, центральная панель отображает фигуры и действия над ними. Панели расположены при помощи раскладчика BorderLayout (раскладчик по сторонам света). А кнопки на этих панелях располагаются при помощи раскладчика FreeDesignLayout.

Далее создал примитивные геометрические фигуры, используя библиотеку com.sun.j3d.utils.geometry. Класс geometry хранит в себе трехмерные фигуры: cylinder, box, cube, sphere, cone.

Например для создания трехмерной фигуры «Цилиндр» используется следующий код:

Cylinder CylinderObj = new Cylinder(0.7f, 1.4f, ap);

objTrans.addChild(CylinderObj);

где 0.7f и 1.4f это размер фигуры (ширина и длина).

Фигура может выполнять следующие действия:

MouseRotate behavior = new MouseRotate(objTrans);

objTrans.addChild(behavior);

behavior.setSchedulingBounds(bounds);

- вращениеприпомощилевойкнопкимыши.

MouseZoom behavior2 = new MouseZoom(objTrans);

objTrans.addChild(behavior2);

behavior2.setSchedulingBounds(bounds);

- изменение размера фигуры при помощи колесика мыши (трансформация).

orbit = new OrbitBehavior(c, OrbitBehavior.REVERSE_ALL |

OrbitBehavior.STOP_ZOOM);

BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);

orbit.setSchedulingBounds(bounds);

viewingPlatform.setViewPlatformBehavior(orbit);

- перетаскивание фигуры по рабочей области при помощи правой кнопки мыши.

Transform3D yAxis = new Transform3D();

Alpha rotationAlpha = new Alpha(-1, 10);

RotationInterpolator rotator = new RotationInterpolator(rotationAlpha, objTrans, yAxis, 0.0f, (float) Math.PI*-2.0f);

BoundingSphere bounds1 = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);

rotator.setSchedulingBounds(bounds1);

objRoot.addChild(rotator);

- вращение трехмерной фигуры. С помощью этого кода можно задавать скорость вращения и направление вращения фигуры (по часовой или против часовой стрелки).

Для создания трехмерного текста используется класс Font3D из библиотеки javax.media.j3d. Класс Font3D содержит в себе методы задания имени трехмерного текста, типа текста (жирный, курсив, подчеркнутый), размера. К трехмерному тексту, как и к другим трехмерным объектам можно применять выше перечисленные действия: вращение, перемещение и трансформацию.

Также в программе есть возможность управления цветом. Можно менять как цвет фона, так и цвет самого трехмерного объекта. Управление цветом осуществляется при помощи класса ColorChooser из пакета javax.swing. Цвет можно менять с помощью разных систем задания цвета. ColorChooserсодержит три системы RGB, HSB и Swatches.

Для удобства в программе создана панель меню, содержащая меню-бар «Файл» и «Справка» из класса JMenyBar. А меню-бар содержит вкладки «Выход» и «О 3DPaint» из класса JMeny.

При нажатии на вкладку в меню «О 3DPaint» выходит диалоговая панель, принадлежащая пакету javax.swing, содержащая информацию о программном обеспечении, версии и создателе.

ЗАКЛЮЧЕНИЕ

Этим завершается наше рассмотрение графики на Java. В этой работе мы представили краткий обзор средств программирования трехмерной и двухмерной графики на Java. Мы показали, что эффективность, расширяемость и простота Java 3D делает этот интерфейс прикладного программирования отличным выбором для разработчиков, стремящихся встроить в свои приложения трехмерную графику. Мы представили приложение, которое демонстрируют использование геометрических фигур, текстур, освещения и поведений в Java 3D.

Мы обсудили некоторые графические возможности Java. Мы начали с краткого знакомства с фундаментальными основами графики, такими как системы координат и графические контексты. Затем мы обсудили средства Java 2D. Мы также вкратце рассказали, как использовать графические эффекты.

Вторая половина нашего знакомства с графическим программированием касалась Java 3D. Используя классы Java 3D и Java 2D мы создали простой графический редактор 3DPaint, который дает возможность пользователю изменять свойства сцены Java 3D, включая манипулирование трехмерными объектами (вращение, масштабирование и перемещение) с помощью мыши и изменение освещения сцены.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

1. Х. М. Дейтел, П.Дж. Дейтел, С.И. Сантри - Технологии программирования на Java, книга 1 (графика, JAVABEANS, интерфейс пользователя)

2. Джуди Бишоп - Эффективная работа Java

3. James Gosling, Bill Joy, Guy Steele, Gilad Bracha - The Java Language Specification, Second Edition.

4. Tim Lindholm, Frank Yellin - The Java Virtual Machine Specification, Second Edition.

5. Гослинг Дж., Арнольд К. - Язык программирования Java

6. Информация с сайта www.infocom.uz

7. Информация с официального сайта Javawww.java.sun.com