www.pudn.com > CurveEditor.rar > VectorOperator.cpp


/* 
*	File name:		VectorOperator.cpp 
*	Version:		1.0.0.1 
*	Programmer:		A.George 
*	Organization:	 
*	Date(start):	10/7/1999 
*	Date(finish):	 
*	Description: 
					This module defines a set of operator for vector calculation. 
*/ 
 
#include "stdafx.h" 
#include  
#include "VectorOperator.h" 
 
VECTOR operator + ( VECTOR& a, VECTOR& b) 
{ 
	VECTOR c; 
	c.x = a.x + b.x; 
	c.y = a.y + b.y; 
	c.z = a.z + b.z; 
 
	return c; 
} 
 
VECTOR operator - (VECTOR& a, VECTOR& b) 
{ 
	VECTOR c; 
	c.x = a.x - b.x; 
	c.y = a.y - b.y; 
	c.z = a.z - b.z; 
 
	return c; 
} 
 
/* Dot product */ 
double operator *(VECTOR& a, VECTOR& b) 
{ 
	return a.x*b.x + a.y*b.y + a.z*b.z; 
} 
 
/* Number product */ 
VECTOR operator *(double k, VECTOR&a) 
{ 
	VECTOR b; 
	b.x = k*a.x; 
	b.y = k*a.y; 
	b.z = k*a.z; 
 
	return b; 
} 
 
/* Cross product */ 
VECTOR operator %(VECTOR& a, VECTOR& b) 
{ 
	VECTOR c; 
	c.x = a.y*b.z - a.z*b.y; 
	c.y = a.z*b.x - a.x*b.z; 
	c.z = a.x*b.y - a.y*b.x; 
 
	return c; 
} 
 
VECTOR2D operator *(double k, VECTOR2D& a) 
{ 
	VECTOR2D c; 
	c.x = k*a.x; 
	c.y = k*a.y; 
 
	return c; 
} 
 
double Module(VECTOR2D a) 
{ 
	return sqrt(a.x*a.x +a.y*a.y); 
} 
 
double Module(VECTOR a) 
{ 
	return sqrt(a.x*a.x + a.y*a.y + a.z*a.z); 
} 
 
VECTOR2D operator /(VECTOR2D a, double k) 
{ 
	VECTOR2D b; 
	b.x = a.x/k; 
	b.y = a.y/k; 
 
	return b; 
} 
 
VECTOR2D operator *(VECTOR2D a, double k) 
{ 
	VECTOR2D b; 
	b.x = a.x*k; 
	b.y = a.y*k; 
 
	return b; 
}