Синтаксис

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