📄 ana2_32view.cpp
字号:
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 + -