c#如何实现雪花分形

  

c#如何实现雪花分形?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

公共部分中类Form1:形式
  {
  公共Form1 ()
  {
  InitializeComponent ();
  }
  
  私人空间Form1_Paint(对象发送方,PaintEventArgs e)
  {
  DrawKochSnow (e.Graphics);
  }
  
  私人空间ZheXian (p1, p2,图形g)//4条基本线段组成的折线
  {
  点p3=new点(p1。X + (p2。X - p1.X)/3, p1。Y + (p2。Y - p1.Y)/3);//三等分点坐标
  点p4=new点(p1。X + (p2。X - p1.X) * 2/3, p1。Y + (p2。Y - p1.Y) * 2/3);//三等分点坐标
  点p4XD3=new点(p4。X - p3。X, p4。Y - p3.Y);//p4相对于p3点的坐标//int x=(int) (p4XD3。X * Math.Cos(数学。π/3)——p4XD3。Y * sin(数学。π/3));//int y=(int) (p4XD3。X * sin(数学。π/3)+ p4XD3。Y * Math.Cos(数学。π/3));//注意计算机的屏幕垂直坐标和数学上相反,所以数学上逆时针旋转在计算机上相当于顺时针旋转
  int x=(int) Math.Round (p4XD3。X * Math.Cos(数学。π/3)+ p4XD3。Y * sin(数学。π/3));
  int y=(int) Math.Round (p4XD3。Y * Math.Cos(数学。π/3)——p4XD3。X * sin(数学。π/3));
  点p5XD3=new点(x, y);//凸起点p5相对于p3点的坐标
  点p5=new点(p3。X + X, p3。Y + Y);//p5相对于原点的坐标
  钢笔笔=新钢笔(画笔。黑色,1);
  两倍长度=Math.Sqrt (Math.Pow (p2。X - p1。X, 2) + Math.Pow (p2。Y - p1。Y, 2))/3;//Console.WriteLine(长度);
  如果(长度比;20)//通过最终线段长度可以控制迭代
  {
  ZheXian (p1, p3, g);
  ZheXian (p3, p5, g);
  ZheXian (p5, p4, g);
  ZheXian (p4, p2, g);
  }
  其他的
  {
  g。画直线(笔,p1, p3);
  g。画直线(钢笔、p3 p5);
  g。画直线(钢笔、p5 p4);
  g。画直线(笔,p4, p2);
  }
  }
  
  私人空间DrawKochSnow(图形g)//科赫雪花(瑞典人科赫于1904年提出了著名的“雪花”曲线)
  {
  int长度=480;
  点=new起源点(this.ClientSize。宽/2,this.ClientSize。高度/2);
  g.FillEllipse(画笔。蓝色,新RectangleF(起源、新大小(10,10)));//计算三角形的顶点让其中心和窗体的中心重合
  A=new(起源。X -长度/2,(int)(来源。Y +长度/(2 * Math.Sqrt (3))));
  点B=new(起始点。X (int)(来源。Y -长度/Math.Sqrt (3)));
  点C=new(起始点。X +长度/2,(int)(来源。Y +长度/(2 * Math.Sqrt (3))));
  ZheXian (A, B, g);
  ZheXian (B、C、g);
  ZheXian (C、g);
  }
  }

 c #如何实现雪花分形

看完上述内容,你们掌握c#如何实现雪花分形的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

c#如何实现雪花分形