Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Описание классов g3d на Java
Список используемых классов
- g3d g3d_window g3d_object g3d_light g3d_light g3d_z_buffer colorScheme
Названия всех классов начинаются на g3d* чтобы их было легче отличить от других классов за исключением класса colorScheme, который используется еще и в топографии.
Для чего предназначен класс g3d
Класс предназначен для построения трехмерных поверхностей и других трехмерных объектов (в перспективе) в апплетах или приложениях на Java.
Основной порядок действий при использовании g3d
Экспериментальные данные
|
|
Рис. 1 | Рис. 2 |
- Получить массив значений типа double размером M на N элементов (2<=M<~200, 2<=N<~200) упорядоченных образом, показанных на рисунке 1. Создать объект:
g3d_object obj=new g3d_object(); Передать данные из массива в объект:
set_points(M, N,F[]);
Пример: obj. set_points(20,45,K[]); Установить пропорции объекта (см. рис. 2):
set_dimensions(sx, sy, sz);
Например: obj. set_dimensions(2,2,1); Установить его положение в комнате (см. ниже)
set_location(px, py, pz);
Например obj. set_location(0,0,0); При пересчете данных (M и N остаются теми же) можно переустановить точки:
reset_points(M, N,F[]);
Пример: obj. set_points(20,45,K[]);
Программирование окна вывода
- Определить размер окна в котором будете строить поверхность и создать объект типа Image заданного размера. Создаем объект типа g3d_window Устанавливаем его размеры в пикселах:
set_window(width, height);
Пример: set_window(300,200); Трехмерные объекты распологаются в комнате, размеры которой надо указать. Важно лишь соотношение сторон.
set_room(sx, sy, sz);
Пример: set_room(1,1,1); Устанавливаем координаты наблюдателя:
set_position(px, py, pz);
Пример: set_position(0,0,2.5);
Здесь параметр pz играет роль коэффициента перспективы. Если его значение велико или <=0, то эффект перспективы пропадает. Наибольший эффект при pz порядка размера комнаты. Можно повернуть комнату на определенные углы (спрева в горизонтальной плоскости на угол fi, а потом в горизонтальной плоскости). Углы задаются в радианах:
set_orientation(fi, theta);
Пример: set_orientation(0,0); Если необходимо увидеть объект в увеличенном масштабе используйте-
set_zoom(zoom);
Пример: set_zoom(1);
По умолчанию zoom=1 (эффект выключен).

Рис. 3. Система координат наблюдателя
Работа с Z-буффером
- Создать z - буффер размером равным рабочему окну и начальным значением близким к минус бесконечность
Пример: g3d_z_buffer z_buf=new g3d_z_buffer(width, height,-10000);
Работа с colorScheme
Описание данного класса выходит за рамки данного руководства
Работа с g3d_light
Можно использовать до 5 источнико освещения или же не использовать ни одного.
Если хотите добиться необычных эффектов то необходимо:
- Создать экземпляр класса g3d_light
g3d_light light=new g3d_light(); Для добавления новых источников освещения используйте
add_source(X, Y,Z, Color, R_dis, A_dis);
Напрмер: light. add_source(5,3,2,Color. red,0,Math. PI/2); Для источников необходимо вызвать метод
init();
Пример: light. init();
X, Y,Z – это мировые координаты источника света. Задаются относительно комнаты.
Color – это тот цвет, чьи компоненты будут добавлены к цвету конкретной точки.
R_dis и A_dis – это расстояние и угол, на котором свет источника перестает действовать. Если R_dis=0, то это означает, что зависимость от расстояния отсутствует, можно также задать очень большое значение – результат будет тот же. Аналогично для угла между нормалью к поверхности и источником освещения.
Работа с g3d
- Создайте объект типа g3d_window, проинициализируйте его и задайте необходимые свойства:
wnd=new g3d_window();
wnd. set_window(w, h);
wnd. set_orientation(0.,0.);
wnd. set_room(sx, sy, sz);
wnd. set_position(px, py, pz); Создайте z-буффер:
z_buf=new g3d_z_buffer(w, h,-1000.); Создайте источник освещения:
light=new g3d_light();
light. add_source(6,2,4,Color. blue,0,Math. PI/2); Создайте объект цветовой схемы:
cs=new colorScheme(0);
cs_t=new colorScheme(0); Создайте массив и посчитайте необходимые значения:
M=20; N=50;
F=new double [M*N];
... Создайте трехмерный объект и задайте его свойства:
obj=new g3d_object();
obj. set_dimensions(1.,1.,1.);
obj. set_location(0,0,0);
obj. set_points(M, N,F); Создайте Image размером равным размеру рабочему окну
pic=createImage(w, h); Создайте объект типа g3d:
g3d=new g3d(); Установите в него окно, z-буфер, объект:
g3d. set_window(wnd);
g3d. set_z_buffer(z_buf);
g3d. set_object(obj); Установите цвет поверхности
g3d. set_surf(Color. green); Установите цвет сетки
g3d. set_grid(Color. black); Выполните вычисления
pic=g3d. draw(pic, grid); Теперь можете использовать полученное изображение:
…
paint(Graphics g) {
…
g. drawImage(pic,0,0,this);
…
}
…




