程序1
#include\"stdafx.h\" #include\"1111.h\" #include\"1111.Doc.h\" #include\"1111.View.h\"
#ifdef_DEBUG
#define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[]=__FILE__; #endif
IMPLEMENT_DYNCREATE(CMy1111View,CView)
BEGIN_MESSAGE_MAP(CMy1111View,CView)
ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview) END_MASSAGE_MAP()
CMy1111View::CMy1111View() { }
CMy1111View::~CMy1111View() { }
BOOL CMy1111View::PreCreate Window(CREATESTRUCT& cs) {
return CView::PreCreateWindow(cs); }
//CMy1111View drawing
void CMy1111View::OnDraw(CDC*pDC) //求PID参数 {
int i;
Double Kp= ,Ki= ,Kd= ;
1
double r[100];
double y[100],u[100],e[100],datau[100]; y[0]=0; e[0]=0; u[0]=0; e[1]=0; y[1]=0; u[1]=0;
for(i=0;i<100;i++) {
r[i]=4.01; }
for(i=2;i<100;i++) {
e[i]=r[i]-y[i-1];
datau[i]=(Kp+Ki+Kd)*e[i]-(Kp+2*Kd)*e[i-1]+e[i-2]; u[i]=u[i-1]+datau[i];
y[i]=1.724*y[i-1]-0.741*y[i-2]+0.0453*u[i-1]+0.04095*u[i-2];} CPen hPen1(PS_SOLID,1,RGB(0,0,0)); CPen hPen2(PS_SOLID,1,RGB(255,0,0)); CPen hPen3(PS_SOLID,1,RGB(0,255,0)); CPen*pen0; CRect rect0; char s[50]; CFont font;
font.CreateFont(10,6,0, 0,30,FALSE, FALSE,FALSE,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
PROOF_QUALITY,DEFAULT_PITCH|FF_ROMAN,\"Arial\"); CFont*font0
pen0=pDC->SelectObject(&hPen1); //画X-Y坐标轴 pDC->MoveTo(50,610); pDC->LineTo(950,610); pDC->MoveTo(50,610); pDC->LineTo(50,10); pDC->SelectObject(pen0);
pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(950,610); pDC->LineTo(945,605); pDC->MoveTo(950,610); pDC->LineTo(945,615);
2
pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(950,610); pDC->LineTo(945,605); pDC->MoveTo(950,610); pDC->LineTo(945,615); pDC->MoveTo(50,10); pDC->LineTo(45,15); pDC->MoveTo(50,10); pDC->LineTo(55,15); PDC->SelectObject(pen0);
for(i=0;i<=15;i++) //画X轴刻度 {
pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(100+i*50,610); pDC->LineTo(100+i*50,605); pDC->SelectObject(pen0);
rect0.left=90+i*50;
rect0.right=rect0.left+20; rect0.top=615; rect0.bottom=630;
sprintf(s,\"%d\
font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }
for(i=0;i<5;i++) //画Y轴刻度 {
pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(50,510-i*100); pDC->LineTo(55,510-i*100); pDC->SelectObject(pen0);
rect0.left=30;
rect0.right=rect0.left+20; rect0.top=510-i*100-5; rect0.bottom=rect0.top+20; sprintf(s,\"%d\
font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0));
3
pDC->SetMode(TRANSPARENT);
pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }
pen0=pDC->SelectObject(&hPen2); //画曲线r[t] for(i=0;i<99;i++) {
pDC->MoveTo((50+i*5),(610-r[i]*100)); pDC->LineTo((50+i*5+5),(610-r[i+1]*100)); }
pDC->SelectObject(pen0);
pen0=pDC->SelectObject(&hPen3);//画曲线y[t] for(i=0;i<99;i++) {
pDC->MoveTo((50+i*5),(610-y[i]*100)); pDC->LineTo((50+i*5+5),(610-y[i+1]*100)); }
pDC->SelectObject(pen0); hPen1.DeleteObject(); hPen2.DeleteObject(); hPen3.DeleteObject(); font.DeleteObject(); }
//CMy1111View printing
BOOL CMy1111view::OnPreparePrinting(CPrintInfo*pInfo) {
return DoPreparePrinting(pInfo); }
void CMy1111View::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) {
//TODO:add extra initialization before printing }
void CMy1111View::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) {
//TODO:add clean up after printing }
//CMy1111View diagnostics
4
#ifdef_DEBUG
void CMy1111View::AssertValid() const {
CMy1111View::AssertValid(); }
void CMy1111View::Dump(CDumpContest& dc) const {
CView::Dump(dc); }
CMy1111Doc*CMy1111View::GetDocument()//non-debug version is //inline {
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS (CMy1111Doc)));
return(CMy1111Doc*)m_pDocument; }
#endif//_DEBUG
5
程序2
#include\"stdafx.h\" #include\"1111.h\"
#include\"1111.Doc.h\" #include\"1111.View.h\"
#ifdef_DEBUG
#define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[]=__FILE__; #endif
IMPLEMENT_DYNCREATE(CMy1111View,CView)
BEGIN_MESSAGE_MAP(CMy1111View,CView)
ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview) END_MASSAGE_MAP()
CMy1111View::CMy1111View() { }
CMy1111View::~CMy1111View() { }
BOOL CMy1111View::PreCreate Window(CREATESTRUCT& cs) {
return CView::PreCreateWindow(cs); }
void CMy1111View::OnDraw(CDC*pDC) {
int i;
double r[1000]; double y[1000]; double e[1000];
6
double u[1000]; for(i=0;i<1000;i++) r[i]=1; e[0]=0; u[0]=0; y[0]=0; e[1]=0;
u[1]=1/3.68; y[1]=0;
for(i=2;i<1000;i++) {
y[i]=1.368y[i-1]-0.368*y[i-2]+3.68*u[i-1]+2.224*u[i-2]; e[i]=r[i]-y[i];
u[i]=-0.718u[i-1]+(e[i]-0.368*e[i-1])/3.68; }
CPen hPen1(PS_SOLID,1,RGB(0,0,0)); CPen hPen2(PS_SOLID,1,RGB(255,0,0)); CPen hPen3(PS_SOLID,1,RGB(0,255,0)); CPen*pen0; CRect rect0; char s[50];
CFont font;
font.CreateFont(10,6,0, 0,30,FALSE, FALSE,FALSE,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
PROOF_QUALITY,DEFAULT_PITCH|FF_ROMAN,\"Arial\"); CFont*font0
//画X-Y坐标轴
pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(50,610); pDC->LineTo(950,610); pDC->MoveTo(50,610); pDC->LineTo(50,10); pDC->SelectObject(pen0);
pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(950,610); pDC->LineTo(945,605); pDC->MoveTo(950,610);
7
pDC->LineTo(945,615); pDC->MoveTo(50,10); pDC->LineTo(45,15); pDC->MoveTo(50,10); pDC->LineTo(55,15); pDC->SelectObject(pen0);
//画X轴刻度
for(i=0;i<=9;i++) {
pen0=pDC->SelectObject(&hPen1);//画的刻度线 pDC->MoveTo(50+i*100,610); pDC->LineTo(50+i*100,605); pDC->SelectObject(pen0); rect0.left=40+i*100; rect0.right=rect0.left+20; rect0.top=615; rect0.bottom=630; sprintf(s,\"%d\
font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }
//画Y轴刻度
for(i=0;i<5;i++) {
pen0=pDC->SelectObject(&hPen1); //画刻度线 pDC->MoveTo(50,410-i*200); pDC->LineTo(55,410-i*200); pDC->SelectObject(pen0);
rect0.left=30; //画刻度线 rect0.right=rect0.left+20; rect0.top=410-i*200-5; rect0.bottom=rect0.top+20; sprintf(s,\"%d\
font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(s,-1,&rect0,DT_CENTER);
8
pDC->SelectObject(font0); }
//画曲线r[t]
pen0=pDC->SelectObject(&hPen2); for(i=0;i<8;i++) {
pDC->MoveTo((50+i*100),(610-r[i]*200)); pDC->LineTo((50+i*100+100),(610-r[i+1]*200)); }
pDC->SelectObject(pen0);
//画曲线y[t]
pen0=pDC->SelectObject(&hPen3); for(i=0;i<8;i++) {
pDC->MoveTo((50+i*100),(610-y[i]*200)); pDC->LineTo((50+i*100+100),(610-y[i+1]*200)); }
pDC->SelectObject(pen0);
hPen1.DeleteObject(); hPen2.DeleteObject(); hPen3.DeleteObject(); font.DeleteObject(); }
BOOL CMy1111view::OnPreparePrinting(CPrintInfo*pInfo) {
return DoPreparePrinting(pInfo); }
void CMy1111View::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }
void CMy1111View::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }
#indef_DEBUG
void CMy1111View::AssertValid() const {
CView::AssertValid();
9
}
void CMy1111View::Dump(CDumpContext& dc)const {
CView::Dump(dc); }
CMy1111Doc*CMy1111View::GetDocument()//non-debug version is inline {
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMy1111Doc))); return(CMy1111Doc*)m_pDocument; }
#endif //_DEBUG
10
程序3
#include\"stdafx.h\" #include\"1111.h\"
#include\"1111.Doc.h\" #include\"1111.View.h\"
#ifdef_DEBUG
#define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[]=__FILE__; #endif
IMPLEMENT_DYNCREATE(CMy1111View,CView)
BEGIN_MESSAGE_MAP(CMy1111View,CView)
ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview) END_MASSAGE_MAP()
CMy1111View::CMy1111View() { }
CMy1111View::~CMy1111View() { }
BOOL CMy1111View::PreCreate Window(CREATESTRUCT& cs) {
return CView::PreCreateWindow(cs); }
void CMy1111View::OnDraw(CDC*pDC) {
int i;
double r[1000]; double y[1000]; double e[1000]; double u[1000]; for(i=0;i<1000;i++) r[i]=1;
11
e[0]=0; u[0]=0; y[0]=0; e[1]=0; u[1]=0.543; y[1]=0;
for(i=2;i<1000;i++) {
y[i]=1.368y[i-1]-0.368*y[i-2]+3.68*u[i-1]+2.224*u[i-2]; e[i]=r[i]-y[i];
u[i]=0.282u[i-1]+0.718u[i-2]+0.543*e[i]-0.471324*e[i-1]+0.099912*u[i-2]; }
CPen hPen1(PS_SOLID,1,RGB(0,0,0)); CPen hPen2(PS_SOLID,1,RGB(255,0,0)); CPen hPen3(PS_SOLID,1,RGB(0,255,0)); CPen*pen0; CRect rect0; char s[50];
CFont font;
font.CreateFont(10,6,0, 0,30,FALSE, FALSE,FALSE,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
PROOF_QUALITY,DEFAULT_PITCH|FF_ROMAN,\"Arial\"); CFont*font0
//画X-Y坐标轴
pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(50,610); pDC->LineTo(950,610); pDC->MoveTo(50,610); pDC->LineTo(50,10); pDC->SelectObject(pen0);
pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(950,610); pDC->LineTo(945,605); pDC->MoveTo(950,610); pDC->LineTo(945,615); pDC->MoveTo(50,10); pDC->LineTo(45,15);
12
pDC->MoveTo(50,10); pDC->LineTo(55,15); pDC->SelectObject(pen0);
//画X轴刻度
for(i=0;i<=9;i++) {
pen0=pDC->SelectObject(&hPen1);//画的刻度线 pDC->MoveTo(50+i*100,610); pDC->LineTo(50+i*100,605); pDC->SelectObject(pen0);
rect0.left=40+i*100; //画刻度 rect0.right=rect0.left+20; rect0.top=615; rect0.bottom=630; sprintf(s,\"%d\
font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }
for(i=0;i<5;i++) //画Y轴刻度 {
pen0=pDC->SelectObject(&hPen1); //画刻度线 pDC->MoveTo(50,560-i*50); pDC->LineTo(55,560-i*50); pDC->SelectObject(pen0);
rect0.left=30; //画刻度线 rect0.right=rect0.left+20; rect0.top=560-i*50-5;
rect0.bottom=rect0.top+20; sprintf(s,\"%d\
font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }
13
pen0=pDC->SelectObject(&hPen2); //画曲线r[t] for(i=0;i<8;i++) {
pDC->MoveTo((50+i*100),(610-r[i]*50)); pDC->LineTo((50+i*100+100),(610-r[i+1]*50)); }
pDC->SelectObject(pen0);
pen0=pDC->SelectObject(&hPen3); //画曲线y[t] for(i=0;i<8;i++) {
pDC->MoveTo((50+i*100),(610-y[i]*200)); pDC->LineTo((50+i*100+100),(610-y[i+1]*200)); }
pDC->SelectObject(pen0);
hPen1.DeleteObject(); hPen2.DeleteObject(); hPen3.DeleteObject(); font.DeleteObject(); }
BOOL CMy1111view::OnPreparePrinting(CPrintInfo*pInfo) {
return DoPreparePrinting(pInfo); }
void CMy1111View::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }
void CMy1111View::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }
#indef_DEBUG
void CMy1111View::AssertValid() const {
CView::AssertValid(); }
void CMy1111View::Dump(CDumpContext& dc)const {
CView::Dump(dc);
14
}
CMy1111Doc*CMy1111View::GetDocument()//non-debug version is inline {
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMy1111Doc))); return(CMy1111Doc*)m_pDocument; }
#enddif//_DEBUG
15
程序4
#include\"stdafx.h\" #include\"1111.h\"
#include\"1111.Doc.h\" #include\"1111.View.h\"
#ifdef_DEBUG
#define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[]=__FILE__; #endif
IMPLEMENT_DYNCREATE(CMy1111View,CView)
BEGIN_MESSAGE_MAP(CMy1111View,CView)
ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview) END_MASSAGE_MAP()
CMy1111View::CMy1111View() { }
CMy1111View::~CMy1111View() { }
BOOL CMy1111View::PreCreate Window(CREATESTRUCT& cs) {
return CView::PreCreateWindow(cs); }
void CMy1111View::OnDraw(CDC*pDC) {
int i;
float r[1000]; double y[1000]; double e[1000]; double u[1000]; for(i=0;i<1000;i++) r[i]=i*i/2;
16
y[0]=0; e[0]=0; u[0]=0; y[1]=0; e[1]=0.5;
u[1]=1.5/3.68; y[2]=1.5; e[2]=0.5;
u[2]=1.282*1.5/3.68+(3*0.5-4.104*0.5)/3.68; for(i=3;i<1000;i++) {
y[i]=1.368y[i-1]-0.368*y[i-2]+3.68*u[i-1]+2.224*u[i-2]; e[i]=r[i]-y[i];
u[i]=1.282u[i-1]+0.436u[i-2]+0.718*e[i-3]+(3*e[i]-4.104*e[i-1]+2.104*u[i-2]-0. 368*u[i-3])/3.68; }
CPen hPen1(PS_SOLID,1,RGB(0,0,0)); CPen hPen2(PS_SOLID,1,RGB(255,0,0)); CPen hPen3(PS_SOLID,1,RGB(0,255,0)); CPen*pen0; CRect rect0; char s[50];
CFont font;
font.CreateFont(10,6,0, 0,30,FALSE, FALSE,FALSE,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
PROOF_QUALITY,DEFAULT_PITCH|FF_ROMAN,\"Arial\"); CFont*font0
pen0=pDC->SelectObject(&hPen1); //画X-Y坐标轴 pDC->MoveTo(50,610); pDC->LineTo(950,610); pDC->MoveTo(50,610); pDC->LineTo(50,10); pDC->SelectObject(pen0);
pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(950,610);
17
pDC->LineTo(945,605); pDC->MoveTo(950,610); pDC->LineTo(945,615); pDC->MoveTo(50,10); pDC->LineTo(45,15); pDC->MoveTo(50,10); pDC->LineTo(55,15); pDC->SelectObject(pen0);
for(i=0;i<=9;i++) //画X轴刻度 {
pen0=pDC->SelectObject(&hPen1);//画的刻度线 pDC->MoveTo(50+i*100,610); pDC->LineTo(50+i*100,605); pDC->SelectObject(pen0); rect0.left=40+i*100; rect0.right=rect0.left+20; rect0.top=615; rect0.bottom=630; sprintf(s,\"%d\
font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }
for(i=0;i<21;i++) //画Y轴刻度 {
pen0=pDC->SelectObject(&hPen1); //画刻度线 pDC->MoveTo(50,610-i*25); pDC->LineTo(55,610-i*25); pDC->SelectObject(pen0);
rect0.left=30; //画刻度 rect0.right=rect0.left+20; rect0.top=610-i*25-5;
rect0.bottom=rect0.top+20; sprintf(s,\"%d\
font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0));
18
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }
pen0=pDC->SelectObject(&hPen2); //画曲线r[t] for(i=0;i<8;i++) {
pDC->MoveTo((50+i*100),(610-r[i]*25)); pDC->LineTo((50+i*100+100),(610-r[i+1]*25)); }
pDC->SelectObject(pen0);
pen0=pDC->SelectObject(&hPen3); //画曲线y[t] for(i=0;i<8;i++) {
pDC->MoveTo((50+i*100),(610-y[i]*25)); pDC->LineTo((50+i*100+100),(610-y[i+1]*25)); }
pDC->SelectObject(pen0);
hPen1.DeleteObject(); hPen2.DeleteObject(); hPen3.DeleteObject(); font.DeleteObject(); }
BOOL CMy1111view::OnPreparePrinting(CPrintInfo*pInfo) {
return DoPreparePrinting(pInfo); }
void CMy1111View::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }
void CMy1111View::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }
#indef_DEBUG
void CMy1111View::AssertValid() const {
19
CView::AssertValid(); }
void CMy1111View::Dump(CDumpContext& dc)const {
CView::Dump(dc); }
CMy1111Doc*CMy1111View::GetDocument()//non-debug version is inline {
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMy1111Doc))); return(CMy1111Doc*)m_pDocument; }
#endif//_DEBUG
//CMy1111View message handlers
20
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务