cadbase1.cpp

来自「这是一个程序的一般架构方法」· C++ 代码 · 共 83 行

CPP
83
字号
//-- {CycleCode: 698} file [0..975]
//-- {AddDecl: 699} module.includes preserve=yes [0..61]
//## begin module.includes preserve=yes
#include "stdafx.h"
#include "cadbase.h"
#include "math.h"
//## end module.includes preserve=yes
//-- {InsertRegion: 700} module.vulnerableDeclarations [62..975]
//## begin module.epilog preserve=yes

BOOL IsParallel(VECTOR2D v0,VECTOR2D v1)
{
	CVector2D cv0(v0),cv1(v1);
	return IS_ZERO((cv0*cv1).dz);
}

BOOL IsParallel(VECTOR3D v0,VECTOR3D v1)
{
	CVector3D cv0(v0),cv1(v1);
	return IS_ZERO((cv0*cv1).GetLength());
}

BOOL IsOrthogonal(VECTOR3D v0,VECTOR3D v1)
{
	CVector3D cv0(v0),cv1(v1);
	return IS_ZERO(cv0|cv1);
}

double AngleBetween(VECTOR2D v1,VECTOR2D v2)
{
	if(IsParallel(v1,v2))	return 0;
	CVector2D cv1(v1),cv2(v2);
	return acos((cv1|cv2.GetNormal())/cv1.GetLength());
}

double AngleBetween(VECTOR3D v1,VECTOR3D v2)
{
	if(IsParallel(v1,v2))	return 0;
	CVector3D cv1(v1),cv2(v2);
	return acos((cv1|cv2.GetNormal())/cv1.GetLength());
}

double DistOf(POINT2D pt0,POINT2D pt1)
{
	CVector2D vec(pt1.x-pt0.x,pt1.y-pt0.y);
	return vec.GetLength();
}

double DistOf(POINT3D pt0,POINT3D pt1)
{
	CVector3D vec(pt1.x-pt0.x,pt1.y-pt0.y);
	return vec.GetLength();
} 

//-1 在外 0 相交 1 在内
//r1 为主
int RectConnection( CRect2D r1 , CRect2D r2 )
{
	if(
		r1.left > r2.right 
		|| r1.right < r2.left 
		|| r1.top < r2.bottom 
		|| r1.bottom > r2.top 
		)
	{
		return -1;
	}
	else if (
		r1.left < r2.left 
		&& r1.right > r2.right 
		&& r1.top > r2.top 
		&& r1.bottom < r2.bottom 
		)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
//## end module.epilog

⌨️ 快捷键说明

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