{"id":172,"date":"2021-01-17T08:38:49","date_gmt":"2021-01-17T00:38:49","guid":{"rendered":"http:\/\/liyanliang.net\/?p=172"},"modified":"2021-01-17T08:44:55","modified_gmt":"2021-01-17T00:44:55","slug":"%e4%b8%a4%e8%b7%a8%e8%bf%9e%e7%bb%ad%e6%a2%81%e5%bd%b1%e5%93%8d%e7%ba%bf%e7%bb%98%e5%88%b6","status":"publish","type":"post","link":"http:\/\/liyanliang.net\/index.php\/2021\/01\/17\/%e4%b8%a4%e8%b7%a8%e8%bf%9e%e7%bb%ad%e6%a2%81%e5%bd%b1%e5%93%8d%e7%ba%bf%e7%bb%98%e5%88%b6\/","title":{"rendered":"\u4e24\u8de8\u8fde\u7eed\u6881\u5f71\u54cd\u7ebf\u7ed8\u5236-\u9644\u6e90\u7801"},"content":{"rendered":"\n<p>\u4e00\u3001\u9898\u76ee\u63cf\u8ff0<\/p>\n\n\n\n<p>1.\u7528\u6237\u8f93\u5165L1\u548cL2\u7684\u503c\uff0c\u6c42D\u70b9\u5f2f\u77e9\u5f71\u54cd\u7ebf\uff1b<\/p>\n\n\n\n<p>2.\u8f66\u8f86\u5728\u6b64\u8fde\u7eed\u6881\u4e0a\u524d\u540e\u4efb\u610f\u79fb\u52a8\uff0c\u6c42\u51fa\u8f66\u8f86\u5bf9D\u70b9\u4ea7\u751f\u7684\u5f2f\u77e9\u6700\u5927\u6548\u5e94\u7cfb\u6570\u3002<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20191219084055752.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNDE2MDUy,size_16,color_FFFFFF,t_70\"><\/p>\n\n\n\n<p>\u4e8c\u3001\u6548\u679c<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/liyanliangpublic.oss-cn-hongkong.aliyuncs.com\/img\/%E4%B8%A4%E8%B7%A8%E8%BF%9E%E7%BB%AD%E6%A2%81%E5%BD%B1%E5%93%8D%E7%BA%BF.gif\" alt=\"\"\/><\/figure>\n\n\n\n<p>\u4e09\u3001\u4ee3\u7801\u5b9e\u73b0<\/p>\n\n\n\n<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><ul><li><a href=\"#CCalculationcpp\"><span class=\"toc_number toc_depth_2\">0.1<\/span> CCalculation.cpp<\/a><\/li><li><a href=\"#CDrawLinecpp\"><span class=\"toc_number toc_depth_2\">0.2<\/span> CDrawLine.cpp<\/a><ul><li><a href=\"#InfluenceLineDlgcpp\"><span class=\"toc_number toc_depth_3\">0.2.1<\/span> InfluenceLineDlg.cpp<\/a><\/li><\/ul><\/li><\/ul><\/li><li><a href=\"#i\"><span class=\"toc_number toc_depth_1\">1<\/span> \u56db\u3001\u9879\u76ee\u5b8c\u6574\u4ee3\u7801\u5b9e\u73b0<\/a><\/li><li><a href=\"#i-2\"><span class=\"toc_number toc_depth_1\">2<\/span> \u4e94\u3001\u9644\u5f55<\/a><\/li><\/ul><\/div>\n<h2 class=\"wp-block-heading\"><span id=\"CCalculationcpp\">CCalculation.cpp<\/span><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">#include \"stdafx.h\"\n#include \"CCalculation.h\"\n#include \n\u200b\nCCalculation::CCalculation(void)\n{\n}\n\u200b\n\u200b\nCCalculation::CCalculation(const double l1,const double l2)\n \u00a0  :m_dL1(l1),m_dL2(l2)\n{\n\u200b\n\u200b\n}\n\u200b\n\u200b\nCCalculation::CCalculation(const double l1,const double l2,const double l3)\n \u00a0  :m_dL1(l1),m_dL2(l2),m_dL3(l3)\n{\n\u200b\n\u200b\n}\n\u200b\n\u200b\nCCalculation::~CCalculation(void)\n{\n}\n\u200b\n\u200b\nvoid CCalculation::Initlize(void)\n{\n \u00a0 \u00a0m_dL1 = 100;\n \u00a0 \u00a0m_dL2 = 100;\n \u00a0 \u00a0m_dL3 = 3;\n}\n\u200b\n\u200b\ndouble CCalculation::GetInfluenceY(const double x) const\n{\n \u00a0 \u00a0double dL1=GetSpanL1();\n \u00a0 \u00a0double dL2=GetSpanL2();\n \u00a0 \u00a0double dL=GetLength();\n \u00a0 \u00a0double dResult = 0;\n \u00a0 \u00a0assert(x>=0);\n \u00a0 \u00a0\/\/\u5355\u4f4d\u529bFp\u4ece\u53f3\u5411\u5de6\u79fb\u52a8\n \u00a0 \u00a0if (x>=0 &amp;&amp; x&lt;=dL2\/2.0) \/\/\u7b2c\u4e8c\u8de8(\u53f3)\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0dResult = ((pow(x,3)+xpow(dL2,2))\/dL2+2.0dL1x)\/(4.0(dL1+dL2));\n \u00a0 \u00a0 \u00a0 \u00a0return dResult;\n \u00a0  }\n \u00a0 \u00a0else if(x>dL2\/2.0 &amp;&amp; x&lt;=dL2) \/\/\u7b2c\u4e8c\u8de8(\u5de6)\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0dResult = (pow(dL2-x,2)(x+2dL2)\/dL2+2.0dL1(dL2-x))\/(4.0(dL1+dL2));\n \u00a0 \u00a0 \u00a0 \u00a0return dResult;\n \u00a0  }\n \u00a0 \u00a0else \/\/if(x>dL2 &amp;&amp; x&lt;=dL)\/\/\u7b2c\u4e00\u8de8\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0\/\/\u4f7f\u7528\u529b\u6cd5\u8ba1\u7b97\u62d0\u70b9\u5f2f\u77e9M1\u548cM2\n \u00a0 \u00a0 \u00a0 \u00a0double dDelta1=(2.0dL1+dL2)\/6.0;\n \u00a0 \u00a0 \u00a0 \u00a0double dY1=(dL1+dL2-x)\/dL1;\n \u00a0 \u00a0 \u00a0 \u00a0double dY2=(dL1+dL2-x)(x-dL2)\/dL1;\n \u00a0 \u00a0 \u00a0 \u00a0double dP=(dL1+dL2-x)dY2dY1\/3.0+(x-dL2)dY2(2.0dY1\/3.0+1.0\/3.0)\/2.0;\n \u00a0 \u00a0 \u00a0 \u00a0double dM1=-dP\/dDelta1;\n \u00a0 \u00a0 \u00a0 \u00a0double dM2=dY1dM1+dY2;\n \u00a0 \u00a0 \u00a0 \u00a0\/\/\u8ba1\u7b97\u5f71\u54cd\u7ebf\n \u00a0 \u00a0 \u00a0 \u00a0double a=2.0(dL1+dL2-x)\/dL1;\n \u00a0 \u00a0 \u00a0 \u00a0double dDelta2=4.0(dL1+dL2)\/3.0;\n \u00a0 \u00a0 \u00a0 \u00a0double dP1 = (dL1+dL2-x)dM2a\/3.0;\n \u00a0 \u00a0 \u00a0 \u00a0double dP2 = (x-dL2)*(2.0dM2a+4.0dM1+2.0dM2+dM1a)\/6.0;\n \u00a0 \u00a0 \u00a0 \u00a0double dP3 = 5.0*dM1\/12.0;\n \u00a0 \u00a0 \u00a0 \u00a0double dp = dP1 + dP2 + dP3;\n \u00a0 \u00a0 \u00a0 \u00a0dResult = -dp\/dDelta2;\n \u00a0 \u00a0 \u00a0 \u00a0return dResult;\n \u00a0  }\n\u200b\n\u200b\n}\n\u200b\n\u200b\n\/\/\u8ba1\u7b97\u6548\u5e94\u7cfb\u6570\ndouble CCalculation::GetEffectCoeffient() const\n{\n \u00a0 \u00a0double dInfluenceLineMaxY = 0;\n \u00a0 \u00a0double dAllLength = GetLength();\n \u00a0 \u00a0double dLength1 = GetSpanL1();\n \u00a0 \u00a0double dLength2 = GetSpanL2();\n \u00a0 \u00a0double dLength3 = GetSpanL3();\n\u200b\n\u200b\ndouble dTempY = 0;\nCPoint MaxPoint(0,0);\n\/\/\u627e\u5230\u6700\u5927\u6548\u7528\u7cfb\u6570\nfor (int i = 0;i &lt;= dAllLength; i++) \u00a0\/\/\u8f66\u8f86\u4ece\u53f3\u5411\u5de6\u8fd0\u884c\n{\n \u00a0 \u00a0dTempY = GetInfluenceY(i);\n \u00a0 \u00a0if (abs(dTempY) > abs(dInfluenceLineMaxY))\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0dInfluenceLineMaxY = dTempY;\n \u00a0 \u00a0 \u00a0 \u00a0MaxPoint.x = i;\n \u00a0 \u00a0 \u00a0 \u00a0MaxPoint.y = (int)dInfluenceLineMaxY;\n \u00a0  } \u00a0 \u00a0\n}\n\u200b\nCPoint MaxPoint2(0,0);\nif (MaxPoint.x &lt; dLength2) \/\/\u82e5\u6700\u5927\u70b9\u5728BC\u8de8\n{\n \u00a0 \u00a0MaxPoint2.x = MaxPoint.x + (int)dLength3;\n \u00a0 \u00a0MaxPoint2.y = (int)GetInfluenceY(MaxPoint2.x);\n}\nelse \/\/\u82e5\u6700\u5927\u70b9\u5728AB\u8de8\n{\n \u00a0 \u00a0MaxPoint2.x = MaxPoint.x - (int)dLength3;\n \u00a0 \u00a0MaxPoint2.y = (int)GetInfluenceY(MaxPoint2.x);\n}\nreturn abs(MaxPoint.y + MaxPoint2.y);\n\u200b\n}\n\u200b\n\u200b\ndouble CCalculation::GetSpanL1() const\n{\n \u00a0 \u00a0return m_dL1;\n}\n\u200b\n\u200b\ndouble CCalculation::GetSpanL2() const\n{\n \u00a0 \u00a0return m_dL2;\n}\n\u200b\n\u200b\ndouble CCalculation::GetSpanL3() const\n{\n \u00a0 \u00a0return m_dL3;\n}\n\u200b\n\u200b\ndouble CCalculation::GetLength() const\n{\n \u00a0 \u00a0return m_dL1+m_dL2;\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span id=\"CDrawLinecpp\">CDrawLine.cpp<\/span><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">#include \"stdafx.h\"\n#include \"CDrawLine.h\"\n\u200b\n#include \u201cresource.h\u201d\n#include \u201cCCalculation.h\u201d\n#include \u201cInfluenceLineDlg.h\u201d\n\u200b\n\u200b\nCDrawLine::CDrawLine(void)\n{\n\u200b\n\u200b\n}\n\u200b\n\u200b\nCDrawLine::~CDrawLine(void)\n{\n}\n\u200b\n\u200b\nvoid CDrawLine::DrawInfulenceLine(CWnd *pWnd,double dLength1,double dLength2) const\n{\n \u00a0 \u00a0CRect rect;\n \u00a0 \u00a0pWnd->GetClientRect(&amp;rect);\n \u00a0 \u00a0CDC *pDC = pWnd->GetDC();\n \u00a0 \u00a0pWnd->Invalidate();\n \u00a0 \u00a0pWnd->UpdateWindow();\n\u200b\n\u200b\n\/\/\u5c06\u80cc\u666f\u989c\u8272\u4e3a\u767d\u8272\nCBrush newBrush; \u00a0 \nCBrush *pOldBrush; \nnewBrush.CreateSolidBrush(RGB(255,255,255)); \u00a0 \npOldBrush = pDC->SelectObject(&amp;newBrush); \u00a0 \npDC->Rectangle(rect); \u00a0 \npDC->SelectObject(pOldBrush); \u00a0 \nnewBrush.DeleteObject(); \u00a0 \n\u200b\n\/\/\u521b\u5efa\u9ed1\u8272\u753b\u7b14\nCPen newPen; \u00a0 \u00a0 \u00a0 \nCPen *pOldPen; \u00a0 \u00a0\nnewPen.CreatePen(PS_SOLID, 2, RGB(0,0,0)); \u00a0 \npOldPen = pDC->SelectObject(&amp;newPen); \u00a0 \n\u200b\nCCalculation Cal(dLength1,dLength2);\ndouble dL = Cal.GetLength();\ndouble dL1 = Cal.GetSpanL1();\ndouble dL2 = Cal.GetSpanL2();\n\u200b\nint nWidth = rect.Width();\nint nHeight = rect.Height();\n\u200b\n\/\/\u7ed8\u5236\u6a2a\u8f74\nCPoint StartPt(nWidth\/10,nHeight\/2);\nCPoint EndPt(9*nWidth\/10,nHeight\/2);\npDC->MoveTo(StartPt);\npDC->LineTo(EndPt);\n\u200b\n\/\/\u7ed8\u5236\u4e09\u89d2\u5f62\u652f\u5ea7\nCPoint Pt1[4];\nPt1[0] = StartPt;\nPt1[1] = CPoint(StartPt.x-12, StartPt.y+20);\nPt1[2] = CPoint(StartPt.x+12, StartPt.y+20);\nPt1[3] = StartPt;\npDC->Polyline(Pt1, 4);\n\u200b\nCPoint MiddlePt(nWidth\/10+(int)(dL1*(8*nWidth\/10)\/dL), nHeight\/2);\nCPoint Pt2[4];\nPt2[0] = MiddlePt;\nPt2[1] = CPoint(MiddlePt.x-12, MiddlePt.y+20);\nPt2[2] = CPoint(MiddlePt.x+12, \u00a0MiddlePt.y+20);\nPt2[3] = MiddlePt;\npDC->Polyline(Pt2, 4);\n\u200b\nCPoint Pt3[4];\nPt3[0] = EndPt;\nPt3[1] = CPoint(EndPt.x-12, EndPt.y+20);\nPt3[2] = CPoint(EndPt.x+12, EndPt.y+20);\nPt3[3] = EndPt;\npDC->Polyline(Pt3, 4);\n\u200b\n\/\/\u5728\u56fe\u4e2d\u8f93\u51fa\u652f\u5ea7\u7f16\u53f7A\u3001B\u3001C\npDC->TextOut(StartPt.x,StartPt.y+25,_T(\"A\"));\npDC->TextOut(MiddlePt.x,MiddlePt.y+25,_T(\"B\"));\npDC->TextOut(EndPt.x,EndPt.y+25,_T(\"C\"));\npDC->TextOut((MiddlePt.x+EndPt.x-MiddlePt.x)\/2,MiddlePt.y+25,_T(\"D\"));\n\/\/\u5728\u56fe\u4e2d\u8f93\u51fa\u8de8\u5ea6\u7f16\u53f7L1\u3001L2\npDC->TextOut(StartPt.x+(MiddlePt.x+StartPt.x)\/2,StartPt.y-25,_T(\"L1\"));\npDC->TextOut(MiddlePt.x+(EndPt.x+MiddlePt.x)\/2,StartPt.y-25,_T(\"L2\"));\n\u200b\n\/\/\u7ed8\u5236\u5f71\u54cd\u7ebf\nint nX=0;\nint nY=0;\nint nTemp = 0;\ndouble dResultY = 0;\nCPoint CoorMaxDraw(0,nHeight\/2); \u00a0\/\/\u8bb0\u5f55BC\u8de8\u5f71\u54cd\u7ebf\u6700\u5927\u503c\u7684\u56fe\u5f62\u5750\u6807\u70b9\nCPoint CoorMaxReal(0,0); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/\u8bb0\u5f55BC\u8de8\u5f71\u54cd\u7ebf\u6700\u5927\u503c\u7684\u8ba1\u7b97\u771f\u5b9e\u503c\n\/*CPoint CoorMinDraw(0,nHeight\/2);  \/\/\u8bb0\u5f55AB\u8de8\u5f71\u54cd\u7ebf\u6700\u5927\u503c\u7684\u56fe\u5f62\u5750\u6807\u70b9\nCPoint CoorMinReal(0,0); \u00a0 \u00a0 \u00a0 \u00a0  \/\/\u8bb0\u5f55AB\u8de8\u5f71\u54cd\u7ebf\u6700\u5927\u503c\u7684\u8ba1\u7b97\u771f\u5b9e\u503c*\/\nfor (int i = 0;i &lt;=(int)dL; i++)\n{\n \u00a0 \u00a0nTemp = (int)dL - i;\n \u00a0 \u00a0nX=nWidth\/10+(nTemp*8*nWidth\/10)\/(int)dL;\n \u00a0 \u00a0dResultY = Cal.GetInfluenceY(i);\n \u00a0 \u00a0nY=(int)((double)nHeight\/2 - dResultY*5.0); \u00a0 \u00a0\n \u00a0 \u00a0pDC->LineTo(nX,nY);\n \u00a0 \u00a0\/\/\u8bb0\u5f55BC\u8de8\u5f71\u54cd\u7ebf\u6700\u5927\u70b9\n \u00a0 \u00a0int nTempY = -(nY-nHeight\/2);\n \u00a0 \u00a0int nTempDrawMaxY = -(CoorMaxDraw.y -nHeight\/2);\n \u00a0 \u00a0if (nTempY >= nTempDrawMaxY)\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0CoorMaxDraw.x = nX;\n \u00a0 \u00a0 \u00a0 \u00a0CoorMaxDraw.y = nY;\n \u00a0 \u00a0 \u00a0 \u00a0CoorMaxReal.x = i;\n \u00a0 \u00a0 \u00a0 \u00a0CoorMaxReal.y = (int)dResultY;\n \u00a0  }\n \u00a0 \u00a0\/\/\u8bb0\u5f55AB\u8de8\u5f71\u54cd\u7ebf\u6700\u5927\u70b9\n \u00a0 \u00a0\/*int nTempDrawMinY = -(CoorMinDraw.y -nHeight\/2);\n \u00a0 \u00a0if (nTempY &lt; nTempDrawMinY)\n \u00a0 \u00a0{\n \u00a0 \u00a0 \u00a0 \u00a0CoorMinDraw.x = nX;\n \u00a0 \u00a0 \u00a0 \u00a0CoorMinDraw.y = nY;\n \u00a0 \u00a0 \u00a0 \u00a0CoorMinReal.x = i;\n \u00a0 \u00a0 \u00a0 \u00a0CoorMinReal.y = (int)dResultY;\n \u00a0 \u00a0}*\/\n}\n\u200b\n\/\/\u8f93\u51faBC\u8de8\u6700\u5927\u5f2f\u77e9\u5f71\u54cd\u7cfb\u6570 \u00a0 \u00a0\nCString strY2=_T(\"\");\nstrY2.Format(_T(\"%d\"),CoorMaxReal.y);\npDC->TextOut(CoorMaxDraw.x-10,CoorMaxDraw.y-25,strY2);\n\u200b\n\/\/\u8f93\u51faAB\u8de8\u6700\u5927\u5f2f\u77e9\u5f71\u54cd\u7cfb\u6570 \u00a0 \u00a0\n\/*CString strY1=_T(\"\");\nstrY1.Format(_T(\"%d\"),abs(CoorMinReal.y));\npDC->TextOut(CoorMinDraw.x-15,CoorMinDraw.y+5,strY1);*\/\n\u200b\npDC->SelectObject(pOldPen); \u00a0 \nnewPen.DeleteObject(); \u00a0\n\u200b\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span id=\"InfluenceLineDlgcpp\">InfluenceLineDlg.cpp<\/span><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ InfluenceLineDlg.cpp : \u5b9e\u73b0\u6587\u4ef6\n\/\/\n\u200b\n#include \u201cstdafx.h\u201d\n#include \u201cInfluenceLine.h\u201d\n#include \u201cInfluenceLineDlg.h\u201d\n#include \u201cafxdialogex.h\u201d\n#include \u201cCCalculation.h\u201d\n#include \u201cCDrawLine.h\u201d\n\u200b\n\u200b\n#ifdef _DEBUG\n#define new DEBUG_NEW\n#endif\n\u200b\n\u200b\n\/\/ \u7528\u4e8e\u5e94\u7528\u7a0b\u5e8f\u201c\u5173\u4e8e\u201d\u83dc\u5355\u9879\u7684 CAboutDlg \u5bf9\u8bdd\u6846\n\u200b\n\u200b\nclass CAboutDlg : public CDialogEx\n{\npublic:\n \u00a0 \u00a0CAboutDlg();\n\u200b\n\u200b\n\/\/ \u5bf9\u8bdd\u6846\u6570\u636e\n \u00a0 \u00a0enum { IDD = IDD_ABOUTBOX };\n\u200b\n\u200b\nprotected:\nvirtual void DoDataExchange(CDataExchange* pDX); \u00a0 \u00a0\/\/ DDX\/DDV \u652f\u6301\n\u200b\n\/\/ \u5b9e\u73b0\nprotected:\n \u00a0 \u00a0DECLARE_MESSAGE_MAP()\n};\n\u200b\n\u200b\nCAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)\n{\n}\n\u200b\n\u200b\nvoid CAboutDlg::DoDataExchange(CDataExchange* pDX)\n{\n \u00a0 \u00a0CDialogEx::DoDataExchange(pDX);\n}\n\u200b\n\u200b\nBEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)\nEND_MESSAGE_MAP()\n\u200b\n\u200b\n\/\/ CInfluenceLineDlg \u5bf9\u8bdd\u6846\n\u200b\n\u200b\nCInfluenceLineDlg::CInfluenceLineDlg(CWnd* pParent \/=NULL\/)\n \u00a0  : CDialogEx(CInfluenceLineDlg::IDD, pParent)\n \u00a0  , m_dLength3(0)\n \u00a0  , m_dEffCoeff(0)\n{\n \u00a0 \u00a0m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);\n \u00a0 \u00a0CCalculation calInit;\n \u00a0 \u00a0calInit.Initlize();\n\u200b\n\u200b\nm_dLength1 = calInit.GetSpanL1();\nm_dLength2 = calInit.GetSpanL2();\nm_dLength3 = calInit.GetSpanL3();\nm_dEffCoeff = calInit.GetEffectCoeffient();\n\u200b\n}\n\u200b\n\u200b\nvoid CInfluenceLineDlg::DoDataExchange(CDataExchange* pDX)\n{\n \u00a0 \u00a0CDialogEx::DoDataExchange(pDX);\n \u00a0 \u00a0DDX_Text(pDX, IDC_EDIT1, m_dLength1);\n \u00a0 \u00a0DDX_Text(pDX, IDC_EDIT2, m_dLength2);\n \u00a0 \u00a0DDX_Control(pDX, IDC_INFLUENCELINE_DRAW, m_picDraw);\n \u00a0 \u00a0DDX_Text(pDX, IDC_EDIT4, m_dLength3);\n \u00a0 \u00a0DDX_Text(pDX, IDC_EDIT_COEFFICIENT, m_dEffCoeff);\n}\n\u200b\n\u200b\nBEGIN_MESSAGE_MAP(CInfluenceLineDlg, CDialogEx)\n \u00a0 \u00a0ON_WM_SYSCOMMAND()\n \u00a0 \u00a0ON_WM_PAINT()\n \u00a0 \u00a0ON_WM_QUERYDRAGICON()\n \u00a0 \u00a0ON_BN_CLICKED(IDC_BUTTON_INFLUENCELINE, &amp;CInfluenceLineDlg::OnBnClickedButtonInfluenceline)\n \u00a0 \u00a0ON_BN_CLICKED(IDC_BUTTON_EFFECT_COEFFIENT, &amp;CInfluenceLineDlg::OnBnClickedButtonEffectCoeffient)\nEND_MESSAGE_MAP()\n\u200b\n\u200b\n\/\/ CInfluenceLineDlg \u6d88\u606f\u5904\u7406\u7a0b\u5e8f\n\u200b\n\u200b\nBOOL CInfluenceLineDlg::OnInitDialog()\n{\n \u00a0 \u00a0CDialogEx::OnInitDialog();\n\u200b\n\u200b\n\/\/ \u5c06\u201c\u5173\u4e8e...\u201d\u83dc\u5355\u9879\u6dfb\u52a0\u5230\u7cfb\u7edf\u83dc\u5355\u4e2d\u3002\n\u200b\n\/\/ IDM_ABOUTBOX \u5fc5\u987b\u5728\u7cfb\u7edf\u547d\u4ee4\u8303\u56f4\u5185\u3002\nASSERT((IDM_ABOUTBOX &amp; 0xFFF0) \u00a0IDM_ABOUTBOX);\nASSERT(IDM_ABOUTBOX &lt; 0xF000);\n\u200b\nCMenu* pSysMenu = GetSystemMenu(FALSE);\nif (pSysMenu != NULL)\n{\n \u00a0 \u00a0BOOL bNameValid;\n \u00a0 \u00a0CString strAboutMenu;\n \u00a0 \u00a0bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);\n \u00a0 \u00a0ASSERT(bNameValid);\n \u00a0 \u00a0if (!strAboutMenu.IsEmpty())\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0pSysMenu->AppendMenu(MF_SEPARATOR);\n \u00a0 \u00a0 \u00a0 \u00a0pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);\n \u00a0  }\n}\n\u200b\n\/\/ \u8bbe\u7f6e\u6b64\u5bf9\u8bdd\u6846\u7684\u56fe\u6807\u3002\u5f53\u5e94\u7528\u7a0b\u5e8f\u4e3b\u7a97\u53e3\u4e0d\u662f\u5bf9\u8bdd\u6846\u65f6\uff0c\u6846\u67b6\u5c06\u81ea\u52a8\n\/\/  \u6267\u884c\u6b64\u64cd\u4f5c\nSetIcon(m_hIcon, TRUE); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ \u8bbe\u7f6e\u5927\u56fe\u6807\nSetIcon(m_hIcon, FALSE); \u00a0 \u00a0 \u00a0 \u00a0\/\/ \u8bbe\u7f6e\u5c0f\u56fe\u6807\n\u200b\n\/\/ TODO: \u5728\u6b64\u6dfb\u52a0\u989d\u5916\u7684\u521d\u59cb\u5316\u4ee3\u7801\n\u200b\n\u200b\nreturn TRUE; \u00a0\/\/ \u9664\u975e\u5c06\u7126\u70b9\u8bbe\u7f6e\u5230\u63a7\u4ef6\uff0c\u5426\u5219\u8fd4\u56de TRUE\n\u200b\n}\n\u200b\n\u200b\nvoid CInfluenceLineDlg::OnSysCommand(UINT nID, LPARAM lParam)\n{\n \u00a0 \u00a0if ((nID &amp; 0xFFF0) \u00a0IDM_ABOUTBOX)\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0CAboutDlg dlgAbout;\n \u00a0 \u00a0 \u00a0 \u00a0dlgAbout.DoModal();\n \u00a0  }\n \u00a0 \u00a0else\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0CDialogEx::OnSysCommand(nID, lParam);\n \u00a0  }\n}\n\u200b\n\u200b\n\/\/ \u5982\u679c\u5411\u5bf9\u8bdd\u6846\u6dfb\u52a0\u6700\u5c0f\u5316\u6309\u94ae\uff0c\u5219\u9700\u8981\u4e0b\u9762\u7684\u4ee3\u7801\n\/\/  \u6765\u7ed8\u5236\u8be5\u56fe\u6807\u3002\u5bf9\u4e8e\u4f7f\u7528\u6587\u6863\/\u89c6\u56fe\u6a21\u578b\u7684 MFC \u5e94\u7528\u7a0b\u5e8f\uff0c\n\/\/  \u8fd9\u5c06\u7531\u6846\u67b6\u81ea\u52a8\u5b8c\u6210\u3002\n\u200b\n\u200b\nvoid CInfluenceLineDlg::OnPaint()\n{\n \u00a0 \u00a0if (IsIconic())\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0CPaintDC dc(this); \/\/ \u7528\u4e8e\u7ed8\u5236\u7684\u8bbe\u5907\u4e0a\u4e0b\u6587\n\u200b\n\u200b\n \u00a0 \u00a0SendMessage(WM_ICONERASEBKGND, reinterpret_cast&lt;WPARAM>(dc.GetSafeHdc()), 0);\n\u200b\n \u00a0 \u00a0\/\/ \u4f7f\u56fe\u6807\u5728\u5de5\u4f5c\u533a\u77e9\u5f62\u4e2d\u5c45\u4e2d\n \u00a0 \u00a0int cxIcon = GetSystemMetrics(SM_CXICON);\n \u00a0 \u00a0int cyIcon = GetSystemMetrics(SM_CYICON);\n \u00a0 \u00a0CRect rect;\n \u00a0 \u00a0GetClientRect(&amp;rect);\n \u00a0 \u00a0int x = (rect.Width() - cxIcon + 1) \/ 2;\n \u00a0 \u00a0int y = (rect.Height() - cyIcon + 1) \/ 2;\n\u200b\n \u00a0 \u00a0\/\/ \u7ed8\u5236\u56fe\u6807\n \u00a0 \u00a0dc.DrawIcon(x, y, m_hIcon);\n\u200b\n}\nelse\n{\n \u00a0 \u00a0CDialogEx::OnPaint();\n \u00a0 \u00a0\/\/\u521d\u59cb\u5316\u5f71\u54cd\u7ebf\n \u00a0 \u00a0CWnd *pWnd = GetDlgItem(IDC_INFLUENCELINE_DRAW);\n\u200b\n \u00a0 \u00a0CDrawLine Draw;\n \u00a0 \u00a0Draw.DrawInfulenceLine(pWnd,m_dLength1,m_dLength2);\n}\n\u200b\n}\n\u200b\n\u200b\n\/\/\u5f53\u7528\u6237\u62d6\u52a8\u6700\u5c0f\u5316\u7a97\u53e3\u65f6\u7cfb\u7edf\u8c03\u7528\u6b64\u51fd\u6570\u53d6\u5f97\u5149\u6807\n\/\/\u663e\u793a\u3002\nHCURSOR CInfluenceLineDlg::OnQueryDragIcon()\n{\n \u00a0 \u00a0return static_cast(m_hIcon);\n}\n\u200b\n\u200b\n\/\/\u7ed8\u5236\u5f71\u54cd\u7ebf\u6309\u94ae\nvoid CInfluenceLineDlg::OnBnClickedButtonInfluenceline()\n{\n \u00a0 \u00a0\/\/ TODO: \u5728\u6b64\u6dfb\u52a0\u63a7\u4ef6\u901a\u77e5\u5904\u7406\u7a0b\u5e8f\u4ee3\u7801\n \u00a0 \u00a0UpdateData(TRUE);\n\u200b\n\u200b\nif (m_dLength1&lt;30 || m_dLength1>160 || m_dLength2&lt;30 || m_dLength2>160)\n{\n \u00a0 \u00a0 AfxMessageBox(_T(\"\u8fde\u7eed\u6881\u9002\u7528\u8de8\u5ea6\u4e3a30~160m!\"));\n \u00a0 \u00a0 return;\n}\n\u200b\n\/\/\u7ed8\u5236\u5f71\u54cd\u7ebf\nCWnd *pWnd = GetDlgItem(IDC_INFLUENCELINE_DRAW);\n\u200b\nCDrawLine Draw;\nDraw.DrawInfulenceLine(pWnd,m_dLength1,m_dLength2);\n\u200b\n}\n\u200b\n\u200b\n\/\/\u8ba1\u7b97\u6548\u5e94\u7cfb\u6570\u6309\u94ae\nvoid CInfluenceLineDlg::OnBnClickedButtonEffectCoeffient()\n{\n \u00a0 \u00a0\/\/ TODO: \u5728\u6b64\u6dfb\u52a0\u63a7\u4ef6\u901a\u77e5\u5904\u7406\u7a0b\u5e8f\u4ee3\u7801\n \u00a0 \u00a0UpdateData(TRUE);\n \u00a0 \u00a0if (m_dLength3&lt;2 || m_dLength3>10 )\n \u00a0  {\n \u00a0 \u00a0 \u00a0 \u00a0AfxMessageBox(_T(\u201c\u8f66\u8f86\u524d\u540e\u8f6e\u95f4\u8ddd\u5e94\u4e3a2~10m!\u201d));\n \u00a0 \u00a0 \u00a0 \u00a0return;\n \u00a0  }\n \u00a0 \u00a0CCalculation calEfCo(m_dLength1,m_dLength2,m_dLength3);\n \u00a0 \u00a0m_dEffCoeff = calEfCo.GetEffectCoeffient();\n \u00a0 \u00a0UpdateData(FALSE);\n}<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"><span id=\"i\"><strong>\u56db\u3001\u9879\u76ee\u5b8c\u6574\u4ee3\u7801\u5b9e\u73b0<\/strong><\/span><\/h1>\n\n\n\n<p>\u94fe\u63a5\uff1a<\/p>\n\n\n\n<p><a href=\"https:\/\/pan.baidu.com\/s\/19M8uqqfaS8c9JCDG9Tn3Vg\">https:\/\/pan.baidu.com\/s\/19M8uqqfaS8c9JCDG9Tn3Vg<\/a><\/p>\n\n\n\n<p>\u63d0\u53d6\u7801\uff1av52z<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span id=\"i-2\"><strong>\u4e94\u3001\u9644\u5f55<\/strong><\/span><\/h1>\n\n\n\n<p>\u5f71\u54cd\u7ebf\u8ba1\u7b97\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/liyanliangpublic.oss-cn-hongkong.aliyuncs.com\/img\/20191219085514262.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/liyanliangpublic.oss-cn-hongkong.aliyuncs.com\/img\/20191219085708718.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/liyanliangpublic.oss-cn-hongkong.aliyuncs.com\/img\/20191219085846154.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/liyanliangpublic.oss-cn-hongkong.aliyuncs.com\/img\/20191219085824138.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/liyanliangpublic.oss-cn-hongkong.aliyuncs.com\/img\/20191219085930511.jpg\" alt=\"\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u9898\u76ee\u63cf\u8ff0 1.\u7528\u6237\u8f93\u5165L1\u548cL2\u7684\u503c\uff0c\u6c42D\u70b9\u5f2f\u77e9\u5f71\u54cd\u7ebf\uff1b 2.\u8f66\u8f86\u5728\u6b64\u8fde\u7eed\u6881\u4e0a\u524d\u540e\u4efb\u610f\u79fb\u52a8\uff0c\u6c42\u51fa\u8f66\u8f86\u5bf9D\u70b9\u4ea7\u751f\u7684\u5f2f\u77e9\u6700\u5927\u6548\u5e94\u7cfb\u6570\u3002 \u4e8c\u3001\u6548\u679c \u4e09\u3001\u4ee3\u7801\u5b9e\u73b0 Contents0.1 CCalculation.cpp0.2 CDrawLine.cpp0.2.1 InfluenceLineDlg.cpp1 \u56db\u3001\u9879\u76ee\u5b8c\u6574\u4ee3\u7801\u5b9e\u73b02 \u4e94\u3001\u9644\u5f55 CCalculation.cpp #include &#8220;stdafx.h&#8221; #include &#8220;CCalculation.h&#8221; #include \u200b CCalculation::CCalculation(void) { } \u200b \u200b CCalculation::CCalculation(const double l1,const double l2) \u00a0 :m_dL1(l1),m_dL2(l2) { \u200b \u200b } \u200b \u200b CCalculation::CCalculation(const double l1,const double l2,const double l3) \u00a0 :m_dL1(l1),m_dL2(l2),m_dL3(l3) { \u200b \u200b } \u200b \u200b&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"http:\/\/liyanliang.net\/index.php\/2021\/01\/17\/%e4%b8%a4%e8%b7%a8%e8%bf%9e%e7%bb%ad%e6%a2%81%e5%bd%b1%e5%93%8d%e7%ba%bf%e7%bb%98%e5%88%b6\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":173,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[22],"class_list":["post-172","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-20","tag-22"],"_links":{"self":[{"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/posts\/172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/comments?post=172"}],"version-history":[{"count":4,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/posts\/172\/revisions"}],"predecessor-version":[{"id":178,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/posts\/172\/revisions\/178"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/media\/173"}],"wp:attachment":[{"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/media?parent=172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/categories?post=172"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/liyanliang.net\/index.php\/wp-json\/wp\/v2\/tags?post=172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}