在.NET环境下绘制模糊数学中隶属函数分布图
2007-11-22 19:54:18 来源:CSDN 常青藤
本文给出了有个在.NET环境下绘制模糊数学中隶属函数分布图的实例代码,并对其作了简单讲解,大家可以学习一下。
| 以下是引用片段: for (d = b; d <= c; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)(1 * unit); y2 = o.Y - (float)(1 * unit); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } for (d = c; d < d1; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)(unit * (System.Math.Pow((d1 - d) / (d1- c), k))); y2 = o.Y - (float)(unit * (System.Math.Pow((d1 - d - interval) / (d1 - c), k))); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } } } else if (type1 == 4) ...{ //set4(); PointF o1 = new PointF(this.pictureBox1.Width / 2, this.pictureBox1.Height / 4); e.Graphics.DrawString("1", font, brush, o1); if (type2 == 3) ...{ for (d = 0; d <= 2*a; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)(System.Math.Exp(-((d-a)/k)*((d-a)/k)) * unit); y2 = o.Y - (float)(System.Math.Exp(-((d-interval - a) / k) * ((d-interval - a) / k)) * unit ); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } } else if (type2 == 1) ...{ for (d = 0; d <= a; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)(1 * unit); y2 = o.Y - (float)(1 * unit); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } for (d = a; d <= 2 * a; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)(System.Math.Exp(-((d - a) / k) * ((d - a) / k)) * unit); y2 = o.Y - (float)(System.Math.Exp(-((d - interval - a) / k) * ((d - interval - a) / k)) * unit); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } } else if (type2 == 2) ...{ for (d = a; d <= 2 * a; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)(System.Math.Exp(-((d - a) / k) * ((d - a) / k)) * unit); y2 = o.Y - (float)(1-System.Math.Exp(-((d - interval - a) / k) * ((d - interval - a) / k)) * unit); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } } } else if (type1 == 5) ...{ //set5(); PointF o1 = new PointF(this.pictureBox1.Width / 2, this.pictureBox1.Height / 4); e.Graphics.DrawString("1", font, brush, o1); if (type2 == 3) ...{ for (d = 0; d <= 2 * a; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)((1.0/(1+k*System.Math.Pow(d-a,l))) * unit); y2 = o.Y - (float)((1.0 / (1 + k * System.Math.Pow(d-interval - a, l))) * unit); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } } else if (type2 == 1) ...{ for (d = 0; d <= a; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)(1 * unit); y2 = o.Y - (float)(1 * unit); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } for (d = a; d <= 2 * a; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)((1.0 / (1 + k * System.Math.Pow(d - a, l))) * unit); y2 = o.Y - (float)((1.0 / (1 + k * System.Math.Pow(d - interval - a, l))) * unit); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } } else if (type2 == 2) ...{ for (d = a; d <= 2 * a; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)((1.0 / (1 + k * System.Math.Pow(d - a, -l))) * unit); y2 = o.Y - (float)((1.0 / (1 + k * System.Math.Pow(d - interval - a, -l))) * unit); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } for (d = 2*a; d <= 3*a; d += interval) ...{ x1 = o.X + d * unit; x2 = o.X + (d + interval) * unit; y1 = o.Y - (float)(1 * unit); y2 = o.Y - (float)(1 * unit); p1 = new PointF(x1, y1); p2 = new PointF(x2, y2); e.Graphics.DrawLine(Pens.Blue, p1, p2); } } } |




文章评论
共有 0 位网友发表了评论 查看完整内容