亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? geometry.cpp

?? robocuo相關資料robocuo相關資料
?? CPP
字號:
#include "Geometry.h"#include "Matrix.h"CS PrintSystem;bool CMP::eq(double a, double b){	return fabs(a-b)<EPS;}bool CMP::ne(double a, double b){	return fabs(a-b)>=EPS;}bool CMP::lt(double a, double b){	return b-a>=EPS;}bool CMP::gt(double a, double b){	return a-b>=EPS;}bool CMP::le(double a, double b){	return b-a>-EPS;}bool CMP::ge(double a, double b){	return a-b>-EPS;}//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//-----------------------------------> Vector2d <---------------------------------//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Vector2d::Vector2d ():x(0), y(0){}Vector2d::Vector2d(const Vector3d &v):x(v.X()), y(v.Y()){}Vector2d::Vector2d (double a, double b, CS _cs){	if(_cs==CARTESIAN)	{		x=a;		y=b;	}	else	{		x=a* Angle::cosDeg(b);		y=a* Angle::sinDeg(b);	}}void Vector2d::setVector( double a, double b, CS _cs ){	if(_cs==CARTESIAN)	{		x=a;		y=b;	}	else	{		x=a* Angle::cosDeg(b);		y=a* Angle::sinDeg(b);	}}double & Vector2d::X(){	return x;}double & Vector2d::Y(){	return y;}Vector2d Vector2d::operator-(){	return Vector2d(-x,-y);}Vector2d Vector2d::operator+(Vector2d p){	return Vector2d(x+p.x, y+p.y);}Vector2d Vector2d::operator+=(Vector2d p){	return Vector2d(x+=p.x, y+=p.y);}Vector2d Vector2d::operator-(Vector2d p){	return Vector2d(x-p.x, y-p.y);}Vector2d Vector2d::operator-=(Vector2d p){	return Vector2d(x-=p.x, y-=p.y);}Vector2d Vector2d::operator*(double d){	return Vector2d(x*d, y*d);}Vector2d Vector2d::operator*=(double d){	return Vector2d(x*=d, y*=d);}Vector2d Vector2d::operator*( Vector2d p ){	return Vector2d( x * p.x, y * p.y );}Vector2d Vector2d::operator*=( Vector2d p ){	return Vector2d( x *= p.x, y *= p.y );}Vector2d Vector2d::operator/( Vector2d p ){	if( CMP::eq( p.y, 0 ) )		return p;	return Vector2d( x / p.x, y / p.y );}Vector2d Vector2d::operator/=( Vector2d p ){	if( CMP::eq( p.y, 0 ) )		return p;	return Vector2d( x /= p.x, y /= p.y );}// Divid Vector by a constant// param d double number to divide by// throws string throws a string when d = 0Vector2d Vector2d::operator/(double d){	if(CMP::eq(d,0))		cerr << string("Vector2d::operator/") << endl;	return Vector2d(x/d, y/d);}Vector2d Vector2d::operator/=(double d){	if(CMP::eq(d,0))		cerr << string("Vector2d::operator/=") << endl;	return Vector2d(x/=d, y/=d);}bool Vector2d::operator==(Vector2d p){	return CMP::eq(x,p.x) && CMP::eq(y,p.y);}bool Vector2d::operator!=(Vector2d p){	return CMP::ne(x,p.x) || CMP::ne(y,p.y);}double Vector2d::magnitude() const{	return sqrt(x*x+y*y);}void Vector2d::setMagnitude(double d){	if(CMP::eq(x*x+y*y,0))		cerr << string("Vector2d::setMagnitude") << endl;	*this *= d/magnitude();}double Vector2d::angle() const{	if(CMP::eq(x,0) && CMP::eq(y,0))		cerr << string("Vector2d::angle") << endl;	return Angle::normalizeAngle(Angle::atan2Deg(y,x));}double Vector2d::angleTo(Vector2d v){	return Angle::normalizeAngle(angle()-v.angle());}double Vector2d::distance(Vector2d p){	return (*this-p).magnitude();}void Vector2d::rotate(double a){	double tx = x*Angle::cosDeg(a) - y*Angle::sinDeg(a);	double ty = y*Angle::sinDeg(a) + y*Angle::cosDeg(a);	x = tx;	y = ty;}Vector2d Vector2d::rotate(Vector2d c, double d){	Vector2d a,b=*this-c;	a.x= b.x* Angle::cosDeg(d)-b.y* Angle::sinDeg(d);	a.y= b.x* Angle::sinDeg(d)+b.y* Angle::cosDeg(d);	return *this=a+c;}Vector2d Vector2d::rotate(Vector2d c, double Sin, double Cos){	Vector2d a,b=*this-c;	a.x= b.x*Cos - b.y*Sin;	a.y= b.x*Sin + b.y*Cos;	return *this=a+c;}//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//-----------------------------------> Vector3d <---------------------------------//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Vector3d operator * ( double d, const Vector3d &v){	return ( Vector3d( v.X() * d, v.Y() * d, v.Z() * d  ) );}Vector3d::Vector3d (double a , double b , double c , CS cs){	if(cs==CARTESIAN)	{		mX=a;		mY=b;		mZ=c;	}	else	{		mX = a * Angle::cosDeg( c ) * Angle::cosDeg ( b ) ;		mY = a * Angle::cosDeg( c ) * Angle::sinDeg ( b ) ;		mZ = a * Angle::sinDeg( c )  ;	}}void Vector3d::setVector( double a , double b , double c , CS cs ){	if(cs==CARTESIAN)	{		mX=a;		mY=b;		mZ=c;	}	else	{		mX = a * Angle::cosDeg( c ) * Angle::cosDeg ( b ) ;		mY = a * Angle::cosDeg( c ) * Angle::sinDeg ( b ) ;		mZ = a * Angle::sinDeg( c )  ;	}}Vector2d Vector3d :: get_vector2d(){	return Vector2d(mX,mY);}Vector3d::Vector3d (Vector2d p){	mX=p.x;	mY=p.y;	mZ=0;}void Vector3d::setVector( Vector2d p ){	mX=p.x;	mY=p.y;	mZ=0;}Vector3d Vector3d::operator-(){	return Vector3d(-mX, -mY, -mZ);}Vector3d Vector3d::operator+(Vector3d p) const{	return Vector3d(mX+p.mX, mY+p.mY, mZ+p.mZ);}Vector3d Vector3d::operator+=(Vector3d p){	return Vector3d(mX+=p.mX, mY+=p.mY, mZ+=p.mZ);}Vector3d Vector3d::operator-(Vector3d p) const{	return Vector3d(mX-p.mX, mY-p.mY, mZ-p.mZ);}Vector3d Vector3d::operator-=(Vector3d p){	return Vector3d(mX-=p.mX, mY-=p.mY, mZ-=p.mZ);}Vector3d Vector3d::operator*(double d) const{	return Vector3d(mX*d, mY*d, mZ*d);}Vector3d Vector3d::operator*(Vector3d p) const{	return Vector3d(mX*p.mX, mY*p.mY, mZ*p.mZ);}// operator % : Cross multiplication of two VectorVector3d Vector3d::operator % ( const Vector3d &p          )const{	return Vector3d (mY * p.mZ - p.mY * mZ, p.mX * mZ - mX * p.mZ, mX * p.mY - p.mX * mY);}Vector3d Vector3d::operator*=(double d){	return Vector3d(mX*=d, mY*=d, mZ*=d);}double Vector3d::operator &(const Vector3d &p) const{	return ( mX * p.mX + mY * p.mY + mZ * p.mZ );}Vector3d Vector3d::operator/(double d) const{	if(CMP::eq(d,0))		cerr<<string("Vector3d::operator/")<<endl;	return Vector3d(mX/d, mY/d, mZ/d);}Vector3d Vector3d::operator / (Vector3d p )const{	return ( Vector3d( mX / p.mX, mY / p.mY, mZ / p.mZ ) );}Vector3d Vector3d::operator=(double d){	mX = mY = mZ = d;}Vector3d Vector3d::operator /= ( double d ){	if(CMP::eq(d,0))		cerr<<string("Vector3d::operator/=")<<endl;	return Vector3d(mX/=d, mY/=d, mZ/=d);}void Vector3d::operator /=(Vector3d &p ){	if ( p.mX != 0 )		mX /= p.mX;	else		cerr << "(Vector3d::operator /=) divide by zero in X factor" << endl;	if ( p.mY != 0 )		mY /= p.mY;	else		cerr << "(Vector3d::operator /=) divide by zero in Y factor" << endl;	if ( p.mZ != 0 )		mZ /= p.mZ;	else		cerr << "(Vector3d::operator /=) divide by zero in Z factor" << endl;}bool Vector3d::operator==(Vector3d p){	return CMP::eq(mX,p.mX) && CMP::eq(mY,p.mY) && CMP::eq(mZ,p.mZ);}bool Vector3d::operator!=(Vector3d p){	return CMP::ne(mX,p.mX) || CMP::ne(mY,p.mY) || CMP::ne(mZ,p.mZ);}double & Vector3d::X(){	return mX;}double Vector3d::X() const{	return mX;}double & Vector3d::Y(){	return mY;}double  Vector3d::Y() const{	return mY;}double & Vector3d::Z(){	return mZ;}double Vector3d::Z() const{	return mZ;}double Vector3d::theta()const{	return Angle::normalizeAngle2(Angle::atan2Deg(mY,mX));}double Vector3d::phi()const{	if(CMP::eq(magnitude(),0))		cerr<<string("Vector3d::phi")<<endl;	return Angle::normalizeAngle2(Angle::asinDeg(mZ/magnitude()));}double Vector3d::magnitude() const{	return sqrt(sqr(mX)+sqr(mY)+sqr(mZ));}Vector3d Vector3d::getNormalized() const{	Vector3d vec(*this);	vec.setMagnitude(1);	return vec;}Vector3d Vector3d::normalize(){	setMagnitude(1);	return *this;}double Vector3d::getDistanceTo(Vector3d vec){	return (*this - vec).magnitude();}void Vector3d::setTheta(double theta){	*this=Vector3d(magnitude(),theta, phi(),POLAR);}void Vector3d::setPhi(double phi){	*this=Vector3d(magnitude(),theta(), phi,POLAR);}void Vector3d::setMagnitude(double magnitude){	*this=Vector3d(magnitude,theta(), phi(),POLAR);}AngDeg Vector3d::Angle(Vector3d vector){	if(CMP::eq(magnitude(),0)||CMP::eq(vector.magnitude(),0))		cerr<<string("Vector::Angle")<<endl;	double im=mX*vector.mX + mY*vector.mY + mZ*vector.mZ;	return Angle::acosDeg(im/(magnitude()*vector.magnitude()));}Vector3d Vector3d::rotate2d( double ang ){	double dMag    = magnitude();	double dNewDir = theta() + ang;	mX = dMag * Angle::cosDeg(dNewDir);	mY = dMag * Angle::sinDeg(dNewDir);	return *this;}Vector3d Vector3d::rotate( double ang ){	double dMag    = magnitude();	double dNewDir = theta() + ang;	setVector( dMag, dNewDir, POLAR );	return ( *this );}double Vector3d::ang(){	double mod = mX * mX + mY * mY;	if( mod > 0 )	{		double r = sqrt( mod );		return ( mY >= 0 ?  acos( mX / r ) : - acos( mX / r ) ) * 180 / Pi;	}	return 0;}Vector3d::operator Vector2d (){	return Vector2d(mX,mY);}//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//-------------------------------------> Angle <----------------------------------//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++AngDeg Angle::normalizeAngle( AngDeg angle ){	while( angle >= 360.0  ) angle -= 360.0;	while( angle < 0.0 ) angle += 360.0;	return ( angle );}AngDeg Angle::normalizeAngle2( AngDeg angle ){	while( angle > 180.0  ) angle -= 360.0;	while( angle < -180.0 ) angle += 360.0;	return ( angle );}double Angle::minAngle(AngDeg a, AngDeg b){	if(Max(a,b)-Min(a,b)<=180)		return Min(a,b);	return Max(a,b);}double Angle::maxAngle(AngDeg a, AngDeg b){	if(Max(a,b)-Min(a,b)<=180)		return Max(a,b);	return Min(a,b);}int Angle::cmpAngle(AngDeg a, AngDeg b){	a=normalizeAngle(a);	b=normalizeAngle(b);	if(CMP::eq(a,b))		return 0;	if(Max(a,b)-Min(a,b)<=180)	{		if(CMP::lt(a,b))			return -1;		if(CMP::gt(a,b))			return 1;	}	if(CMP::lt(a,b))		return 1;	if(CMP::gt(a,b))		return -11;}AngDeg Angle::bisectorAngle( AngDeg a, AngDeg b ){	a=normalizeAngle(a);	b=normalizeAngle(b);	if(Max(a,b)-Min(a,b)<=180)		return (a+b)/2;	return normalizeAngle((a+b)/2+180);}/*Ray Angle::bisector ( Vector2d center, Vector2d leftLeg, Vector2d rightLeg ){	return Ray(center, bisectorAngle( (leftLeg-center).angle(), (rightLeg-center).angle() ) );}*/double Angle::pointsAngle ( Vector2d center, Vector2d leftLeg, Vector2d rightLeg ){	return fabs ( normalizeAngle2 (   ( leftLeg - center ).angle ()  -  ( rightLeg - center ).angle () ) );}bool Angle::isAngInRange( AngDeg ang1, AngDeg ang2, AngDeg ang ){// normalize all angles	ang=normalizeAngle(ang);	ang1=normalizeAngle(ang1);	ang2=normalizeAngle(ang2);	AngDeg angMin=minAngle(ang1, ang2);	AngDeg angMax=maxAngle(ang1, ang2);	if( angMin < angMax )						  // 0 ---false-- angMin ---true-----angMax---false--360		return angMin < ang && ang < angMax ;	else										  // 0 ---true--- angMax ---false----angMin---true---360		return !( angMax < ang && ang < angMin );}bool Angle::isPointInRange( Vector2d center, Vector2d leftLeg, Vector2d rightLeg , Vector2d p){	return isAngInRange((leftLeg-center).angle(),(rightLeg-center).angle(),(p-center).angle());}AngDeg Angle::Rad2Deg( AngRad x ){	return ( x * 180 / Pi );}AngRad Angle::Deg2Rad( AngDeg x ){	return ( x * Pi / 180 );}double Angle::cosDeg( AngDeg x ){	return ( cos( Deg2Rad( x ) ) );}double Angle::sinDeg( AngDeg x ){	return ( sin( Deg2Rad( x ) ) );}double Angle::tanDeg( AngDeg x ){	return ( tan( Deg2Rad( x ) ) );}AngDeg Angle::atanDeg( double x ){	return ( Rad2Deg( atan( x ) ) );}double Angle::atan2Deg( double x, double y ){	return ( Rad2Deg( atan2( x, y ) ) );}AngDeg Angle::acosDeg( double x ){	if( x >= 1 )		cerr<<string("Angle::acosDeg")<<endl;	else if( x <= -1 )		cerr<<string("Angle::acosDeg")<<endl;	return ( Rad2Deg( acos( x ) ) );}AngDeg Angle::asinDeg( double x ){	if( x >= 1 )		cerr<<string("Angle::asinDeg")<<endl;	else if ( x <= -1 )		cerr<<string("Angle::asinDeg")<<endl;	return ( Angle::Rad2Deg( asin( x ) ) );}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品一区二区三区| 欧美网站大全在线观看| 91精彩视频在线观看| 欧美va亚洲va| 亚洲影视在线观看| 成人小视频免费观看| 精品国产髙清在线看国产毛片| 亚洲精品免费一二三区| 国产精品一区二区久久精品爱涩| 88在线观看91蜜桃国自产| 亚洲天堂中文字幕| 成人午夜在线视频| 国产亚洲一区二区三区| 免费日韩伦理电影| 91精品国产综合久久久蜜臀粉嫩 | 国产精品网友自拍| 久久黄色级2电影| 宅男噜噜噜66一区二区66| 亚洲综合免费观看高清完整版在线 | 国产精品久久久久久久久久久免费看 | 色菇凉天天综合网| 国产精品久久久久一区| 国产aⅴ精品一区二区三区色成熟| 日韩亚洲欧美一区| 捆绑紧缚一区二区三区视频| 欧美精品久久天天躁| 亚洲国产另类av| 欧美日韩国产经典色站一区二区三区| 亚洲欧美日韩久久| 日本精品免费观看高清观看| 亚洲欧美日本韩国| 欧美性一区二区| 亚洲一区二区三区美女| 欧美日韩亚洲综合在线| 亚洲一区二区免费视频| 欧美日韩一区二区三区四区五区| 亚洲国产综合视频在线观看| 在线欧美日韩国产| 日韩一区欧美二区| 欧美草草影院在线视频| 国产乱码精品1区2区3区| 久久女同性恋中文字幕| 成人黄色免费短视频| 亚洲免费观看高清在线观看| 色网站国产精品| 午夜精品在线视频一区| 日韩视频一区在线观看| 国产激情一区二区三区四区| 国产精品久久一卡二卡| 色美美综合视频| 石原莉奈在线亚洲三区| 欧美大片在线观看| 不卡影院免费观看| 午夜激情一区二区| 久久久噜噜噜久久人人看 | 日韩美女在线视频| 成人激情图片网| 亚洲一区在线电影| 欧美一级免费观看| 成人妖精视频yjsp地址| 午夜激情一区二区三区| 久久亚区不卡日本| 日本韩国一区二区三区视频| 青青草国产成人av片免费| 日本一区二区高清| 欧美男男青年gay1069videost | 国产欧美视频一区二区三区| 91麻豆免费观看| 日韩av电影天堂| 18成人在线观看| 26uuu成人网一区二区三区| 色94色欧美sute亚洲线路一ni| 日韩电影一区二区三区| 亚洲欧洲日韩在线| 日韩精品最新网址| 91福利精品视频| 国产91精品在线观看| 日韩精品五月天| 亚洲蜜臀av乱码久久精品蜜桃| 日韩视频免费直播| 色视频一区二区| 成人午夜视频网站| 男男视频亚洲欧美| 一区二区三区四区蜜桃| 中文成人综合网| 精品国产一区二区亚洲人成毛片| 91久久奴性调教| 丰满少妇久久久久久久| 免费视频最近日韩| 亚洲r级在线视频| 亚洲少妇中出一区| 日本一区二区三区四区| 日韩美女天天操| 欧美一区二区网站| 在线成人免费观看| 色综合色狠狠天天综合色| 成人性生交大片免费看中文| 国产一区二区在线电影| 麻豆国产91在线播放| 亚洲mv在线观看| 亚洲妇女屁股眼交7| 亚洲精品视频在线看| 亚洲人成伊人成综合网小说| 国产精品每日更新| 国产精品久久久一区麻豆最新章节| 久久久久久久综合狠狠综合| 欧美一区二区播放| 日韩欧美二区三区| 精品国产乱码久久久久久图片 | 国内一区二区视频| 黄一区二区三区| 国产酒店精品激情| 国产大陆精品国产| 播五月开心婷婷综合| 成人午夜伦理影院| 99这里只有精品| 色吧成人激情小说| 欧美裸体bbwbbwbbw| 5858s免费视频成人| 日韩一区二区视频| 日韩视频中午一区| 久久久精品天堂| 日韩伦理免费电影| 亚洲国产精品麻豆| 奇米一区二区三区av| 国产精品一区二区在线看| 波多野结衣中文字幕一区二区三区 | 亚洲一区二区三区三| 日韩不卡一区二区| 国产尤物一区二区| 成人国产精品免费观看动漫| 91美女在线看| 69堂国产成人免费视频| 日韩欧美亚洲一区二区| 国产区在线观看成人精品| 亚洲日本电影在线| 婷婷开心激情综合| 国产91丝袜在线播放| 91国在线观看| 91精品国产综合久久精品性色| 精品国产伦一区二区三区免费| 亚洲国产精品成人综合| 亚洲国产精品久久久久秋霞影院| 日韩精品色哟哟| 粉嫩av一区二区三区在线播放| 91麻豆123| 精品国精品自拍自在线| 亚洲欧美激情视频在线观看一区二区三区| 亚洲一卡二卡三卡四卡| 韩国女主播成人在线观看| 色综合天天性综合| 亚洲精品一区在线观看| 亚洲综合在线电影| 国产91精品一区二区| 欧美色爱综合网| 国产精品久久毛片a| 青青草97国产精品免费观看无弹窗版| 成人精品视频.| 日韩美女在线视频| 亚洲国产人成综合网站| 国产v日产∨综合v精品视频| 欧美精品免费视频| 亚洲色图欧洲色图婷婷| 韩国av一区二区三区在线观看| 91黄视频在线观看| 欧美韩日一区二区三区四区| 日韩电影网1区2区| 欧美性大战久久久久久久| 中文在线免费一区三区高中清不卡| 五月天婷婷综合| 色久综合一二码| 亚洲日本青草视频在线怡红院| 国产综合色精品一区二区三区| 欧美少妇性性性| 国产精品国产馆在线真实露脸| 精品一区中文字幕| 欧美一区日韩一区| 亚洲v精品v日韩v欧美v专区| 99国产精品国产精品久久| 国产女主播视频一区二区| 久久狠狠亚洲综合| 制服丝袜在线91| 亚洲va欧美va人人爽午夜 | 91免费版pro下载短视频| 国产人伦精品一区二区| 国产麻豆精品在线| 精品日韩成人av| 看电视剧不卡顿的网站| 8v天堂国产在线一区二区| 婷婷综合五月天| 555www色欧美视频| 丝袜亚洲另类欧美| 欧美一级片在线| 久久99日本精品| 久久嫩草精品久久久久| 国产一区在线观看视频| 国产欧美一区二区三区网站| 成人网男人的天堂| 18欧美亚洲精品| 欧美在线|欧美|