⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vector.cpp

📁 本文件中收录了多种3D文件格式
💻 CPP
字号:
// VECTOR.cpp: implementation of the VECTOR class.////////////////////////////////////////////////////////////////////////#include <cmath>#include "VECTOR.h"// This class VECTOR comes from an article about rigid body// animation published on www.gamasutra.com so it may// follow its own license. Please check gamasutra at// http://www.gamasutra.com/features/19990702/data_structures_01.htm// or just write your own to replace it.//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////SCALAR& VECTOR::operator [] ( const long i ){	return *((&x) + i);}//compareconst bool VECTOR::operator == ( const VECTOR& v ) const{	return (v.x==x && v.y==y && v.z==z);}const bool VECTOR::operator != ( const VECTOR& v ) const{	return !(v == *this);}//negateconst VECTOR VECTOR::operator - () const{	return VECTOR( -x, -y, -z );}//assignconst VECTOR& VECTOR::operator = ( const VECTOR& v ){	x = v.x;	y = v.y;	z = v.z;	return *this;}//incrementconst VECTOR& VECTOR::operator += ( const VECTOR& v ) {	x+=v.x;	y+=v.y;	z+=v.z;	return *this;} //decrementconst VECTOR& VECTOR::operator -= ( const VECTOR& v ) {	x-=v.x;	y-=v.y;	z-=v.z;	return *this;} //self-multiplyconst VECTOR& VECTOR::operator *= ( const SCALAR& s ){	x*=s;	y*=s;	z*=s;	return *this;}//self-divideconst VECTOR& VECTOR::operator /= ( const SCALAR& s ){	const SCALAR r = 1 / s;	x *= r;	y *= r;	z *= r;	return *this;}//addconst VECTOR VECTOR::operator + ( const VECTOR& v ) const{	return VECTOR(x + v.x, y + v.y, z + v.z);}//subtractconst VECTOR VECTOR::operator - ( const VECTOR& v ) const{	return VECTOR(x - v.x, y - v.y, z - v.z);}//post-multiply by a scalarconst VECTOR VECTOR::operator * ( const SCALAR& s ) const{	return VECTOR( x*s, y*s, z*s );}//divideconst VECTOR VECTOR::operator / (SCALAR s) const{	s = 1/s;	return VECTOR( s*x, s*y, s*z );}//cross productconst VECTOR VECTOR::cross( const VECTOR& v ) const{	//Davis, Snider, "Introduction to Vector Analysis", p. 44	return VECTOR( y*v.z - z*v.y, z*v.x - x*v.z, x*v.y - y*v.x );}//scalar dot productconst SCALAR VECTOR::dot( const VECTOR& v ) const{	return x*v.x + y*v.y + z*v.z;}//lengthconst SCALAR VECTOR::length() const{	return (SCALAR)sqrt( (double)this->dot(*this) );}//unit vectorconst VECTOR VECTOR::unit() const{	return (*this) / length();}//make this a unit vectorvoid VECTOR::normalize(){	(*this) /= length();}//equal within an error econst bool VECTOR::nearlyEquals( const VECTOR& v, const SCALAR e ) const{	return fabs(x-v.x)<e && fabs(y-v.y)<e && fabs(z-v.z)<e;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -