class MakeFace3D
Назначение
Имидж построения трехмерной поверхности
Описание
Имидж строит трехмерную поверхность. Прямоугольная сетка размером : SizeX * SizeY
Число вершин stepx * stepy соответственно. Кроме того каждой точке на этой ячейке можно установить произвольную высоту и цвет. В результате строится трехмерная поверхность.
В начальный момент времени имидж создает матрицы точек и матрицу цветов.
Матрица точек: [SizeY: SizeX*3] - где три соседние ячейки (y,x; y,x+1; y,x+2) определяют координаты отдельной точки.
Матрица цветов: [SizeY: SizeX] -где каждый элемент цвет в соответствующей точке.
Номера этих матриц записываются в переменные Mat и MatC.
Далее для каждой точки посылается сообщение имиджу указанному в переменной Calculator. Он может иметь следующий текст:
FLOAT x,y,z,_enable
_x:=x*2*PI+PI
_y:=y*2*PI+PI
c:=1/5*sin(~_x)*cos(2*~_y) - 3/2*cos(7*((~_x-PI)^2 + (_y-PI)^2)/4)*exp(-((~_x-PI)^2 + (_y-PI)^2))
z:=-40*~c
color := RGB(255, 255*(x+0.5), 255-255*(y+0.5))
В переменные x,y записываются числа от 0 до 1. Имидж по ним должен подсчитать значение z и переменной Color.
Далее на каждом шаге обновление поверхности зависит от переменной UpdateMode.
·Если установлен нулевой бит то посылаются сообщения как и при создании поверхности. Иначе другие имиджи должны сами модифицировать матрицы точек и цветов. Изменение матрицы напрямую гораздо быстрее, чем посылка сообщений;
·Если установлен первый бит то меняются координаты точек;
·Если установлен второй бит то изменяются цвета;
·При установке третий бита не происходит обнуление переменной UpdateMode.
Переменные
Название |
Тип |
Описание |
HSpace3d |
|
Дескриптор трехмерного пространства |
HObject3d |
|
Дескриптор поверхности |
stepx,stepy |
|
Количество ячеек по X,Y |
sizex,sizey |
|
Размер сетки по X,Y в мировой системе координат |
Calculator |
|
Имидж вычисляющий высоту и цвет заданного столбика |
from_x |
|
Начало диапазона для функции расчета |
to_x |
|
Конец диапазона для функции расчета |
from_y |
|
Начало диапазона для функции расчета |
to_y |
|
Конец диапазона для функции расчета |
_enable |
|
Управление работой |
UpdateMode |
|
биты :&1 - посылаются сообщения | &2 - обновляются точки | &4 - обновляются цвета| &8 updatemode не сбрасывается в ноль |
Mat |
|
Матрица с точками |
MatC |
|
Матрица с цветами ячеек |
_enable |
|
флаг, управляющий работой объекта |
см. Пример Surf3d.
см. Библиотека имиджей 3D графикиlibrary_Graph3d.lib
Created with the Personal Edition of HelpNDoc: Easily create Help documents