📄 fan.cpp
字号:
//正弦曲线fan类
//fan.cpp
//包含的头文件
#include "stdafx.h"
#include "Coordinate.h"
#include "Shape.h"
#include "fan.h"
#include <math.h>
//类实现
IMPLEMENT_SERIAL(fan,Shape,1)
fan::fan(){
a=0.0;
b=0.0;
c=0.0;
d=0.0;
expression.Format("y=%1.2lf/(%1.2lf*x+%1.2lf)+%1.2lf",a,b,c,d);
//expression.Format("y=%1.2lf*fan(%1.2lf*x+%1.2lf)+%1.2lf",a,b,c,d);
}
fan::fan(double a,double b,double c,double d){
this->a=a;
this->b=b;
this->c=c;
this->d=d;
expression.Format("y=%1.2lf/(%1.2lf*x+%1.2lf)+%1.2lf",a,b,c,d);
//expression.Format("y=%1.2lf*fan(%1.2lf*x+%1.2lf)+%1.2lf",a,b,c,d);
}
fan::~fan(){
}
void fan::drawShape(CDC *pDC,Coordinate co){ //画二次函数
//利用逐步逼近法画曲线
double left=-200.0; //最左边的坐标的横轴坐标(实际坐标)为left
//则最右边的坐标的横轴坐标(实际坐标)为-left
double step=0.1; //设置逐步逼近的步长
int size=(int)(2*(-left)/step)+1; //计算出从最左边到最右边(以step为步长)的点数
double x=left,y;
CPoint * p=new CPoint[size];
//得出一系列点的视图坐标,并放于一CPoing数组里
for(int i=0;i<size;i++){
y=c/(a*x+b)+d;
//y=a*fan(b*x+c)+d; //y=f(x)
p[i]=co.getTrueAxis(x,y); //坐标转换
x+=step;
}
pDC->Polyline(p,size); //利用一系列存放在点数组的点画线
delete [] p;
}
void fan::Serialize(CArchive &ar){ //串行化
Shape::Serialize(ar);
if(ar.IsStoring()){
//storing
ar <<a<<b<<c<<d;
}
else{
//loading
ar >>a>>b>>c>>d;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -