📄 data.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 + -