bprog.gif (6262 bytes)

3d.gif (2310 bytes)

 

      Эта страничка посвящена библиотеке 3d  - работа с трехмерными графическими объектами (проволочными моделями) для языка программирования С++.
      Работа с 3d графикой - последний писк моды в наши дни. Большинство имеющихся на данный момент ресурсов по этому поводу достаточно объемны и сложны. Данная библиотека основана всего на одном классе и может строить проволочные модели практически любой сложности с применением перспективы, изменением координат, поворотами и перемещениями в пространстве. Несколько объектов позволят создать сцену. Все алгоритмы оптимизированы для работы в стандартном графическом режиме языка С++. Основываясь на этой библиотеке легко создать гараздо более мощное средство для работы с 3d-графикой.
      Далее будут рассмотрены:

Руководство пользователя
Техническая поддержка
Download (Скачивание)

Начало страницы


      Руководство пользователя.

      Ниже перечислены классы, процедуры и функции библиотеки с описанием их работы.

struct options - класс настроек параметров отображения объекта

float rho - расстояние до наблюдателя

float phi - угол поворота по вертикали (измеряется от оси Oz)

flaot theta - угол поворота по горизонтали (измеряется от оси Ox)

float d - расстояние от точки наблюдения до экрана

float xO,yO,zO - координаты начала координат системы отсчета, связанной с объектом

int xC, yC - координаты проецирования начала координат на плоскость экрана (центр экрана в большинстве случаев)

options operator>>(FILE*) - вывод информации о настройках параметров изображения в файл

options operator<<(FILE*) - загрузка информации о настройках параметров изображения из файла

struct object_3d - класс трехмерной проволосной модели

unsigned int nv - число вершин в модели

unsigned int *p - указатель на вектор степеней вершин (вектор степеней вершин это массив, длиной равной количеству вершин, каждый элемент которого равен числу ребер, входящих в данную вершину)

unsigned int **r - двумерная таблица смежности вершин (эта таблица содержит строк по количеству вершин в объекте, а каждая строка имеет длину, равную содержимому соответствующего элемента массива p, а каждый элемент содержит номер вершины, с которой имеет общее ребро вершина с номером, равным номеру строки)

float *x - координата X для каждой вершины

float *y - координата Y для каждой вершины

float *z - координата Z для каждой вершины

object_3d() { nv=0; p=0; r=0; x=0; y=0; z=0; } - конструктор по умолчанию

object_3d(object_3d&) - конструктор с приравниванием для объектов класса object_3d

~object_3d() { cnv(); } - деструктор по умолчанию

object_3d& addv(float xc,float yc,float zc) - добавление вершины в объект
xc, yc, zc - координаты вновь созданной вершины

object_3d& addr(unsigned int a,unsigned int b) - добавление ребра
a, b - номера вершин, которые необходимо соединить ребром  (вершины нумеруются с нуля)

object_3d& delv(unsigned int xc,unsigned int yc,unsigned int zc) - удаление вершины со всеми ребрами
xc, yc, zc - координаты вершины, подлежащей удалению

object_3d& delv(unsigned int t) - удаление вершины со всеми ребрами
t - номер вершины (вершины немеруются с нуля)

object_3d& delr(unsigned int a,unsigned int b) - удаление ребра
a, b - номера вершин, для которых будет удалено ребро, их соединяющее

unsigned int getv() - возвращает число вершин в объекте

unsigned long getr() - возвращает число ребер в объекте

long getn(unsigned int xc,unsigned int yc,unsigned int zc) - возвращает номер вершины по ее координатам
xc, yc, zc - координаты вершины

int isv(unsigned int xc,unsigned int yc,unsigned int zc) - проверяет наличие вершині по ее координатам
xc, yc, zc - координаты вершины

int isr(unsigned int a,unsigned int b) - проверяет начилие ребра между вершинами
a, b - координаты вершин

object_3d& operator=(object_3d&) - опреция присваивания

object_3d& operator<<(FILE*) - ввод информации об объекте из файла

object_3d& operator>>(FILE*) - вывод информации об объекте в файл

int    ver() - проверка правильности заполнения объекта

void cnv() - очистка динамически распределяемой памяти, занятой объектом (удаление объекта из памяти и обнуление фрейма)

void coeff (options &op) - расчет коэффициентов прорисовки по данным структуры параметров изображения (эту функцию ОБЯЗАТЕЛЬНО необходимо вызывать при каждом изменении параметров отображения объекта - т.е. если вы хотите вывести очередной объект под другим углом или в другом месте, то необходимо вызвать эту процедуру с новыми параметрами изображения)
op - структура параметров изображения

void perspective (float x,float y,float z,float &X,float &Y) - расчет экранных координат с учетом перстпективы
x, y, z - координаты точки в реальном пространчтве
X, Y - координаты точки на экране (т.к. это ссылки, то результат возвращается в этих переменных)

void viewing (float x,float y, float z,float &xe,float &ye,float &ze) - расчет координат точки в трехмерном пространстве при текущих углах поворота
x, y, z - начальные координаты точки
xe, ye, ze - координаты после поворота (результат возвращается в этих переменных)

void mv (float x,float y,float z) - перемещение рисующего "пера" в заданную позицию без прорисовки (аналогично moveto)
x, y, z - координаты точки, в которую перемещается "перо"

void dw (float x,float y,float z) - перемещение рисующего "пера" в заданную позицию с прорисовкой (аналогично lineto)
x, y, z - координаты точки, в которую перемещается "перо"

void ln (float x1,float y1,float z1,float x2,float y2,float z2) - прорисовка отрезка
x1, y1, z1, x2, y2, z2 - координаты концов отрезка

void paint (object_3d &ob,options &op) - прорисовка всей модели с данными параметрами отображения
ob - ссылка на объект, содержащий информацию о модели
op - ссылка на объект, содержащий параметры отображения

Начало страницы


      Техническая поддержка.

      На данный момент вы можете присылать свои вопросы и замечания, а так же предложения и отзывы по адресу il_mattheus@yahoo.com или il_mattheus@mail.ru. Если это что-то срочное, рекомендую начинать заголовок письма с знаков "!!!". В общем случае я обязуюсь рассмотреть вашу заявку не более, чем в 3-х дневный срок. Естейственно, вы должны оставить координаты обратной связи, если они отличны от адреса отправителя, по возможности как можно более кратко и четко описать суть проблемы и предпринятые вами шаги для ее устранения. Во избежание каких-либо недоразумений хотелось бы знать как, где и при каких обстаятельствах возникла проблема.
.

Начало страницы


      Download (Скачивание).

      Архив 3d.zip (2,8 kb)  


Библиотеки
13h | 3d | bgitext | bmpimage


Рубрики сайта
Страничка Ilmat | Новости | Программы | Игры | Программисту | Стихи | Ссылки | Об авторе
Основная страница

Hosted by uCoz