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

📄 data.cpp

📁 运动控制卡的详细开发资料
💻 CPP
字号:
# include	"stdafx.h"
# include	"data.h"
# include   "math.h"

extern	int			g_FileStyle;


IMPLEMENT_SERIAL(CMarkArray,CObject,1)

CMarkArray::CMarkArray()
{

	m_bIsSortData	= FALSE;
	WorkDir=TRUE;
	WorkSort=0;
	m_bSelected		= FALSE;

	m_bIsStart		= FALSE;
	
}

CMarkArray::~CMarkArray()
{
	if( m_DataArray.GetSize() )m_DataArray.RemoveAll();
}

/*
void CMarkArray::OnDraw(CDC *pDC,CPoint start)
{


	int	size = m_DataArray.GetSize();
	if( size < 1 ) return;
	double	tx,ty;

	
	CPen	tmpPen,*oldPen;

	tmpPen.CreatePen(PS_SOLID,1,RGB(0,255,0));

	oldPen = pDC->SelectObject(&tmpPen);



	for(int i=0; i<size; i++)
	{
		tx = m_DataArray[i].x - g_Para.m_fDefaultX  + g_Para.m_fOrginX;	  ///加上工作零点及缺省原点
		ty = m_DataArray[i].y - g_Para.m_fDefaultY  + g_Para.m_fOrginY;

		tx = (g_fCenterX + g_fMoveX+(tx)*g_fFactor);
		ty = (g_fCenterY + g_fMoveY-(ty)*g_fFactor);
		
		if( g_FileStyle == BMPFILE ){// || g_FileStyle == CNCFILE
			pDC->SetPixel(CPoint(int(tx),int(ty))+start,m_DataArray[i].color);
			continue;
		}
		if( i == 0 )
		{
			if ( m_bIsStart )
			{
				CPen p(PS_DOT,1,RGB(255,0,0));
				CPen *O = pDC->SelectObject(&p);
				
				pDC->MoveTo(int(g_fCenterX + g_fMoveX+(m_posStart.x)*g_fFactor),
					int(g_fCenterY + g_fMoveY-(m_posStart.y)*g_fFactor));	
				pDC->LineTo(int(tx),int(ty));

				pDC->SelectObject(O);
			}
			else
			{
				pDC->MoveTo(int(tx),int(ty));					
			}

			pDC->Ellipse(CRect((int)tx-1,(int)ty-1,(int)tx+1,(int)ty+1));
		}
		else
			pDC->LineTo(int(tx),int(ty));
	}
	

	
	pDC->SelectObject(oldPen);
	
}

*/

void CMarkArray::RateArray(double anglex, double angley)
{
	double xPi = AngleToPai(anglex);
	double yPi = AngleToPai(angley);
	double	tmpX;
	double	tmpY;
	for(int i=0; i<m_DataArray.GetSize(); i++){
		tmpX = m_DataArray[i].x*cos(xPi) + m_DataArray[i].y*sin(xPi);
		tmpY = m_DataArray[i].y*cos(xPi) - m_DataArray[i].x*sin(xPi);
		m_DataArray[i].x	= tmpX;
		m_DataArray[i].y	= tmpY;
	}
}


void CMarkArray::Serialize(CArchive &ar)
{
	if( ar.IsStoring() ){
	}
	else{
	}
	m_DataArray.Serialize(ar);
}

int CMarkArray::GetHome(double &x, double &y)
{
	int size = m_DataArray.GetSize();
	if( size < 1 ) return -1;
	x = m_DataArray[0].x;
	y = m_DataArray[0].y;
	return 1;
}

int CMarkArray::GetEnd(double &x, double &y)
{
	int size = m_DataArray.GetSize();
	if( size<1 ) return -1;

	x	= m_DataArray[size-1].x;	
	y	= m_DataArray[size-1].y;
	return 1;

}

//#define	DEBUG_D	1
//function :set entity point 
//version:1.0
//ceatror: Jackfuguoxing
//date:2003/11
//legancy : copyright 2003

/*
int	CMarkArray::SetStart(CLine &pline)
{
	int size = m_DataArray.GetSize();
	if ( size <=1 ) return -1;

	Position node,node2 ;
	double mindis = 1000000.0 ;
	int index =0 ;
	int i (0);

	CArray<int,int>Index ;

	node.x = m_DataArray[0].x ;
	node.y = m_DataArray[0].y ;
	node2.x = m_DataArray[size -1].x ;
	node2.y = m_DataArray[size -1].y ;

	if ( !(node.Distance(node2 ) <=ZERODEFINITION )	)
	{
		return  -1;
	}

	for ( i = 0; i< size ; i++)
	{
		node.x = m_DataArray[i].x;
		node.y = m_DataArray[i].y ;
		
		node2.x = m_DataArray[(i+1)%size].x;
		node2.y = m_DataArray[(i+1)%size].y ;
		CLine tline (node,node2);
		tline.m_fSlope	= node.Angle(node2)* PI/180;;
		if ( tline.m_fSlope <= 0 ) tline.m_fSlope += 2*PI;
		if ( fabs(tline.m_fSlope - 2 * PI) <=ZERODEFINITION) tline.m_fSlope = 0;
		if ( tline.m_fSlope>PI) tline.m_fSlope-=PI;		

		Position posc ;
		double a ;
		pline.CalCrossPnt(&tline,posc,a);
		
		if ( pline.BelongSelf(posc) && 
			tline.BelongSelf(posc))
		{

			//AfxMessageBox(" 找到一条直线") ;
			index = i;

			Index.Add(i);
			//break;
		}		
	}

	if ( !Index.GetSize() ) return -1;

	for (  i = 0; i< Index.GetSize() ; i++)
	{
		node.x = m_DataArray[Index[i]].x;
		node.y = m_DataArray[Index[i]].y ;

		double d = m_posStart.Distance(node)  ;

		if ( d< mindis )
		{
			mindis = d ;
			index =  Index[i] ; 	//i ;
		}		
	}


	if ( index <=0) return -1;

#ifdef	DEBUG_D
	FILE * fp  = fopen("C:\\windows\\desktop\\array.txt","wt");
	char tt[0x200]; 
	sprintf(tt,"原始数据总共数据点数%d\n",size);
	fwrite(tt,strlen(tt),1,fp);
	for ( int k = 0; k< size ; k++)
	{
		CDataPoint m = m_DataArray[k] ;	
		sprintf(tt,"第%d点:	X= %5.2f,Y= %5.2f\n",k,m.x,m.y);		
		fwrite(tt,strlen(tt),1,fp);
	}
#endif


	for (  i= index ; i < size  ; i++)
	{
		CDataPoint t = m_DataArray[i] ;		
				
		m_CopyArray.Add(t);

	}
	
	for (i= 0 ;i <  index ; i ++)
	{
		CDataPoint m = m_DataArray[i] ;
		m_CopyArray.Add(m);
	
	}

	m_DataArray.RemoveAll();

#ifdef	DEBUG_D
		sprintf(tt,"\n\n新数据总共数据点数%d\n",size);
		fwrite(tt,strlen(tt),1,fp);
#endif

	for ( i= 0; i< size ; i++)
	{
		CDataPoint m = m_CopyArray[i] ;
		m_DataArray.Add(m);

#ifdef	DEBUG_D
		sprintf(tt,"第%d点:	X= %5.2f,Y= %5.2f\n",i,m.x,m.y);		
		fwrite(tt,strlen(tt),1,fp);	
#endif
	}
	
	CDataPoint n = m_CopyArray[0] ;
	m_DataArray.Add(n);

#ifdef	DEBUG_D
		fclose(fp);
#endif
	m_CopyArray.RemoveAll();

	return 1 ;		
}
*/

⌨️ 快捷键说明

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