Silverlight画分形(Koch曲线)

Koch曲线是一类平面曲线:从一条线段中间三分之一的部分用等边三角形的两条边代替,形成的图形 有四条边,五个节点。再依次组成边的每条线段做相同的处理。

迭代如图:

稍微变换一下,画成六边形的,凸起方向向两边,用随机颜色,画完后为雪花状。

程序代码:

private void LayoutRoot_Loaded(object sender, RoutedEventArgs ea){  double 

sqrt3 = Math.Sqrt(3);  Point a = new Point(50, (float)(100 + 50 * sqrt3));  

Point b = new Point(100, (float)(100 + 100 * sqrt3));  Point c = new Point(200, 

(float)(100 + 100 * sqrt3));  Point d = new Point(250, (float)(100 + 50 * sqrt3));

  Point e = new Point(200, 100);  Point f = new Point(100, 100);  line(a, b, 

5);  line(b, a, 5);  line(b, c, 5);  line(c, b, 5);  line(c, d, 

5);  line(d, c, 5);  line(d, e, 5);  line(e, d, 5);  line(e, f, 

5);  line(f, e, 5);  line(f, a, 5);  line(a, f, 5);}private void 

line(Point a, Point b, int n){  if (n > 0)  {    double r = 

Math.Atan(Math.Abs(a.Y - b.Y) / Math.Abs(a.X - b.X)); //角度    double v = 0; 

   Point c = new Point(a.X + (b.X - a.X) / 3, a.Y + (b.Y - a.Y) / 3);    Point d 

= new Point(a.X + 2 * (b.X - a.X) / 3, a.Y + 2 * (b.Y - a.Y) / 3);    double l = 

Math.Sqrt((c.X - d.X) * (c.X - d.X) + (c.Y - d.Y) * (c.Y - d.Y));    Point e; 

   if (b.Y - a.Y >= 0 && b.X - a.X > 0)    {      v = 

r;    }    else if (b.Y - a.Y > 0 && b.X - a.X <= 0)   

 {      v = Math.PI - r;    }    else if (b.Y - a.Y <= 0 

&& b.X - a.X < 0)    {      v = Math.PI + r;    } 

   else if (b.Y - a.Y < 0 && b.X - a.X >= 0)    {      v 

= 2 * Math.PI - r;    }    e = new Point((float)(l * Math.Cos(v + Math.PI / 

3) + c.X), (float)(c.Y + l * Math.Sin(v + Math.PI / 3)));    line(a, c, n - 1);

    line(c, e, n - 1);    line(e, d, n - 1);    line(d, b, n - 1); 

 }  else  {    Line l = new Line();    Random rnd = new Random

();    Color c = Color.FromArgb(255, (byte)rnd.Next(255), (byte)rnd.Next(255), 

(byte)rnd.Next());    l.Stroke = new SolidColorBrush(c);    l.X1 = a.X;

    l.Y1 = a.Y;    l.X2 = b.X;    l.Y2 = b.Y;    

LayoutRoot.Children.Add(l);  }}

运行结果如图:

Koch曲线的每一部分都由4个跟它自身比例为1:3的形状相同的小曲线组成,那么它的豪斯多夫维数(分 维数)为d=log(4)/log(3) =1.26185950714...

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索new
, double
, point
, line
c++silverlight
koch分形曲线、koch曲线、koch雪花曲线、koch曲线 matlab、von koch曲线,以便于您获取更多的相关知识。

时间: 2024-11-10 07:37:13

Silverlight画分形(Koch曲线)的相关文章

excel表格怎么在一个图上画多条曲线?

  一般情况,我们常用的都是直接插入一条曲线的图表.但有些时候,我们在完成实验后,需要对结果进行对比分析.那么,就会需要在一个图上画多条曲线,将这多条曲线进行对比.对此,小编也很困惑,为解决这个问题,小编特地学习了操作过程.下面,小编将如何在一个图上画多条曲线的操作过程分享给大家.(小编以画2条曲线为例) 1.在电脑桌面上,新建一个excel文件(操作过程即为点击右键,在选项中选择"新建"选项,然后再选择"excel文件",即可成功新建excel文件了). 2.双击

C# 下 iPlotX控件画出的曲线首尾相连

问题描述 如图所示:使用IPlotX画出的曲线第一个点和最后一个点自动连接起来,有谁知道这是什么原因?控件某一属性的问题还是代码有问题?(代码中最后一个点和第一个点X.Y坐标不一样) 解决方案

在Silverlight中绘制贝塞尔曲线

我以前的流程设计器使用的都是曲线,而且不能调扭曲,朋友们意见很大,后来 我升级了设计器,这里贴出我实现扭曲的思路 代码下载: http://files.cnblogs.com/wxwinter/SilverlightBezierSegment.rar 在线演示 : http://silverlight.services.live.com/invoke/71234/SilverlightBezier Segment/iframe.html 效果说明

VC用递归的方法画分形图

分形几何是数学领域里新兴的课题,如果将图形的每个元素按某种规则进行变形,得到新的图形,以此类推,进行若干次变形后得到的图形就是分形图形.Couch曲线是最典型的分形图形: 将一条线段按照图1进行变换,得到图1,再将图1中的每条线段按图1的折线变换得到图2,以此类推,进行6次变换就得到图6,如果进行无限次变换,就得到的是Couch曲线,Couch曲线的维数不是整数维,更多详情请见分形方面的书籍. 用分形图形能画图许多漂亮的图案而被广泛地应用,下面将几个简单的分形图形的代码与图形大家分享. //Co

iOS开发之画图板(贝塞尔曲线)

贝塞尔曲线,听着挺牛气一词,不过下面我们在做画图板的时候就用到贝塞尔绘直线,没用到绘制曲线的功能.如果会点PS的小伙伴会对贝塞尔曲线有更直观的理解.这篇博文的重点不在于如何用使用贝塞尔曲线,而是利用贝塞尔划线的功能来封装一个画图板. 画图板的截图如下,上面的白板就是我们的画图板,是自己封装好的一个UIView,下面会详细的介绍如何封装这个画图板,下面的控件用来控制我们画图板的属性以及Undo,Redo和保存功能.点击保存时会把绘制的图片保存到手机的相册中.下面是具体的实现方案.   一.封装画图

我想在panel里画一条曲线

问题描述 代码publicForm1(){InitializeComponent();rti=newRealTimeImageMaker(Width,Height,backColor,Color.Green);thread=newThread(newThreadStart(panel1_Paint));thread.Start();}privatevoidpanel1_Paint(objectsender,PaintEventArgse){while(true){Imageimage=rti.G

java分形绘制科赫雪花曲线代码分享

 部分与整体以某种形式相似的形,称为分形,科赫曲线是一种外形像雪花的几何曲线,所以又称为雪花曲线,它是分形曲线中的一种,画法如下 首先我们举个例子: 我们可以看到西兰花一小簇是整个花簇的一个分支,而在不同尺度下它们具有自相似的外形.换句话说,较小的分支通过放大适当的比例后可以得到一个与整体几乎完全一致的花簇.因此我们可以说西兰花簇是一个分形的实例. 分形一般有以下特质: 在任意小的尺度上都能有精细的结构: 太不规则,以至难以用传统欧氏几何的语言描述: (至少是大略或任意地)自相似豪斯多夫维数会大

编程-如何用Java画一个阿基米德螺旋曲线?

问题描述 如何用Java画一个阿基米德螺旋曲线? 解决方案 在网上下载第三方包JFreeChart,可以实现 解决方案二: java画Hibert曲线用 Java 画几个函数曲线java画Koch曲线 解决方案三: 楼组图挂了....... 解决方案四: 楼组图挂了.......

java分形绘制科赫雪花曲线(科赫曲线)代码分享_java

首先我们举个例子:我们可以看到西兰花一小簇是整个花簇的一个分支,而在不同尺度下它们具有自相似的外形.换句话说,较小的分支通过放大适当的比例后可以得到一个与整体几乎完全一致的花簇.因此我们可以说西兰花簇是一个分形的实例.分形一般有以下特质:在任意小的尺度上都能有精细的结构: 太不规则,以至难以用传统欧氏几何的语言描述: (至少是大略或任意地)自相似豪斯多夫维数会大於拓扑维数: 有著简单的递归定义.(i)分形集都具有任意小尺度下的比例细节,或者说它具有精细的结构.(ii)分形集不能用传统的几何语言来