Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include "point.cpp"
class VECTOR : public POINT {
public :
VECTOR ( void );
VECTOR ( REAL x, REAL y, REAL z );
VECTOR ( REAL x, REAL y, REAL z ,REAL w);
VECTOR ( VECTOR& Vector );
VECTOR ( POINT& Point );
VECTOR ( POINT& From, POINT& To );
VECTOR ( POINT *From, POINT *To );
void Set ( REAL x, REAL y, REAL z );
void Cross ( VECTOR& v );
REAL Dot ( VECTOR& v );
REAL Length ( void );
void Unit ( void );
void Make ( POINT From, POINT To );
VECTOR& operator = ( POINT& Point );
void RotateXZ ( REAL Angle );
void RotateYZ ( REAL Angle );
};
////////
VECTOR :: VECTOR ( void ){
}
VECTOR :: VECTOR ( REAL x, REAL y, REAL z ){
v [0] = x;
v [1] = y;
v [2] = z;
}
///
VECTOR :: VECTOR ( REAL x, REAL y, REAL z ,REAL w){
v [0] = x;
v [1] = y;
v [2] = z;
v [3] = w;
}
VECTOR :: VECTOR ( VECTOR& Vector ){
v [0] = Vector.v [0];
v [1] = Vector.v [1];
v [2] = Vector.v [2];
}
VECTOR :: VECTOR ( POINT& Point ){
v [0] = Point.v [0];
v [1] = Point.v [1];
v [2] = Point.v [2];
}
VECTOR :: VECTOR ( POINT& From, POINT& To ){
v [0] = To.v [0] - From.v [0];
v [1] = To.v [1] - From.v [1];
v [2] = To.v [2] - From.v [2];
}
VECTOR :: VECTOR ( POINT *From, POINT *To ){
v [0] = To->v [0] - From->v [0];
v [1] = To->v [1] - From->v [1];
v [2] = To->v [2] - From->v [2];
}
void VECTOR :: Set ( REAL x, REAL y, REAL z ){
v [0] = x;
v [1] = y;
v [2] = z;
}
void VECTOR :: Make ( POINT From, POINT To ){
v [0] = To.v [0] - From.v [0];
v [1] = To.v [1] - From.v [1];
v [2] = To.v [2] - From.v [2];
}
void VECTOR :: Cross ( VECTOR& u ){
REAL x, y, z;
x = ( v [1] * u.v [2] ) - ( v [2] * u.v [1] );
y = ( v [2] * u.v [0] ) - ( v [0] * u.v [2] );
z = ( v [0] * u.v [1] ) - ( v [1] * u.v [0] );
v [0] = x;
v [1] = y;
v [2] = z;
}
REAL VECTOR :: Dot ( VECTOR& u )
{
return ( v [0] * u.v [0] + v [1] * u.v [1] + v [2] * u.v [2] );
}
REAL VECTOR :: Length ( void ){
return ( sqrt ( v [0] * v [0] + v [1] * v [1] + v [2] * v [2] ) );
}
void VECTOR :: Unit ( void ){
REAL w;
w = Length ();
v [0] /= w;
v [1] /= w;
v [2] /= w;
}
VECTOR& VECTOR :: operator = ( POINT& Point ){
v [0] = Point.v [0];
v [1] = Point.v [1];
v [2] = Point.v [2];
return ( *this );
}
void VECTOR :: RotateXZ ( REAL Angle ){
REAL Radians = RADIAN ( Angle ), x, z, Cos, Sin;
Cos = cos ( Radians );
Sin = sin ( Radians );
x = v [0] * Cos - v [2] * Sin;
z = v [0] * Sin + v [2] * Cos;
v [0] = x;
v [2] = z;
}
void VECTOR :: RotateYZ ( REAL Angle ){
REAL Radians = RADIAN ( Angle ), x, y, Cos, Sin;
Cos = cos ( Radians );
Sin = sin ( Radians );
x = v [1] * Cos - v [2] * Sin;
y = v [1] * Sin + v [2] * Cos;
v [1] = x;
v [2] = y;
}