Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 5 / ROMA / POINT

.CPP
Скачиваний:
20
Добавлен:
16.04.2013
Размер:
1.94 Кб
Скачать
#include "types.h"
class POINT {
public :
REAL v [3];
REAL vn [2];
REAL offset[3];
POINT ( void );
POINT ( REAL x, REAL y, REAL z );
POINT ( POINT& Point );
POINT& operator = ( POINT& Point );
POINT& operator -= ( POINT& Point );
POINT& operator += ( POINT& Point );
POINT& operator /= ( REAL Value );
POINT& operator *= ( REAL Value );
void Set ( REAL x, REAL y, REAL z);
void Perspective();
void SetOffset(int,int,int,int);
};

POINT :: POINT ( void )
{
}

POINT :: POINT ( REAL x, REAL y, REAL z ) {
v [0] = x;
v [1] = y;
v [2] = z;
}


POINT :: POINT ( POINT& Point ){
v [0] = Point.v [0];
v [1] = Point.v [1];
v [2] = Point.v [2];
vn[0] = Point.vn[0];
vn[1] = Point.vn[1];
}

void POINT :: Set ( REAL x, REAL y, REAL z){
v [0] = x;
v [1] = y;
v [2] = z;
}

void POINT :: Perspective() {
vn[0]=256*v[0]/(v[2]-offset[2])+offset[0];
vn[1]=256*v[1]/(v[2]-offset[2])+offset[1];
};

void POINT::SetOffset(int xoff, int yoff, int zoff,int mode =0) {
if (mode) {
offset[0]+=xoff;
offset[1]+=yoff;
offset[2]+=zoff;
} else {
offset[0]=xoff;
offset[1]=yoff;
offset[2]=zoff;
};
};

POINT& POINT :: operator = ( POINT& Point ){
v [0] = Point.v [0];
v [1] = Point.v [1];
v [2] = Point.v [2];
vn [0] = Point.vn [0];
vn [1] = Point.vn [1];

return ( *this );
}

POINT& POINT :: operator -= ( POINT& Point ){
v [0] -= Point.v [0];
v [1] -= Point.v [1];
v [2] -= Point.v [2];
return ( *this );
}

POINT& POINT :: operator += ( POINT& Point ){
v [0] += Point.v [0];
v [1] += Point.v [1];
v [2] += Point.v [2];
return ( *this );
}

POINT& POINT :: operator /= ( REAL Value ){
v [0] /= Value;
v [1] /= Value;
v [2] /= Value;
Perspective();
return ( *this );
}

POINT& POINT :: operator *= ( REAL Amount ){
v [0] *= Amount;
v [1] *= Amount;
v [2] *= Amount;
return ( *this );
}

Соседние файлы в папке ROMA