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

📄 base.cpp

📁 串口 操作 源码 打标机的控制程序
💻 CPP
字号:
#include "stdafx.h"
#include "math.h"

#include "base.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

//
//	for class Position;
//
Position::Position() 
{
	x = y = 0;
} 

Position::Position(int ox, int oy )
{
	x = ox, y = oy;
}
	
Position::Position(const int *pnt)
{
	x = pnt[0],	y = pnt[1];
}

Position::Position(const Position& positionSrc)
{
	x = positionSrc.x,	y = positionSrc.y ;
}


Position::~Position()
{
}
	
void Position::Init()
{
	x = y = 0;
}



//操作符重载
int&
Position::operator[](const  int& i)
{
	if(i==0) return x;
	else if(i==1) return y;
	else return x;
}

Position::operator const int *() const       // as a point arrsy
{
	return	&x;
}

Position::operator int *()       // as a point arrsy
{
	return	&x;
}

const 	Position& 
Position::operator=(const Position& positionSrc)
{
	x=positionSrc.x, y=positionSrc.y;
	return *this;
}

BOOL	operator==(const Position& positionSrc1,const Position& positionSrc2)
{
	Position	pnt1(positionSrc1),pnt2(positionSrc2);
	if(pnt1.Distance(pnt2) < DISTANCE_ZERO*100) return TRUE;
	return FALSE;
}

Position operator+(const Position& position1,const Position& position2)
{
	Position p(position1.x+position2.x, position1.y+position2.y);
	return p;
}

Position operator-(const Position& position1,const Position& position2)
{
	Position p(position1.x-position2.x, position1.y-position2.y);
	return p;
}

Position operator*(const Position& position, const double& scale)
{
	Position p(int(position.x*scale), int(position.y*scale));
	return p;
}

Position operator*(const double& scale,	const Position& position)
{
	Position p(int(position.x*scale), int(position.y*scale));
	return p;
}
const	Position&
Position::operator+=(const Position& positionSrc)
{
	x+=positionSrc.x, y+=positionSrc.y;
	return *this;
}
	
const 	Position& 
Position::operator-=(const Position& positionSrc)
{
	x-=positionSrc.x, y-=positionSrc.y;
	return *this;
}

//计算两个位置类对象的距离
double Position::Distance(const Position& pnt)
{
	double dis = sqrt( (x-pnt.x)*(x-pnt.x) + (y-pnt.y)*(y-pnt.y));	
	return dis;
}
//比较两个位置类对象是否相等
BOOL Position::IsSame(const Position& pointSrc)
{
	if(Distance(pointSrc) < DISTANCE_ZERO*100)	return TRUE;
	return FALSE;
}
//判断是否在包围盒内
BOOL Position::IsInBox(const BOX2D& box)
{
	if( x > box.min[0] && x < box.max[0]
		&& y > box.min[0] && y < box.max[1] )
		return TRUE;
	return FALSE;
}
//实现位置类的存储
void Position::Serialize(CArchive &ar) 
{
	if(ar.IsStoring())
		ar << x << y ;
	else
		ar >> x >> y ;
}
//位置类对象的平移操作
Position Position::Offset(const int & deltax,const int & deltay)
{
	Position	pnt(x + deltax, y + deltay);
	return pnt;	
}
//位置类对象的平移操作
Position Position::Offset(const Position& off)
{
	Position	pnt(x + off.x, y + off.y);
	return pnt;
}
//位置类对象的旋转操作

⌨️ 快捷键说明

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