📄 analysis.cpp
字号:
*jj=0;
in1=*(in+1)+*(in+2);
in2=*(in+2)+*(in+3);
in3=*(in+3)+*(in+4);
in4=*(in+4)+*(in+5);
in5=*(in+5)+*(in+6);
in6=*(in+6)+*(in+7);
un2=*(un+2)+*(un+3);
un5=*(un+5)+*(un+6);
d1=(in3-in1)/dt;
d2=(in6-in4)/dt;
dd=in2*d2-in5*d1;
if(fabs(dd)<.1)return(0);
x=(un5*in2-un2*in5)/dd;
r=(d2*un2-d1*un5)/dd;
z=r*r+x*x;
if(z<zzd*zzd)*jj=1;
return(0);
}
int CAnalysis::pqc(double *u,double *i,int *jj,int n)
{
double z,x,r,d1,dd,d2,*in,*un,in1,in2,in3,in4,in5,in6,un2,un5;
in=i+n;un=u+n;
*jj=0;
in1=*(in+1)+*(in+2);
in2=*(in+2)+*(in+3);
in3=*(in+3)+*(in+4);
in4=*(in+4)+*(in+5);
in5=*(in+5)+*(in+6);
in6=*(in+6)+*(in+7);
un2=*(un+2)+*(un+3);
un5=*(un+5)+*(un+6);
d1=(in3-in1)/dt;
d2=(in6-in4)/dt;
dd=in2*d2-in5*d1;
if(fabs(dd)<.1){*jj=1; return(0);}
x=(un5*in2-un2*in5)/dd;
r=(d2*un2-d1*un5)/dd;
z=r*r+x*x;
if(z>100*zzd*zzd)*jj=1;
return(0);
}
int CAnalysis::tbpfx( double *i1,double *i2, double *u1,double *u2,int *jp,int m,int n)
{
double dd, x, r, d1 ,d2, a1 ,a2 , v1 ,v2, dtt;
double *i1n,*i2n,*i1m,*i2m;
i1n=i1+n;
i2n=i2+n;
i1m=i1+m;
i2m=i2+m;
dtt=314.25926*.001*.98359*2;
d1=((*(i1n+5)-*(i2n+5)-*(i1m+5)+*(i2m+5))-
(*(i1n+3)-*(i2n+3)-*(i1m+3)+*(i2m+3)))/dtt
+((*(i1n+6)-*(i2n+6)-*(i1m+6)+*(i2m+6))-
(*(i1n+4)-*(i2n+4)-*(i1m+4)+*(i2m+4)))/dtt;
d2=((*(i1n+9)-*(i2n+9)-*(i1m+9)+*(i2m+9))-
(*(i1n+7)-*(i2n+7)-*(i1m+7)+*(i2m+7)))/dtt
+((*(i1n+10)-*(i2n+10)-*(i1m+10)+*(i2m+10))-
(*(i1n+8)-*(i2n+8)-*(i1m+8)+*(i2m+8)))/dtt;
a1=*(i1n+4)-*(i2n+4)-*(i1m+4)+*(i2m+4)+
*(i1n+5)-*(i2n+5)-*(i1m+5)+*(i2m+5);
a2=*(i1n+8)-*(i2n+8)-*(i1m+8)+*(i2m+8)+
*(i1n+9)-*(i2n+9)-*(i1m+9)+*(i2m+9);
v1=*(u1+n+4)-*(u2+n+4)-*(u1+m+4)+*(u2+m+4)+
*(u1+n+5)-*(u2+n+5)-*(u1+m+5)+*(u2+m+5);
v2=*(u1+n+8)-*(u2+n+8)-*(u1+m+8)+*(u2+m+8)+
*(u1+n+9)-*(u2+n+9)-*(u1+m+9)+*(u2+m+9);
dd = a1*d2-a2*d1;
if(fabs(dd)<.1)
{ *jp=1; return(0); }
x=(v1*a2-v2*a1)/dd;
r=(v2*d1-v1*d2)/dd;
if(5*x+r>0)*jp=1;
else *jp=-1;
return(0);
}
void CAnalysis::convcaps(void)
{
int location_x,location_y,i,j,y,n;
unsigned int series;
unsigned int xl,xl1[10],mxl=3;
xl=location_x=location_y=bl_se=0;
do {
for(i=0; i<(int)mxl; i++)xl1[i]=0;
for(i=0;i<(int)mxl;i++)
{for(j=0;j<se_se;j++)
{if((se+j)->trait == xl+11+i)
{y=(se+j)->line;
if((int)xl1[i]<y)xl1[i]=y;
}
}
}
for(i=0;i<(int)mxl;i++)if(xl1[i])break;
if(i == (int)mxl)break;
for(series=0;series!=3000;series++)
{for (i=0;i!=se_se;i++)
{if((series != (se+i)->order)||((se+i)->trait!=10))continue;
y=0;
for(n=0;n < (int)mxl;n++)
{if(y)break;
for(j=0;j<se_se;j++)if((series==(se+j)->order)
&&((se+j)->trait==11+xl+n)){y=1;break;}
}
if(!y)continue;
(se+i)->x=location_x;
(se+i)->y=location_y;
escan1(&location_x,&location_y,i);
location_x+=(se+i)->line+24;
y=location_y;
for(n=0; n < (int)mxl;n++)
{
if(!xl1[n])break;
for(j=0;j!=se_se;j++)
{if((series!=(se+j)->order)||((se+j)->trait!=11+xl+n))
continue;
(se+j)->y=location_y=(se+i)->y;
(se+j)->x=location_x;
escan1(&location_x,&location_y,j);
if(y<location_y)y=location_y;
break;
};
location_x+=xl1[n];
}
location_x=(se+i)->x;
location_y=y;
}
}
xl+=mxl;
}while(1);
}
void CAnalysis::escan1(int * location_x,int * location_y,int a)
{
int x,i,r1,k,l;
unsigned char c[80],x1,*y;
k=1;
i=(se+a)->line/16*2;
y=c;
strncpy((char *)y+6,(char *)(se+a)->caps,70);
if((se+a)->trait==10)
{
r1=((se+a)->order+1)/10;
if((se+a)->order>100)r1=r1%100;
if(!r1)r1=10;
*(y+0)=dig[2*r1];*(y+1)=dig[2*r1+1];
r1=((se+a)->order+1)%10;
*(y+2)=dig[2*r1];*(y+3)=dig[2*r1+1];
*(y+4)=dig[20];*(y+5)=dig[21];
if(k)y=y+6;
}
else y=y+6;
x=strlen((char *)y);
if(strlen((char *)y)>79){*(y+79)=0;};
while(x>i)
{
for(l=i;l!=0;l--)if(*(y+l)==32)break;
if(!l)l=i;
x1=*(y+l);
*(y+l)=0;
(bl+bl_se)->order=(se+a)->order;
(bl+bl_se)->trait=(se+a)->trait;
(bl+bl_se)->line=l*8;
(bl+bl_se)->arrange=(se+a)->arrange*9/8;
strncpy((char *)((bl+bl_se)->caps), (char *)y,32);
(bl+bl_se)->x=*location_x;
(bl+bl_se)->y=*location_y;
*location_x=(se+a)->x;
*location_y+=(bl+bl_se)->arrange;
*(y+l)=x1;
while(*(y+l)==32)y++;
if((se+a)->trait!=10) y+=l;
else {y+=l-6;
*(y+0)=*(y+2)=dig[20];*(y+1)=*(y+3)=dig[21];
*(y+4)=dig[20];*(y+5)=dig[21];
if(k)y+=6;
}
x=strlen((char *)y);
bl_se++;
}
(bl+bl_se)->order=(se+a)->order;
(bl+bl_se)->trait=(se+a)->trait;
(bl+bl_se)->line=i*8;
(bl+bl_se)->arrange=(se+a)->arrange*9/8+6;
strncpy((char *)((bl+bl_se)->caps), (char *)y, 32);
(bl+bl_se)->x=*location_x;
(bl+bl_se)->y=*location_y;
*location_x=(se+a)->x;
*location_y+=(bl+bl_se)->arrange;
bl_se++;
}
void CAnalysis::convcap(int mxl)
{
int location_x,location_y, i, j,y,n;
int xl,xl1[10];
UINT series;
xl=location_x=location_y=bl_se=0;
do{
for(i=0;i<mxl;i++)xl1[i]=0;
for(i=0;i<mxl;i++)
{
for(j=0; j<se_se; j++)
{
if((int )((se+j)->trait) == xl+11+i)
{
y=(se+j)->line/16*2;
if(xl1[i]<y)
xl1[i]=y;
}
}
}
for(i=0;i<mxl;i++)
if(xl1[i])
break;
if(i==mxl)
break;
for(series=0;series!=3000;series++)
{
// if(strcmp((bl+9)->caps, "故障持续时间")==0)
// if(strcmp((bl+9)->caps, "15:35:50.030")==0)
for (i=0;i!=se_se;i++)
{
if((series!=(se+i)->order)||((se+i)->trait!=10))
continue;
y=0;
for(n=0;n<mxl;n++)
{
if(y)
break;
for(j=0;j<se_se;j++)
if((series == (int)((se+j)->order)) &&
((int)((se+j)->trait) == 11+xl+n))
{ y=1; break; }
}
if(!y)
continue;
(se+i)->x=location_x;
(se+i)->y=location_y;
escan2(&location_x,&location_y,i);
location_x+=(se+i)->line/16*2+2;
y=location_y;
for(n=0;n<mxl;n++)
{
if(!xl1[n])
break;
for(j=0;j!=se_se;j++)
{
if((series != (int)(se+j)->order)|| ((int)(se+j)->trait != 11+xl+n))
continue;
(se+j)->y=location_y=(se+i)->y;
(se+j)->x=location_x;
escan2(&location_x,&location_y,j);
if(y<location_y)y=location_y;
break;
}
location_x+=xl1[n];
}
location_x=(se+i)->x;
location_y=y;
}
}
xl+=mxl;
}while(1);
}
int CAnalysis::wscani(void)
{
int i,x,y,l,j,gg;
char far *c,*s;
FILE *fp;
y=0;
l=0;
for(i=0; i < bl_se; i++)
{
x = (bl+i)->x + (bl+i)->line;
if(y < x) y = x;
x = (bl+i)->y + (bl+i)->arrange;
if( l < x ) l = x;
}
if(y>40)l=l*2;
for(i=0;i<bl_se;i++)
{
if( (int)((bl+i)->y + (bl+i)->arrange) > l/2)
{
do{
if(i>=bl_se-1)break;
if((bl+i+1)->order!=(bl+i)->order){j=(bl+i+1)->y;break;}
i++;
}while(1);
break;
}
}
gg=i;
i++;
while(i<bl_se)
{
(bl+i)->x+=40;
(bl+i)->y-=j;
i++;
}
for(x=j=0;j<bl_se;j++)
{
if( x < (int)((bl+j)->y))x=(bl+j)->y;
}
x++;
fp=fopen(m_strReportFile, "w+");
if(fp == NULL)
{
AfxMessageBox(_T("不能创建文件") + m_strReportFile);
return(-1);
}
c=(char far *)malloc(600);
for(j=0;j<=x;j++)
{
for(i=0;i<600;i++)*(c+i)=' ';
y=0;
for(gg=i=0;i<bl_se;i++)
{
if((int)(bl+i)->y == j)
{
s = (char *)(bl+i)->caps;
l=0;gg=(bl+i)->x;
while(*(s+l))
{ *(c+gg+l) = *(s+l); l++; }
y=gg+l;
}
}
*(c+y)=10;*(c+y+1)=0;
fprintf(fp,"%s",c);
}
fprintf(fp,"%c",12);
fclose(fp);
free(c);
return(1);
}
int CAnalysis::pscani(int *g)
{
int i=0,x,y,p,l,a,kk=2,j,gg,hh;
for(l=i=0;i<bl_se;i++)
{
if((bl+i)->x+(bl+i)->line>320)kk=1;
if(l < (int)((bl+i)->y+(bl+i)->arrange))
l = (bl+i)->y + (bl+i)->arrange;
}
if(kk==1)page=400;
else page=800;
if(*g>l){*g=l-page;goto end;}
i=-1;
while(i<bl_se-1)
{i++;
if((int )(bl+i)->y >= *g)
{if(!i){a=*g=(bl+i)->y;gg=i;break;}
if((bl+i)->order==(bl+i+1)->order)continue;
gg=i+1;
a=(bl+i+1)->y;break;
}
}
p=((l-a)/kk>480)?480:(l-a)/kk;
for(i=gg+1;i<bl_se-1;i++)
{
if((int)((bl+i)->y+(bl+i)->arrange+4) > a+p)
{
j=i;
if(i+1>=bl_se)break;
while((bl+j+1)->order==(bl+j)->order)
{
if(j>=bl_se)break;
if((int)((bl+j)->y+(bl+j)->arrange) > a+480){j=i;break;}
j++;
}
{i=j;break;}
}
}
hh=i;if(hh>=bl_se)hh=bl_se-1;
for(i=gg;i<=hh;i++)
{
y=(bl+i)->y-a;
x=(bl+i)->x;
// TextOut(hdc,x,y,(bl+i)->caps, strlen((bl+i)->caps));
}
if((hh>=bl_se-1)||(kk==1))goto end;
gg=hh+1;
a=(bl+gg)->y;
for(i=gg+1;i<bl_se-1;i++)
{
if((int)((bl+i)->y+(bl+i)->arrange) >a+p)
{
j=i;
if(i+1>=bl_se)break;
while((bl+j+1)->order==(bl+j)->order)
{
if(j>=bl_se)break;
if((int)((bl+j)->y+(bl+j)->arrange) > a+480){j=i;break;}
j++;
}
if(i!=j){i=j;break;}
while((bl+i)->order==(bl+i-1)->order)i--;
i--;
break;
}
}
hh=i;if(hh>=bl_se)hh=bl_se-1;
for(i=gg;i<=hh;i++)
{
y=(bl+i)->y-a;
x=(bl+i)->x+320;
// TextOut(hdc,x,y,(bl+i)->caps, strlen((bl+i)->caps));
}
end:
return(l);
}
void CAnalysis::escan2(int * location_x,int * location_y,int a)
{
int x,i,k,l;
unsigned char c[80],x1,*y;
k=1;
i=(se+a)->line/16*2;
y=c;
strncpy((char *)y, (char *)(se+a)->caps,70);
x=strlen((char *)y);
if(strlen((char *)y)>79){*(y+79)=0;};
while(x>i)
{
for(l=i;l!=0;l--)if(*(y+l)==32)break;
if(!l)l=i;
x1=*(y+l);
*(y+l)=0;
(bl+bl_se)->order=(se+a)->order;
(bl+bl_se)->trait=(se+a)->trait;
(bl+bl_se)->line=l;
(bl+bl_se)->arrange=(se+a)->arrange/16;
strncpy((char *)(bl+bl_se)->caps,(char *)y,32);
(bl+bl_se)->x=*location_x;
(bl+bl_se)->y=*location_y;
*location_x=(se+a)->x;
*location_y+=(bl+bl_se)->arrange;
y+=l;*y=x1;
while(*y==32)y++;
x=strlen((char *)y);
bl_se++;
}
(bl+bl_se)->order=(se+a)->order;
(bl+bl_se)->trait=(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -