SetObjectPoints3d
Синтаксис
FLOAT SetObjectPoints3d(HANDLE HSpace3d, HANDLE hObject3d, FLOAT Matrix)
Описание
Функция позволяет установить все точки трехмерного объекта взяв из указанной матрицы.
Параметры
HSpace3d дескриптор трехмерного пространства
hObject3d дескриптор проекции трехмерного пространства
Matrix номер матрицы
Возвращаемое значение
Возвращается результат выполнения этой операции.
Пример
// Данный пример вращает трехмерные точки вокруг локальной оси z.
// Получается эффект Twist
HANDLE HSpace3d,HObject
if(HSpace3d &&HObject)
matrix:=GetObjectPoints3dGetObjectPoints3d (HSpace3d,HObject,matrix)
rez:=mdimmdim (~matrix,~ymin,~xmin,~ymax,~xmax)
i:=~ymin
while(~i<=~ymax)
// получаем точку
x:=mgetMGet (~matrix,~i,0,1)
y:=mget(~matrix,~i,1,1)
z:=mget(~matrix,~i,2,1)
a:=~z/100 // получаем угол
// вращаем точку
_x:=~x*cosCos (~a) - ~y*sin(~a)
_y:=~x*sinSin (~a) + ~y*cos(~a)
// заносим новые координаты в матрицу
rez:=mputMPut (~matrix,~i,0,~_x,1)
rez:=mput(~matrix,~i,1,~_y,1)
i:=~i+1
endwhile
rez:=SetObjectPoints3d(HSpace3d,HObject,~matrix)
_disable:=1
endif
// или Bend эффект - загибание объекта (заменить выделенный фрагмент)
a:=~z/2000 // получаем угол
_x:=~(x-1000)*cos(~a) - ~z*sin(~a)+1000
_z:=~(x-1000)*sin(~a) + ~z*cos(~a)
rez:=mput(~matrix,~i,0,~_x,1)
rez:=mput(~matrix,~i,2,~_z,1)
// или полностью
HANDLE HSpace3d,HObject
if(HSpace3d &&HObject)
matrix:=GetObjectPoints3d(HSpace3d,HObject,matrix)
rez:=mdim(~matrix,~ymin,~xmin,~ymax,~xmax)
i:=~ymin
while(~i<=~ymax)
x:=mget(~matrix,~i,0,1)
y:=mget(~matrix,~i,1,1)
z:=mget(~matrix,~i,2,1)
a:=~z/2000 // получаем угол
_x:=~(x-1000)*cos(~a) - ~z*sin(~a)+1000
_z:=~(x-1000)*sin(~a) + ~z*cos(~a)
rez:=mput(~matrix,~i,0,~_x,1)
rez:=mput(~matrix,~i,2,~_z,1)
i:=~i+1
endwhile
rez:=SetObjectPoints3d(HSpace3d,HObject,~matrix)
_disable:=1
endif
Created with the Personal Edition of HelpNDoc: Elevate Your CHM Help Files with HelpNDoc's Advanced Customization Options