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

📄 ana2_32view.cpp

📁 VC环境下电力系统故障录波数据管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    xn = xo + int(FactorU[i]*Fb2s[i]);
    yn = yo - int(FactorU[i]*Fb2x[i]);
    xm = xn - int(Alength*cos(F2alpha[i][1]*PI/180.));
    ym = yn + int(Alength*sin(F2alpha[i][1]*PI/180.));
	if(i==0)
	{
    pDC->LineTo(xm, ym);
    pDC->MoveTo(xn, yn);
    pDC->LineTo(xm - int(Awidth*sin(F2alpha[i][1]*PI/180.)), ym - int(Awidth*cos(F2alpha[i][1]*PI/180.)));
    pDC->LineTo(xm + int(Awidth*sin(F2alpha[i][1]*PI/180.)), ym + int(Awidth*cos(F2alpha[i][1]*PI/180.)));
    pDC->LineTo(xn, yn);
	}
	if(i==1)
	 {
	  pDC->LineTo(xn, yn);
	  pDC->Ellipse(xn-r, yn-r, xn+r, yn+r);
     }
    //if(i==1)pDC->FloodFill((xn+xm)/2, (yn+ym)/2, BRGB);
	if(xo < xn){ xp = xn+5;  yp = yn; }
	else { xp = xn-xd;  yp = yn; }
	pDC->SelectObject(&FontD);
	pDC->SetTextColor(RGB(0,255,0));
    pDC->TextOut(xp, yp, tempstr[i]);
    xp += width-i*4; yp += 4;
    pDC->SelectObject(&FontX);
    sprintf(tempstr1, "1b2=%6.2lf", Fb2[i]);
	pDC->TextOut(xp, yp, tempstr1);

	///////////////////////////Fc2
    pDC->SelectObject(&Pen[i][2]);
//	pDC->SelectObject(&Brush[2]);
	pDC->MoveTo(xo, yo);
    xn = xo + int(FactorU[i]*Fc2s[i]);
    yn = yo - int(FactorU[i]*Fc2x[i]);
    xm = xn - int(Alength*cos(F2alpha[i][2]*PI/180.));
    ym = yn + int(Alength*sin(F2alpha[i][2]*PI/180.));
	if(i==0)
	{
    pDC->LineTo(xm, ym);
    pDC->MoveTo(xn, yn);
    pDC->LineTo(xm - int(Awidth*sin(F2alpha[i][2]*PI/180.)), ym - int(Awidth*cos(F2alpha[i][2]*PI/180.)));
    pDC->LineTo(xm + int(Awidth*sin(F2alpha[i][2]*PI/180.)), ym + int(Awidth*cos(F2alpha[i][2]*PI/180.)));
    pDC->LineTo(xn, yn);
	}
	if(i==1)
	 {
	  pDC->LineTo(xn, yn);
	  pDC->Ellipse(xn-r, yn-r, xn+r, yn+r);
     }
    //if(i==1)pDC->FloodFill((xn+xm)/2, (yn+ym)/2, CRGB);
	if(xo < xn){ xp = xn+5;  yp = yn; }
	else { xp = xn-xd;  yp = yn; }
	pDC->SelectObject(&FontD);
	pDC->SetTextColor(RGB(255,0,0));
    pDC->TextOut(xp, yp, tempstr[i]);
    xp += width-i*4; yp += 4;
    pDC->SelectObject(&FontX);
    sprintf(tempstr1, "1c2=%6.2lf", Fc2[i]);
	pDC->TextOut(xp, yp, tempstr1);

	xo += 280;
	/*	//////////////// U Fa0
    pDC->SelectObject(&Pen[i][0]);
	xo += 280;
	pDC->MoveTo(xo, yo);*/
    xn = xo + int(FactorU[i]*Fa0s[i]); 
    yn = yo +i*10- int(FactorU[i]*Fa0x[i]);
	/*xm = xn - int(Alength*cos(F0alpha[i][0]*PI/180.));
    ym = yn + int(Alength*sin(F0alpha[i][0]*PI/180.));
    pDC->LineTo(xm, ym);
    pDC->MoveTo(xn, yn);
    pDC->LineTo(xm - int(Awidth*sin(F0alpha[i][0]*PI/180.)), ym - int(Awidth*cos(F0alpha[i][0]*PI/180.)));
    pDC->LineTo(xm + int(Awidth*sin(F0alpha[i][0]*PI/180.)), ym + int(Awidth*cos(F0alpha[i][0]*PI/180.)));
    pDC->LineTo(xn, yn);
    //pDC->FloodFill((xn+xm)/2, (yn+ym)/2, RGB(0,0,0));
	if(xo < xn){ xp = xn+5;  yp = yn-8; }
	else { xp = xn-xd;  yp = yn-8; }
	pDC->SelectObject(&FontD);
	pDC->SetTextColor(RGB(255,255,0));
    pDC->TextOut(xp, yp, tempstr[i]);
    xp += width-i*4; yp += 4;
    pDC->SelectObject(&FontX);
    sprintf(tempstr1, "1a0=%6.2lf", Fa0[i]);
	pDC->TextOut(xp, yp, tempstr1);*/

	/////////////////////// Fb0
    pDC->SelectObject(&Pen[i][1]);
//	pDC->SelectObject(&Brush[1]);
	pDC->MoveTo(xo, yo+10);
    
    xm = xn - int(Alength*cos(F0alpha[i][1]*PI/180.));
    ym = yn + int(Alength*sin(F0alpha[i][1]*PI/180.));
	if(i==0)
	{
    pDC->LineTo(xm, ym);
    pDC->MoveTo(xn, yn);
    pDC->LineTo(xm - int(Awidth*sin(F0alpha[i][1]*PI/180.)), ym - int(Awidth*cos(F0alpha[i][1]*PI/180.)));
    pDC->LineTo(xm + int(Awidth*sin(F0alpha[i][1]*PI/180.)), ym + int(Awidth*cos(F0alpha[i][1]*PI/180.)));
    pDC->LineTo(xn, yn);
	}
	if(i==1)
	 {
	  pDC->LineTo(xn, yn);
	  pDC->Ellipse(xn-r, yn-r, xn+r, yn+r);
     }
    //if(i==1)pDC->FloodFill((xn+xm)/2, (yn+ym)/2, BRGB);
	if(xo < xn){ xp = xn+5;  yp = yn; }
	else { xp = xn-xd;  yp = yn; }
	pDC->SelectObject(&FontD);
	pDC->SetTextColor(RGB(0,255,0));
    pDC->TextOut(xp, yp, tempstr[i]);
    xp += width-i*4; yp += 4;
    pDC->SelectObject(&FontX);
    sprintf(tempstr1, "1b0=%6.2lf", Fb0[i]);
	pDC->TextOut(xp, yp, tempstr1);

	///////////////////////Fc0
/*    pDC->SelectObject(&Pen[i][2]);
	pDC->MoveTo(xo, yo+20);
    yn+=10;
    xm = xn - int(Alength*cos(F0alpha[i][2]*PI/180.));
    ym = yn + int(Alength*sin(F0alpha[i][2]*PI/180.));
    pDC->LineTo(xm, ym);
    pDC->MoveTo(xn, yn);
    pDC->LineTo(xm - int(Awidth*sin(F0alpha[i][2]*PI/180.)), ym - int(Awidth*cos(F0alpha[i][2]*PI/180.)));
    pDC->LineTo(xm + int(Awidth*sin(F0alpha[i][2]*PI/180.)), ym + int(Awidth*cos(F0alpha[i][2]*PI/180.)));
    pDC->LineTo(xn, yn);
    //pDC->FloodFill((xn+xm)/2, (yn+ym)/2, RGB(0,0,0));
	if(xo < xn){ xp = xn+5;  yp = yn+8; }
	else { xp = xn-xd;  yp = yn+8; }
	pDC->SelectObject(&FontD);
	pDC->SetTextColor(RGB(255,0,0));
    pDC->TextOut(xp, yp, tempstr[i]);
    xp += width-i*4; yp += 4;
    pDC->SelectObject(&FontX);
    sprintf(tempstr1, "1c0=%6.2lf", Fc0[i]);
	pDC->TextOut(xp, yp, tempstr1);*/


     //////////////// U Fa, Fb, Fc ////////////////////////
    xo += 280;
	pDC->SelectObject(&Pen[i][0]);
//	pDC->SelectObject(&Brush[0]);
    pDC->MoveTo(xo, yo);
    xn = xo + int(FactorU[i]*Fas[i]);
    yn = yo - int(FactorU[i]*Fax[i]);
    xm = xn - int(Alength*cos(Falpha[i][0]*PI/180.));
    ym = yn + int(Alength*sin(Falpha[i][0]*PI/180.));
	if(i==0)
	{
    pDC->LineTo(xm, ym);
    pDC->MoveTo(xn, yn);
    pDC->LineTo(xm - int(Awidth*sin(Falpha[i][0]*PI/180.)), ym - int(Awidth*cos(Falpha[i][0]*PI/180.)));
    pDC->LineTo(xm + int(Awidth*sin(Falpha[i][0]*PI/180.)), ym + int(Awidth*cos(Falpha[i][0]*PI/180.)));
    pDC->LineTo(xn, yn);
	}
	if(i==1)
	 {
	  pDC->LineTo(xn, yn);
	  pDC->Ellipse(xn-r, yn-r, xn+r, yn+r);
     }
	//if(i==1)pDC->FloodFill((xn+xm)/2, (yn+ym)/2, ARGB);
	if(xo < xn){ xp = xn+5;  yp = yn; }
	else { xp = xn-xd;  yp = yn; }
	pDC->SelectObject(&FontD);
	pDC->SetTextColor(RGB(255,255,0));
    pDC->TextOut(xp, yp, tempstr[i]);
    xp += width-i*4; yp += 4;
    pDC->SelectObject(&FontX);
    sprintf(tempstr1, "1a=%6.2lf", Fa[i]);
	pDC->TextOut(xp, yp, tempstr1);

    pDC->SelectObject(&Pen[i][1]);
//	pDC->SelectObject(&Brush[1]);
	pDC->MoveTo(xo, yo);
    xn = xo + int(FactorU[i]*Fbs[i]);
    yn = yo - int(FactorU[i]*Fbx[i]);
    xm = xn - int(Alength*cos(Falpha[i][1]*PI/180.));
    ym = yn + int(Alength*sin(Falpha[i][1]*PI/180.));
	if(i==0)
	{
    pDC->LineTo(xm, ym);
    pDC->MoveTo(xn, yn);
    pDC->LineTo(xm - int(Awidth*sin(Falpha[i][1]*PI/180.)), ym - int(Awidth*cos(Falpha[i][1]*PI/180.)));
    pDC->LineTo(xm + int(Awidth*sin(Falpha[i][1]*PI/180.)), ym + int(Awidth*cos(Falpha[i][1]*PI/180.)));
    pDC->LineTo(xn, yn);
	}
	if(i==1)
	 {
	  pDC->LineTo(xn, yn);
	  pDC->Ellipse(xn-r, yn-r, xn+r, yn+r);
     }
	//if(i==1)pDC->FloodFill((xn+xm)/2, (yn+ym)/2, BRGB);
	if(xo < xn){ xp = xn+5;  yp = yn; }
	else { xp = xn-xd;  yp = yn; }
	pDC->SelectObject(&FontD);
	pDC->SetTextColor(RGB(0,255,0));
    pDC->TextOut(xp, yp, tempstr[i]);
    xp += width-i*4; yp += 4;
    pDC->SelectObject(&FontX);
    sprintf(tempstr1, "1b=%6.2lf", Fb[i]);
	pDC->TextOut(xp, yp, tempstr1);

    pDC->SelectObject(&Pen[i][2]);
//	pDC->SelectObject(&Brush[2]);
	pDC->MoveTo(xo, yo);
    xn = xo + int(FactorU[i]*Fcs[i]);
    yn = yo - int(FactorU[i]*Fcx[i]);
    xm = xn - int(Alength*cos(Falpha[i][2]*PI/180.));
    ym = yn + int(Alength*sin(Falpha[i][2]*PI/180.));
	if(i==0)
	{
    pDC->LineTo(xm, ym);
    pDC->MoveTo(xn, yn);
    pDC->LineTo(xm - int(Awidth*sin(Falpha[i][2]*PI/180.)), ym - int(Awidth*cos(Falpha[i][2]*PI/180.)));
    pDC->LineTo(xm + int(Awidth*sin(Falpha[i][2]*PI/180.)), ym + int(Awidth*cos(Falpha[i][2]*PI/180.)));
    pDC->LineTo(xn, yn);
	}
	if(i==1)
	 {
	  pDC->LineTo(xn, yn);
	  pDC->Ellipse(xn-r, yn-r, xn+r, yn+r);
     }
	//if(i==1)pDC->FloodFill((xn+xm)/2, (yn+ym)/2, CRGB);
	if(xo < xn){ xp = xn+5;  yp = yn; }
	else { xp = xn-xd;  yp = yn; }
	pDC->SelectObject(&FontD);
	pDC->SetTextColor(RGB(255,0,0));
    pDC->TextOut(xp, yp, tempstr[i]);
    xp += width-i*4; yp += 4;
    pDC->SelectObject(&FontX);
    sprintf(tempstr1, "1c=%6.2lf", Fc[i]);
	pDC->TextOut(xp, yp, tempstr1);

   }
	char TempStr[40];
	xp = 100;
	yp = 350;
    pDC->SelectObject(&FontD);
	pDC->SetTextColor(RGB(255,255,255));
	sprintf(TempStr, "正序电压电流相角差= %4.2lf", F1alpha[0][0]-F1alpha[1][0]);
    pDC->TextOut(xp, yp, TempStr);
    
	xp += 250;
	sprintf(TempStr, "负序电压电流相角差= %4.2lf", F2alpha[0][0]-F2alpha[1][0]);
	pDC->TextOut(xp, yp, TempStr);

	xp += 250;
	sprintf(TempStr, "零序电压电流相角差= %4.2lf", F0alpha[0][0]-F0alpha[1][0]);
    pDC->TextOut(xp, yp, TempStr);
	pDC->SelectObject( OldFont);
	FontD.DeleteObject();
    FontX.DeleteObject();
    
	pDC->SelectObject(OldPen);
    Pen[0][0].DeleteObject();
	Pen[0][1].DeleteObject();
	Pen[0][2].DeleteObject();
	Pen[1][0].DeleteObject();
	Pen[1][1].DeleteObject();
	Pen[1][2].DeleteObject();
	
	/*pDC->SelectObject(OldBrush);
	Brush[0].DeleteObject();
	Brush[1].DeleteObject();
	Brush[2].DeleteObject();*/
}

/////////////////////////////////////////////////////////////////////////////
// CAna2_32View diagnostics

#ifdef _DEBUG
void CAna2_32View::AssertValid() const
{
	CView::AssertValid();
}

void CAna2_32View::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG



void CAna2_32View::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CAna_32View::OnBeginPrinting(pDC, pInfo);
}

void CAna2_32View::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CAna_32View::OnEndPrinting(pDC, pInfo);
}

void CAna2_32View::OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point, CPreviewView* pView) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CAna_32View::OnEndPrintPreview(pDC, pInfo, point, pView);
}

void CAna2_32View::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
{
    CScrollView::OnPrepareDC(pDC, pInfo);	
    if(pDC->IsPrinting())
		pDC->SetMapMode(MM_LOMETRIC);
	else
		pDC->SetMapMode(MM_TEXT);
}

BOOL CAna2_32View::OnPreparePrinting(CPrintInfo* pInfo) 
{
	pInfo->SetMaxPage(1);
	return DoPreparePrinting(pInfo);
}

void CAna2_32View::OnPrint(CDC* pDC, CPrintInfo* pInfo) 
{
	// TODO: Add your specialized code here and/or call the base class
    CWgl_32Doc* pDoc = GetDocument();
	if(pDoc->m_FaultLineNo == -1)
	  {
	    pDC->TextOut(100,100, "无故障线路!");
		return;
	  }
	FFT();     
	CRect rect;
	GetClientRect( &rect );
	WORD CurveHeigh = m_HalfCurveHeigh*2;

	int xl = rect.left+10;
	int xr = rect.right;
	int yt = rect.top+10;
	int yb = rect.bottom;
	int  i;

	as = -0.5;  ax = sqrt(3)/2.;
	bs = -0.5;  bx = -sqrt(3)/2.;
   
   /////////////////////  UUUUUU ////////////////////////
	Uas = A[0][1] + A[1][1] + A[2][1];  //ua实部
	Uax = B[0][1] + B[1][1] + B[2][1];  //ua虚部

	Ua = sqrt(Uas*Uas + Uax*Uax)/3.0;
	
	if(Uas<0)Ualpha[0] = 180 + atan(Uax/Uas)*180/PI;
	else   Ualpha[0] = atan(Uax/Uas)*180/PI;


	Ubs = A[0][1] + (as*A[1][1] -ax*B[1][1]) + (bs*A[2][1] - bx*B[2][1]);  //ub实部
    Ubx = B[0][1] + (as*B[1][1] +ax*A[1][1]) + (bs*B[2][1] + bx*A[2][1]);  //ub虚部

	Ub = sqrt(Ubs*Ubs + Ubx*Ubx)/3.0;
	if(Ubs<0) Ualpha[1] = atan(Ubx/Ubs)*180/PI +180;
	else Ualpha[1] = atan(Ubx/Ubs)*180/PI;

    Ucs = A[0][1] + (bs*A[1][1] -bx*B[1][1]) + (as*A[2][1] - ax*B[2][1]);  //uc实部
    Ucx = B[0][1] + (bs*B[1][1] +bx*A[1][1]) + (as*B[2][1] + ax*A[2][1]);  //uc虚部

	Uc = sqrt(Ucs*Ucs + Ucx*Ucx)/3.0;
    if(Ucs<0) Ualpha[2] = 180 + atan(Ucx/Ucs)*180/PI;
	else Ualpha[2] = atan(Ucx/Ucs)*180/PI;

    /////// Fa0, Fb0, Fc0  ///////
	Fa0s[0] = Ua*cos(Ualpha[0]*PI/180.);
	Fa0x[0] = Ua*sin(Ualpha[0]*PI/180.);
	Fa0[0]  = Ua;
	F0alpha[0][0] = Ualpha[0];

	Fb0s[0] = Fa0s[0];
	Fb0x[0] = Fa0x[0];
	Fb0[0]  = Ua;
	F0alpha[0][1] = Ualpha[0];

    Fc0s[0] = Fa0s[0];
	Fc0x[0] = Fa0x[0];
	Fc0[0]  = Ua;
	F0alpha[0][2] = Ualpha[0];
		   
    /////// Fa1, Fb1, Fc1    ///////
	Fa1s[0] = Ub*cos(Ualpha[1]*PI/180.);
	Fa1x[0] = Ub*sin(Ualpha[1]*PI/180.);
	Fa1[0] = Ub;
	F1alpha[0][0] = Ualpha[1];

    Fb1s[0] = bs*Fa1s[0] - bx*Fa1x[0];
	Fb1x[0] = bs*Fa1x[0] + bx*Fa1s[0];

	Fb1[0] = sqrt(Fb1s[0]*Fb1s[0] + Fb1x[0]*Fb1x[0]);
    if(Fb1s[0] < 0) F1alpha[0][1] = 180 + 180*atan(Fb1x[0]/Fb1s[0])/PI;
	else  F1alpha[0][1] =  180*atan(Fb1x[0]/Fb1s[0])/PI;

    Fc1s[0] = as*Fa1s[0] - ax*Fa1x[0];
	Fc1x[0] = as*Fa1x[0] + ax*Fa1s[0];

	Fc1[0] = sqrt(Fc1s[0]*Fc1s[0] + Fc1x[0]*Fc1x[0]);
    if(Fc1s[0] < 0) F1alpha[0][2] = 180 + atan(Fc1x[0]/Fc1s[0])*180/PI;
	else F1alpha[0][2] =  atan(Fc1x[0]/Fc1s[0])*180/PI;

    ////////////// Fa2, Fb2, Fc2 /////////////////
	Fa2s[0] = Uc*cos(Ualpha[2]*PI/180.);
	Fa2x[0] = Uc*sin(Ualpha[2]*PI/180.);
	Fa2[0] = Uc;
    F2alpha[0][0] = Ualpha[2];

	Fb2s[0] = as*Fa2s[0] - ax*Fa2x[0];
    Fb2x[0] = as*Fa2x[0] + ax*Fa2s[0];
	Fb2[0] = sqrt(Fb2s[0]*Fb2s[0] + Fb2x[0]*Fb2x[0]);
	if(Fb2s[0] < 0) F2alpha[0][1] = 180 + 180*atan(Fb2x[0]/Fb2s[0])/PI;
	else  F2alpha[0][1] =  180*atan(Fb2x[0]/Fb2s[0])/PI;

    Fc2s[0] = bs*Fa2s[0] - bx*Fa2x[0];
	Fc2x[0] = bs*Fa2x[0] + bx*Fa2s[0];
	
	Fc2[0] = sqrt(Fc2s[0]*Fc2s[0] + Fc2x[0]*Fc2x[0]);
    if(Fc2s[0] < 0) F2alpha[0][2] = 180 + atan(Fc2x[0]/Fc2s[0])*180/PI;
	else F2alpha[0][2] =  atan(Fc2x[0]/Fc2s[0])*180/PI;

    ////////////// Fa, Fb, Fc /////////////////
	Fas[0] = Fa0s[0] + Fa1s[0] + Fa2s[0];
	Fax[0] = Fa0x[0] + Fa1x[0] + Fa2x[0];
	Fa[0] = sqrt(Fas[0]*Fas[0] + Fax[0]*Fax[0]);
    if(Fas[0] < 0)Falpha[0][0] = 180 + atan(Fax[0]/Fas[0])*180/PI;
	else Falpha[0][0] =  atan(Fax[0]/Fas[0])*180/PI;


    Fbs[0] = Fb0s[0] + Fb1s[0] + Fb2s[0];
	Fbx[0] = Fb0x[0] + Fb1x[0] + Fb2x[0];
	Fb[0] = sqrt(Fbs[0]*Fbs[0] + Fbx[0]*Fbx[0]);
    if(Fbs[0] < 0)Falpha[0][1] = 180 + atan(Fbx[0]/Fbs[0])*180/PI;
	else Falpha[0][1] = atan(Fbx[0]/Fbs[0])*180/PI;

    Fcs[0] = Fc0s[0] + Fc1s[0] + Fc2s[0];
	Fcx[0] = Fc0x[0] + Fc1x[0] + Fc2x[0];
	Fc[0] = sqrt(Fcs[0]*Fcs[0] + Fcx[0]*Fcx[0]);
    if(Fcs[0] < 0)Falpha[0][2] = 180 + atan(Fcx[0]/Fcs[0])*180/PI;
	else Falpha[0][2] = atan(Fcx[0]/Fcs[0])*180/PI;
	
    ///////////////////   IIIIII   //////// 
	Ias = A[4][1] + A[5][1] + A[6][1];  //ua实部
	Iax = B[4][1] + B[5][1] + B[6][1];  //ua虚部

	Ia = sqrt(Ias*Ias + Iax*Iax)/3.0;
	if(Ias < 0) Ialpha[0] = 180 + 180*atan(Iax/Ias)/PI;
	else Ialpha[0] = 180*atan(Iax/Ias)/PI;

	Ibs = A[4][1] + (as*A[5][1] -ax*B[5][1]) + (bs*A[6][1] - bx*B[6][1]);  //ub实部
    Ibx = B[4][1] + (as*B[5][1] +ax*A[5][1]) + (bs*B[6][1] + bx*A[6][1]);  //ub虚部

⌨️ 快捷键说明

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