我现在绘制一个正太分布函数图像,函数为y=(1/(sqrt(2*PI)*sigma))*exp(-1*pow(x-miu,2)/(2*sigma*sigma));代码如下:void CNiheDlg::OnPaint()
{ CPaintDC dc(this); // device context for painting
CRect rc;
GetClientRect(&rc);
CPen pen(PS_SOLID,1,RGB(0,0,0));
CPen*pPen=dc.SelectObject(&pen);
dc.SetViewportOrg(20,rc.bottom/2);//设置屏幕中心为原点(窗口的原点,视口的中心)
dc.MoveTo(-20,0);
dc.LineTo(rc.right,0);//横坐标轴
dc.MoveTo(20,-233);
dc.LineTo(20,rc.bottom);//纵坐标轴
pen.DeleteObject();
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
pPen=dc.SelectObject(&pen);
int x=0;
int y;
double miu=80;
double sigma=1;
y=20.f*y_value(x,miu,sigma);
dc.MoveTo(20+x,y);
for(int i=2;i<200;i++)
{
x=i;
y=20.f*y_value(x,80,sigma);
dc.LineTo(20+x,y);
}
dc.SelectObject(pPen);
}
double CNiheDlg::y_value(double x,double miu,double sigma)
{
double s;
s=(1/(sqrt(2*PI)*sigma))*exp(-1*pow(x-miu,2)/(2*sigma*sigma)); return s;
}画出的线不是曲线,而是一条直线,只有在x取到miu值时,稍有凸起,其他的x值对应的线都是直线,我应该怎么改才能画出一条平滑的正态分布曲线呢!谢谢 以前没画过 画了半天 还是这个现象。(我在调式的过程中发现除了x取到miu值时y值不是0,其他的x值所求得的y都是0,怎么弄啊 谢谢了)
{ CPaintDC dc(this); // device context for painting
CRect rc;
GetClientRect(&rc);
CPen pen(PS_SOLID,1,RGB(0,0,0));
CPen*pPen=dc.SelectObject(&pen);
dc.SetViewportOrg(20,rc.bottom/2);//设置屏幕中心为原点(窗口的原点,视口的中心)
dc.MoveTo(-20,0);
dc.LineTo(rc.right,0);//横坐标轴
dc.MoveTo(20,-233);
dc.LineTo(20,rc.bottom);//纵坐标轴
pen.DeleteObject();
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
pPen=dc.SelectObject(&pen);
int x=0;
int y;
double miu=80;
double sigma=1;
y=20.f*y_value(x,miu,sigma);
dc.MoveTo(20+x,y);
for(int i=2;i<200;i++)
{
x=i;
y=20.f*y_value(x,80,sigma);
dc.LineTo(20+x,y);
}
dc.SelectObject(pPen);
}
double CNiheDlg::y_value(double x,double miu,double sigma)
{
double s;
s=(1/(sqrt(2*PI)*sigma))*exp(-1*pow(x-miu,2)/(2*sigma*sigma)); return s;
}画出的线不是曲线,而是一条直线,只有在x取到miu值时,稍有凸起,其他的x值对应的线都是直线,我应该怎么改才能画出一条平滑的正态分布曲线呢!谢谢 以前没画过 画了半天 还是这个现象。(我在调式的过程中发现除了x取到miu值时y值不是0,其他的x值所求得的y都是0,怎么弄啊 谢谢了)
解决方案 »
- OnStnClicked函数
- AFX_<header name in capital letters>_H__<a GUID>__INCLUDED_求解释
- 同一工程中两个Dll有同名,调用时如何解决同名函数的冲突问题?
- 如何获得用户上网时的网址?
- 关于切分窗口的问题????大家帮忙看看~~~~~~~~~~
- 有关 Vc++ 与 Flash的Actionscript 之间互相通讯问题
- 从C转到VC++出现的问题,请教!
- GetProcAddress获取EnumProcesses地址错误,高手指教!
- CListCtrl 列表头在最后位置
- 天上掉馅饼了!!!(50分一个的大馅饼,这批一共有4个,谁要)
- IOCP 模型 之客户端 疑问。
- VC++2005 vs VC++2008
在循环里加上dc.MoveTo(20+x,y);试试
[/Quote不行 我那个算法是不写错了啊!不可能啊 我那时从书上抄的正态分布公式啊。