用C语言绘制SIERPINSKI三角形_戴祯杰

合集下载

用C语言绘制SIERPINSKI三角形

用C语言绘制SIERPINSKI三角形

sa f( %d ,& n ; cn ” ” ) c ad vc ) l re i e e( ;
v i i —Gak t f a a l t a f t b f t b l t C l t c n ) o Se d r s e ( o t ,f , o , o ,f ,f ,it l x a o y l a x l a y a o X a o y n
{ ot p P q q r r l x f ,Y ,x ,Y ,x ,y : a
ma ( i ) n {it : n n
l tx f a a,y ,x ,y o a h h,X ,y ,x r a C c -t x,y ma x - x; i tg rv r n : e n d ie ,g xx ; l :
g r e VGA ; di r v g T e— VGAHI l ̄ l ;




() b
图 l Sep si 角 形 及 其 生 成 过 程 ri l 三 n【
Sepn k 三角形 的英文 名词 是 Gak t有填 料 、 片的 意义 。这 个模 型与 统计 力学 的某些 问题 有关 , i is i r se, 垫 因
78
维普资讯
mo eo( p Y ) ie (q q ; v t x , P ;l t x ,Y ) no l e ( r r ; ie ( p P ; i t x ,y) l t x ,Y ) no no Se —G se(a a x ,y ,x ,Y ,n ) i r ak tx ,y , r r q q 一1 ; Se —G s e( b b x , P, r y ,n一1 ; i r ak tx ,y , p y x , r ) Se —Gak tx ,y ,q q x ,Y ,n 1 ; i r se( c c x ,Y , p P 一 )

python 谢尔宾斯基三角形

python 谢尔宾斯基三角形

python 谢尔宾斯基三角形谢尔宾斯基三角形是一种经典的几何图形,它由一系列等边三角形组成,每个等边三角形都有一个中心点和三个顶点。

这个图形的特点是通过不断重复剖分等边三角形,最终得到一个类似于“海绵”的形状。

谢尔宾斯基三角形最初由波兰数学家谢尔宾斯基于1915年提出,它具有许多有趣的性质和应用。

在这篇文章中,我将介绍谢尔宾斯基三角形的构造原理、性质和一些应用。

让我们来看看谢尔宾斯基三角形的构造原理。

我们可以从一个大的等边三角形开始,然后将它分成四个小的等边三角形。

接下来,对其中的三个小三角形应用同样的分割方法,不断重复这个过程。

最终,我们将得到一个无限级数的小等边三角形,它们连接在一起形成了谢尔宾斯基三角形。

谢尔宾斯基三角形具有许多有趣的性质。

首先,它是一个自相似的图形,即无论是整体还是局部,都可以找到与之相似的部分。

这使得谢尔宾斯基三角形成为了分形几何学的研究对象之一。

其次,谢尔宾斯基三角形的面积是无限的,但周长是有限的。

这是一个非常奇特的性质,与传统的几何图形有很大的不同。

除了具有有趣的性质外,谢尔宾斯基三角形还有许多应用。

其中一个应用是在计算机图形学中。

由于谢尔宾斯基三角形具有自相似的特性,可以将其用于生成逼真的自然景观,如山脉和树木的模拟。

另一个应用是在信号处理中。

谢尔宾斯基三角形可以用来生成分形信号,这些信号在噪声抑制和图像压缩等方面具有重要的作用。

谢尔宾斯基三角形虽然看起来很简单,但它背后的原理和性质却非常有趣和复杂。

它是数学中一个经典的研究对象,也是分形几何学的一个重要示例。

通过不断剖分等边三角形,我们可以得到一个无限级数的小等边三角形,这些小三角形连接在一起形成了谢尔宾斯基三角形。

谢尔宾斯基三角形具有自相似的性质和无限的面积,但有限的周长。

它在计算机图形学和信号处理中有许多应用。

希望这篇文章能帮助你更好地理解谢尔宾斯基三角形的原理和应用。

c语言正三角形编程

c语言正三角形编程

c语言正三角形编程正三角形是一种特殊的多边形,它有三个等边的边和三个等角度的角。

在计算机编程中,我们可以使用C语言来绘制正三角形。

在C语言中,我们通常使用循环语句来实现正三角形的绘制。

下面是一段代码示例:``` cinclude <stdio.h>int main() {int n, i, j;printf("请输入正三角形的边长:\n");scanf("%d", &n);for (i = 1; i <= n; i++) {// 打印空格for (j = 1; j <= n-i; j++) {printf(" ");}// 打印星号for (j = 1; j <= 2*i-1; j++) {printf("*");}printf("\n");}return 0;}```以上代码会先让用户输入正三角形的边长,然后使用两个嵌套的循环语句进行绘制。

外层循环控制行数,内层循环控制每行的输出。

具体而言,内层循环会先打印若干个空格,然后再打印若干个星号。

这段代码的运行结果如下:```请输入正三角形的边长:5*************************```我们可以看到,该程序成功地绘制了一个边长为5的正三角形。

你也可以根据自己的需求来修改代码,从而绘制出更大或更小的正三角形。

总的来说,C语言是一种非常强大的编程语言,它可以用来实现各种各样的功能,包括绘制正三角形这类简单的图形。

通过这个例子,我们不仅可以加深对C语言的理解,还可以享受到编程带来的乐趣。

谢尔宾斯基三角形c++_20201202(谢尔宾斯基三角形)

谢尔宾斯基三角形c++_20201202(谢尔宾斯基三角形)

谢尔宾斯基三⾓形c++_20201202(谢尔宾斯基三⾓形)谢尔宾斯基三⾓形(英语:Sierpinski triangle)是⼀种分形,由波兰数学家谢尔宾斯基在1915年提出。

今天我们就来研究下如何⽤python输出这个奇妙的三⾓形图案吧!分形实际上是⼀种递归,要实现这个图形输出就要设计出它的递归绘图函数。

(1)我们先假设有这么⼀个函数叫st(a,b,c)就能实现谢尔宾斯基三⾓形的绘制,其中a,b,c是三个顶点的坐标,类型为元组这样我们的程序构架就搭建出来了,如下所⽰:import turtlet=turtle.Turtle()def st(a,b,c): passt.pensize(2)t.speed(100)t.pencolor('green')st((-60,0),(0,3**0.5*120/2),(60,0))(2)接下来关键就是实现def st(a,b,c)。

那么具体的每次应该怎么画呢?⾸先是连接三个点,形成正三⾓形。

三个点坐标分别是A(a[0],a[1])、B(b[0],b[1])、C(c[0],c[1])然后取各边的中点,原来顶点和两个中点可以构成⼀个新正三⾓形,⼀共是三个;对新构成的3个⼩正三⾓形顶点进⾏谢尔宾斯基三⾓形绘制(递归之处)。

两点之间的中点坐标,这个⼤家应该都会求。

⽐如A,B中点坐标就是((a[0]+b[0])/2,(a[1]+b[1])/2)这样我们就可以写出整个的代码了!import turtlet=turtle.Turtle()def st(a,b,c): #画该三⾓形 t.goto(a[0],a[1]) t.down() t.goto(b[0],b[1]) t.goto(c[0],c[1]) t.goto(a[0],a[1]) t.up() dis=((a[0]-c[0法国著名雕塑家罗丹说:世界上并不缺少美,⽽是缺少发现美的眼睛!数学是美的,但往往缺少⼀种直接的呈现⽅式;⽽我们可以利⽤计算机算法把许多美丽数学图案呈现在我们眼前,从⽽让我们对这个世界的美由衷的赞叹, 赶快试试吧!。

谢尔宾斯基三角形c语言

谢尔宾斯基三角形c语言

谢尔宾斯基三角形c语言
谢尔宾斯基三角形是一种几何图形,由波兰数学家谢尔宾斯基于1916年发现。

这种图形由多个小三角形通过不断重复嵌套而成。

可以用递归方法来实现该图形的生成。

在C语言中,可以通过递归函数来实现谢尔宾斯基三角形的绘制。

具体的实现过程如下:
1. 定义一个递归函数,其参数包括三角形的三个顶点的坐标和递归层数。

2. 判断递归层数是否等于0,如果是,则绘制三角形。

3. 如果递归层数不为0,则将三角形分成三个子三角形,并对子三角形分别调用递归函数,递归层数减1即可。

4. 绘制谢尔宾斯基三角形时,可以使用图形库(如OpenGL)来实现。

我们可以将三角形的顶点坐标存储在数组中,使用OpenGL中的glBegin和glEnd函数来绘制三角形,在递归函数中不断调用绘制函数即可。

总之,谢尔宾斯基三角形是一种具有美丽几何结构的图形,使用递归函数和图形库可以在C语言中实现它的绘制。

c语言如何画图

c语言如何画图

c语言如何画图2007-06-12 14:38图形和图像函数包含在graphics.h里面(一) 像素函数56. putpiel() 画像素点函数57. getpixel()返回像素色函数(二) 直线和线型函数58. line() 画线函数59. lineto() 画线函数60. linerel() 相对画线函数61. setlinestyle() 设置线型函数62. getlinesettings() 获取线型设置函数63. setwritemode() 设置画线模式函数(三)、多边形函数64. rectangle() 画矩形函数65. bar() 画条函数66. bar3d() 画条块函数67. drawpoly() 画多边形函数(四)、圆、弧和曲线函数68. getaspectratio()获取纵横比函数69. circle()画圆函数70. arc() 画圆弧函数71. ellipse()画椭圆弧函数72. fillellipse() 画椭圆区函数73. pieslice() 画扇区函数74. sector() 画椭圆扇区函数75. getarccoords()获取圆弧坐标函数(五)、填充函数76. setfillstyle() 设置填充图样和颜色函数77. setfillpattern() 设置用户图样函数78. floodfill() 填充闭域函数79. fillpoly() 填充多边形函数80. getfillsettings() 获取填充设置函数81. getfillpattern() 获取用户图样设置函数(六)、图像函数82. imagesize() 图像存储大小函数83. getimage() 保存图像函数84. putimage() 输出图像函数四、图形和图像函数对许多图形应用程序,直线和曲线是非常有用的。

但对有些图形只能靠操作单个像素才能画出。

当然如果没有画像素的功能,就无法操作直线和曲线的函数。

C++课件案例二十八Sierpinski海绵

C++课件案例二十八Sierpinski海绵

15页 共46页
目录
目退录出
2.对话框的设计
在资源视图Resource View中右击Dialog选项, 选择Insert Dialog命令,在对话框内添加静态文 本框Static Text和文本框Edit Box控件并修改属 性,Edit控件的ID为IDC_EDIT1,对话框的设 计结果如图所示。
20页 共46页
目录
目退录出
菜单调用流程
21页 共46页
目录
目退录出
四、案例实现
22页 共46页
目录
目退录出
23页 共46页
目录
目退录出
24页 共46页
目录
目退录出
25页 共46页
目录
目退录出
26页 共46页
目录
目退录出
27页 共46页
目录
目退录出
28页 共46页
目录
目退录出
29页 共46页
( ),(
),
(x d, y
)x,d (DX,yDX )。
xdD X,ydD Y
xd, yd
8页 共46页
目录
目退录出
为了进行递归,需要计算20个小立方体的 左上角坐标。
对于上层的8个小立方体,按照画家算法对 小立方体进行编号。
9页 共46页
目录
目退录出
10页 共46页
void Cubicf(double x,double y,double d); 绘制立方体前面。
void Cubict(double x,double y,double d); 绘制立方体顶面。
void Cubicr(double x,double y,double d); 绘制立方体右面。

C语言中各种三角形程序详解

C语言中各种三角形程序详解

1.package com.xyq.demo;2.public class Triangle {3.4./**5.* @param args6.*/7.8.public static void main(String[] args) {9.a(); //打印正等腰三角10. b(); //打印倒等腰三角11. c(); //打印直边靠左正直角三角12. d(); //打印直边靠右正直角三角13. e(); //打印直边靠左倒直角三角14. f(); //打印直边靠右倒直角三角15. g(); //打印底边靠左钝角角三角16. h(); //打印底边靠右钝角角三角17. }18. /**19.* 作用:打印正等腰三角20.*/21. public static void a(){22. System.out.println("打印正等腰三角");23. int i ,j;24. for(i=1;i<=5;i++){25. for(j=5;j>i;j--){26. System.out.print(" ");27. }28. for(j=0;j<i*2-1;j++){29. System.out.print("*");30. }31. System.out.println();32. }33. }34.35. /**36.* 打印倒等腰三角37.*/38. public static void b(){39. System.out.println("打印倒等腰三角");40. int i ,j ;41. for(i=1;i<=5;i++){42. for(j=1;j<i;j++){43. System.out.print(" ");44. }45. for(j=10;j>i*2-1;j--){46. System.out.print("*");47. }48. System.out.println();49. }50. }51. /**52.* 打印直边靠左正直角三角53.*/54. public static void c(){55. System.out.println("打印直边靠左正直角三角");56. int i ,j ;57. for(i=1;i<=5;i++){58. for(j=0;j<i;j++){59. System.out.print("*");60. }61. System.out.println();62. }63. }64.65. /**66.* 打印直边靠右正直角三角67.*/68. public static void d(){69. System.out.println("打印直边靠右正直角三角");70. int i ,j;71. for(i=1;i<=5;i++){72. for(j=5;j>i;j--){73. System.out.print(" ");74. }75. for(j=0;j<i;j++){76. System.out.print("*");77. }78. System.out.println();79. }80. }81. /**82.* 打印直边靠左倒直角三角83.*/84. public static void e(){85. System.out.println("打印直边靠左倒直角三角");86. int i ,j;87. for(i=1;i<=5;i++){88. for(j=5;j>=i;j--){89. System.out.print("*");90. }91. System.out.println();92. }93. }94. /**95.* 打印直边靠右倒直角三角96.*/97. public static void f(){98. System.out.println("打印直边靠右倒直角三角");99. int i ,j;100.for(i=1;i<=5;i++){101.for(j=1;j<i;j++){102.System.out.print(" ");103.}104.for(j=5;j>=i;j--){105.System.out.print("*");106.}107.System.out.println();108.}109.}110./**111.* 打印底边靠左钝角角三角112.*/113.public static void g(){114.System.out.println("打印底边靠左钝角角三角");115.int i ,j ;116.for(i=1;i<=5;i++){117.for(j=0;j<i;j++){118.System.out.print("*");119.}120.System.out.println();121.}122.for(i=1;i<5;i++){123.for(j=5;j>i;j--){124.System.out.print("*");125.}126.System.out.println();127.}128.}129./**130.* 打印底边靠右钝角角三角131.*/132.public static void h(){133.System.out.print("打印底边靠右钝角角三角");134.int i,j;135.for(i=0;i<=5;i++){136.for(j=5;j>i;j--){137.System.out.print(" ");138.}139.for(j=0;j<i;j++){140.System.out.print("*");141.}142.System.out.println();143.}144.for(i=1;i<5;i++){145.for(j=0;j<i;j++){146.System.out.print(" ");147.}148.for(j=5;j>i;j--){149.System.out.print("*");150.}151.System.out.println();152.}153.}154.}逆序的各种算法:1.public class Reverse {2.public static void main(String[] args) {3.//定义的字符4.String s = "华中爱我";5.6.7.//通过String的subString方法8.int len = s.length();9.String sub_reverse = "";10. for (int i = len; i > 0; i--)11. sub_reverse += s.substring(i - 1,i); //返回子字符串,开始于i-1结束于i12. System.out.println("通过substring方法逆序: "+sub_reverse);13.14.15.//通过Sring的StringBuffer方法逆序16. String buffer_reverse;17. buffer_reverse=(new StringBuffer(s).reverse()).toString();18. System.out.println("通过StringBuffer方法逆序: "+buffer_reverse);19.20.21.//通过数组实现字符串逆序22. char[] c = s.toCharArray();23. char[] temp = new char[c.length];24. for (int i = 0, j = c.length - 1; i< c.length; i++, j--) {25. temp[j] = c[i];26. }27. System.out.println("通过数组来逆序: "+buffer_reverse);28.29.30.31.32. }33.}c用for循环打印三角形直角空心直角,等腰,等腰空心c用for循环打印三角形,直角,空心直角,等腰,等腰空心34.直角三角形 t11.c35.#include36.main()37.{38. int i,j;39. for (i=1;i<=10;i++) {40. for (j=1;j<=i;j++) {41. printf("*");42. }43. printf("\n");44. }45.}46.47.直角空心三角形 t12.c48.#include49.main()50.{51. int i,j;52. for (i=1;i<=10;i++) {53. for (j=1;j<=i;j++) {54. if (j==1 || j==i|| i==10)55.printf("*");56. else57.printf(" ");58. }59. printf("\n");60. }61.}62.等腰三角形 t13.c63.#include64.main()65.{66. int i,j;67. for (i=1;i<=10;i++) {68. for (j=1;j<=10-i;j++)69. printf(" ");70. for (j=1;j<=2*i-1;j++)71. printf("*");72. printf("\n");73. }74.}75.等腰空心三角形 t14.c76.#include77.main()78.{79. int i,j;80. for (i=1;i<=10;i++) {81. for (j=1;j<=10-i;j++)82. printf(" ");83. for (j=1;j<=2*i-1;j++) {84. if (j==1 ||j==2*i-1 || i==10)85.printf("*");86. else87.printf(" ");88. }89. printf("\n");90. }91.}。

使用ActionScript绘制Sierpinski三角形

使用ActionScript绘制Sierpinski三角形
、 研 究 开 发 ......

维普资讯
电 脑 知 识 与 技 术
使用 A t n cit ci S r 绘制 Sepn k 三角形 o p ir is i
沈玉 宝
( 肥幼 儿 师 范学 校 , 徽 舍 肥 2 0 1 ) 合 安 30 1
摘 要 : 文介 绍 了 Se i i 角形 构 造 规 则 , 本 i pmk 三 r 并且 用 Fa rf s nl 中 A f n c p 代 码 实 现 Sep s i 生 成 过程 。 l hP oe i a 8 s so c o Sf t i i i i k的 rn
其 顶点 坐标 为 (l 1 , 2 2 , 3y) x , )( , )( , ; y xy x 3
24调用 Sepn k 递 归 子 函数 ; . i i i r s
场景 第 一 帧 动 作 一 帧 面 板 中 输 入 以下 代 码 : , 置 C m o o 组 件 参 数 , 设 o bBx m _ bad e ( a : l e ”” ; _ . d e y c . h m { t 1 a l l}r r ba h m d d a , b : )r_ d )c lbl 2 } ae: ” ; ” ) m _ bad e ( aa , l e ”” ; r bad e y e . h m { t: d d 3 a l 3 }m)_ . h m b: ) _ d c lbl 4 1 ae: ” ; ” ) myc . dt ( a : l e: ”; r b d l m _ba l m { t 5 a l5 }m)_ . dt _ d e da , b ” ) _ a e c lbl 6 } ae: ” ; ” ) m _bad e ( aa , l e ””) _badtm y c . h m { t: d d 7 a l 7 1myc . l b: ; d e lbl 8 } ae: ” ; ” ) ,创 建 侦 听器 对 象 。 ,

利用迭代法构造sierpinski三角形。

利用迭代法构造sierpinski三角形。

利用迭代法构造sierpinski三角形。

1. 引言1.1 概述Sierpinski三角形是一种经典的几何图形,具有许多特殊的数学性质和美学价值。

它由一系列等边三角形组成,每个等边三角形都被分割成四个嵌套的小等边三角形。

Sierpinski三角形展现了迭代过程中的自相似性质,使得它成为研究自然界和工程领域中模式生成和图像压缩等问题的重要范例。

1.2 文章结构本文将详细介绍利用迭代法来构造Sierpinski三角形的原理、步骤和算法。

首先会对Sierpinski三角形的定义与特征进行说明,然后阐述迭代法作为构造该图形的基本原理。

接着,会逐步讲解如何使用迭代法来生成Sierpinski三角形,并提供具体步骤和算法供读者参考。

实例分析与解释部分将展示首次迭代结果以及多次迭代结果,并对迭代次数对Sierpinski三角形生成的影响进行深入分析。

讨论与拓展应用部分探讨了对迭代法构造Sierpinski三角形的优化方法,并展示了基于Sierpinski三角形的图像压缩算法应用实践研究。

最后的结论部分对研究成果进行总结回顾,并提出问题和不足之处,同时展望未来关于该领域进一步研究方向和可能的应用领域。

1.3 目的本文的目的是通过详细阐述迭代法构造Sierpinski三角形的原理与方法,旨在帮助读者深入理解Sierpinski三角形及其生成过程,并为相关领域的学术研究和实际应用提供启示。

通过本文内容的阐述,读者将能够掌握使用迭代法构造Sierpinski三角形所需的具体步骤和算法,同时了解该几何图形在图像压缩和其他领域中可能发挥的作用。

2. 迭代法构造Sierpinski三角形2.1 Sierpinski三角形的定义与特征Sierpinski三角形是一种经典的几何图形,以波兰数学家瓦茨沃夫·谢尔宾斯基(Wacław Franciszek Sierpiński)的名字命名。

它是由等边三角形不断重复迭代而成的。

谢尔宾斯基三角形c语言

谢尔宾斯基三角形c语言

谢尔宾斯基三角形c语言
谢尔宾斯基三角形是一种经典的几何图形,它由波兰数学家谢尔宾斯基于1915年发现。

谢尔宾斯基三角形是一种自相似的图形,它的每个部分都是整体的缩小版,这种自相似性质使得谢尔宾斯基三角形在数学和计算机科学领域中有着广泛的应用。

谢尔宾斯基三角形的构造方法非常简单,首先我们需要一个等边三角形,然后将这个三角形分成四个等边三角形,去掉中间的那个三角形,得到一个新的三角形。

接着,对于每个新的三角形,重复上述步骤,不断地分割和去掉中间的三角形,直到无限细分下去,就得到了谢尔宾斯基三角形。

在计算机科学领域中,谢尔宾斯基三角形被广泛应用于图像处理和计算机图形学中。

通过谢尔宾斯基三角形的自相似性质,我们可以使用递归算法来生成谢尔宾斯基三角形,这种算法非常高效,可以在短时间内生成非常复杂的图形。

除了计算机科学领域,谢尔宾斯基三角形还被应用于数学教育中。

通过谢尔宾斯基三角形的构造过程,我们可以帮助学生理解自相似性和递归算法的概念,这对于学生的数学素养和计算机科学素养的提高都有着积极的作用。

谢尔宾斯基三角形是一种非常有趣和有用的几何图形,它的自相似性质和递归算法的应用使得它在数学和计算机科学领域中有着广泛
的应用。

通过学习谢尔宾斯基三角形,我们可以更好地理解自相似性和递归算法的概念,这对于我们的数学和计算机科学素养的提高都有着积极的作用。

三角形单元程序详解

三角形单元程序详解

C ANAL YSIS PROGRAM FOR PLANE STRESS/STRAINC TRIANGULAR ELEMENTC MAIN PROGRAMDIMENSION LND(400,3),X(400),Y(400),JR(200,3),PJ(100,3),P(400)REAL KS(400,200)OPEN(5,FILE='F:\yang\psr.DA T')OPEN(6,FILE='F:\yang\psw.DA T')OPEN(7,FILE='F:\yang\DIS.DAT')READ(5,*) NJ,NE,NS,NPJ,IPS 读取psr.DA T第1行5FORMAT(5I5)WRITE(6,10)10FORMAT(4X,'FINITE ELEMENT ANAL YSIS'/*1X,'IN PLANE STRESS/STRAIN PROBLEM'/)WRITE(6,20) NJ,NE,NS,NPJ,IPS20FORMAT(4X,'NJ',3X,'NE',3X,'NS',3X,'NPJ',2X,'IPS'/1X,5I5)IF(IPS.EQ.0) WRITE(6,30)IF(IPS.EQ.1) WRITE(6,40)30FORMAT(/1X,'PLANE STRESS PROBLEM')40FORMAT(/1X,'PLANE STRAIN PROBLEM')NPJ1=NPJIF(NPJ.EQ.0) NPJ=1CALL SDATA(NJ,NE,NS,NW,NPJ,NPJ1,IPS,E,PR,T,V,LND,X,Y,JR,PJ) 读入结构数据NJ2=2*NJWRITE(6,50) NJ2 输出总自由度数到psw.DAT50FORMAT(/1X,'DEGREES OF FREEDOM=',I5)WRITE(6,60) NW 输出半带宽到psw.DAT60FORMAT(1X,'BAND WIDTH=',I5)CALL STIFF(NJ,NE,NJ2,NW,LND,X,Y,E,PR,T,KS) 计算总刚KSCALL EQUPE(NJ,NE,NPJ,NPJ1,NJ2,T,V,LND,X,Y,PJ,P) 计算等效节点荷载PCALL INSCD(NS,NW,NJ2,JR,KS,P) 引入边界条件CALL BGSMT(NJ,NJ2,NW,KS,P) 求解方程并输出位移CALL SIGME(NE,NJ,NJ2,E,PR,LND,X,Y,P)CLOSE(5)CLOSE(6)STOPEND******************************************************************************************************C SUBPROGRAM-1C INPUT STRUCTURAL DA TA输入结构数据SUBROUTINE SDATA(NJ,NE,NS,NW,NPJ,NPJ1,IPS,E,PR,T,V,LND,X,Y,JR,PJ)DIMENSION LND(NE,3),X(NJ),Y(NJ),JR(NS,3),PJ(NPJ,3)READ(5,*) E,PR,T,V 读取psr.DA T第2行5FORMAT(E15.6,3F10.4)WRITE(6,10) E,PR,T,V 写入psw.DA T10FORMAT(/10X,'E',14X,'PR',14X,'T',14X,'V'/1X,4E15.6)READ(5,*) ((LND(I,J),J=1,3),I=1,NE) 读取LND节点码数组15FORMAT(3I5)WRITE(6,20)20FORMAT(/1X,'ELEMENT INFORMATION'/3X,'ELEM',3X,'I J K'/)WRITE(6,30) (I,(LND(I,J),J=1,3),I=1,NE)30FORMAT(1X,4I5)READ(5,*) (X(I),Y(I),I=1,NJ) 读取节点坐标X,Y35FORMAT(2F10.4)WRITE(6,40)40FORMAT(/1X,'COORDINATES OF NODES'/3X,'NODE',8X,'X',13X,'Y')WRITE(6,50) (I,X(I),Y(I),I=1,NJ)50FORMAT(1X,I5,2E15.6)READ(5,*) ((JR(I,J),J=1,3),I=1,NS) 读取支撑数组JR(节点号,X方向,Y方向)WRITE(6,60)60FORMAT(/1X,'CONSTRAINED NODES'/3X,'NODE',3X,'X',4X,'Y')WRITE(6,70) ((JR(I,J),J=1,3),I=1,NS)70FORMAT(1X,3I5)IF(NPJ1.EQ.0) GOTO 100 没有节点荷载READ(5,*) ((PJ(I,J),J=1,3),I=1,NPJ) 读取节点荷载数组PJ(节点号,X方向荷载,Y方向荷载)75FORMAT(3F10.4)WRITE(6,80)80FORMAT(/1X,'LOAD CASES'/3X,'NODE',8X,'X',13X,'Y')WRITE(6,90) ((PJ(I,J),J=1,3),I=1,NPJ)90FORMAT(1X,F5.0,2E15.6)100NW=0 半带宽初始化DO 110 IE=1,NEDO 110 I=1,3DO 110 J=1,3IW=IABS(LND(IE,I)-LND(IE,J))IF(NW.GE.IW) GOTO 110NW=IW110CONTINUENW=(NW+1)*2IF(IPS.EQ.0) GOTO 120E=E/(1.0-PR*PR)PR=PR/(1.0-PR)120RETURNEND******************************************************************************************************C SUBPROGRAM-2C CALCULATE ELEMENT STIFFNESS MATRIX计算单元刚度矩阵KESUBROUTINE STE(IE,NJ,NE,LND,X,Y,E,PR,T,KE)DIMENSION LND(NE,3),X(NJ),Y(NJ),B(3,6),D(3,3),S(3,6)REAL KE(6,6)CALL ATE(IE,NJ,NE,LND,X,Y,AE) 单元面积CALL DTE(E,PR,D) 弹性矩阵DCALL BTE(IE,NJ,NE,LND,X,Y,AE,B) 应变矩阵BDO 10 I=1,3DO 10 J=1,6S(I,J)=0.0DO 10 K=1,310S(I,J)=S(I,J)+D(I,K)*B(K,J)DO 20 I=1,6DO 20 J=1,6KE(I,J)=0.0DO 20 K=1,320KE(I,J)=KE(I,J)+S(K,I)*B(K,J)*AE*TRETURNEND******************************************************************************************************C SUBPROGRAM-3C CALCULATE ELEMENT AREA、计算单元面积AESUBROUTINE ATE(IE,NJ,NE,LND,X,Y,AE)DIMENSION LND(NE,3),X(NJ),Y(NJ)I=LND(IE,1)J=LND(IE,2)K=LND(IE,3)XIJ=X(J)-X(I)YIJ=Y(J)-Y(I)XIK=X(K)-X(I)YIK=Y(K)-Y(I)AE=0.5*(XIJ*YIK-XIK*YIJ)RETURNEND******************************************************************************************************C SUBPROGRAM-4C CALCULATE ELASTICITY NATRIX计算弹性矩阵DSUBROUTINE DTE(E,PR,D)DIMENSION D(3,3)DO 10 I=1,3DO 10 J=1,310D(I,J)=0.0D(1,1)=E/(1.0-PR*PR)D(1,2)=E*PR/(1.0-PR*PR)D(2,1)=D(1,2)D(2,2)=D(1,1)D(3,3)=0.5*E/(1.0+PR)RETURNEND******************************************************************************************************C SUBPROGRAM-5C CALCULATE MATRIX [B]计算几何矩阵BSUBROUTINE BTE(IE,NJ,NE,LND,X,Y,AE,B)DIMENSION LND(NE,3),X(NJ),Y(NJ),B(3,6)I=LND(IE,1)J=LND(IE,2)K=LND(IE,3)DO 10 II=1,3DO 10 JJ=1,610B(II,JJ)=0.0B(1,1)=Y(J)-Y(K)B(1,3)=Y(K)-Y(I)B(1,5)=Y(I)-Y(J)B(2,2)=X(K)-X(J)B(2,4)=X(I)-X(K)B(2,6)=X(J)-X(I)B(3,1)=B(2,2)B(3,2)=B(1,1)B(3,3)=B(2,4)B(3,4)=B(1,3)B(3,5)=B(2,6)B(3,6)=B(1,5)DO 20 I1=1,3DO 20 J1=1,620B(I1,J1)=0.5/AE*B(I1,J1)RETURNEND******************************************************************************************************C SUBPROGRAM-6C CALCULATE WHOLE STIFFNESS MA TRIX计算总刚KSSUBROUTINE STIFF(NJ,NE,NJ2,NW,LND,X,Y,E,PR,T,KS)DIMENSION LND(NE,3),X(NJ),Y(NJ)REAL KS(NJ2,NW),KE(6,6)DO 5 I=1,NJ2DO 5 J=1,NW5KS(I,J)=0.0DO 10 IE=1,NE 按单元循环CALL STE(IE,NJ,NE,LND,X,Y,E,PR,T,KE) 生成单刚DO 10 I=1,3 行码循环DO 10 II=1,2IH=2*(I-1)+II 元素在KE中的行码IDH=2*(LND(IE,I)-1)+II 元素在KS中的行码DO 10 J=1,3 列码循环DO 10 JJ=1,2L=2*(J-1)+JJ 元素在KE中的列码IL=2*(LND(IE,J)-1)+JJ 元素在KS中的列码IDL=IL-IDH+1 元素在KS*中的列码IF(IDL.LE.0) GOTO 10KS(IDH,IDL)=KS(IDH,IDL)+KE(IH,L) 将KE中的元素送到KS*中10CONTINUERETURNEND注:KS*是一带状矩阵,是由KS演变来的******************************************************************************************************C SUBPROGRAM-7C CALCULATE NODAL LOAD VECTOR计算节点荷载PSUBROUTINE EQUPE(NJ,NE,NPJ,NPJ1,NJ2,T,V,LND,X,Y,PJ,P)DIMENSION LND(NE,3),X(NJ),Y(NJ),PJ(NPJ,3),P(NJ2)DO 10 I=1,NJ210P(I)=0.0IF(NPJ1.EQ.0) GOTO 30DO 20 I=1,NPJ 对节点荷载循环II=PJ(I,1)P(2*II-1)=PJ(I,2)20P(2*II)=PJ(I,3)30IF(V.EQ.0.) GOTO 50DO 40 IE=1,NE 计算体力引起的等效节点荷载CALL ATE(IE,NJ,NE,LND,X,Y,AE)PE=-V*AE*T/3.0 等效节点荷载DO 40 I=1,3II=LND(IE,I)40P(2*II)=P(2*II)+PE50RETURNEND******************************************************************************************************C SUBPROGRAM-8C INTRODUCE BOUNDARY CONDITION引入边界条件SUBROUTINE INSCD(NS,NW,NJ2,JR,KS,P)DIMENSION P(NJ2),JR(NS,3)REAL KS(NJ2,NW)DO 30 I=1,NS 按支撑数循环IR=JR(I,1) 取得支撑节点号DO 30 J=2,3IF(JR(I,J).EQ.0) GOTO 30II=2*IR+J-3 总刚KS中的行码IIKS(II,1)=1.0 II行1列置“1”DO 10 JJ=2,NW10KS(II,JJ)=0.0 II行置“0”IF(II.GT.NW) JO=NWIF(II.LE.NW) JO=IIDO 20 JJ=2,JO20KS(II-JJ+1,JJ)=0.0P(II)=0.0 II行荷载置“0”30CONTINUERETURNEND******************************************************************************************************C SUBPROGRAM-9C SOLVE EQUATIONS BY GS METHOD求解方程并输出位移SUBROUTINE BGSMT(NJ,NJ2,NW,KS,P)DIMENSION P(NJ2)REAL KS(NJ2,NW)高斯消元NJ1=NJ2-1DO 20 K=1,NJ1 消元(轴行)轮次循环IF(NJ2.GT.K+NW-1) IM=K+NW-1IF(NJ2.LE.K+NW-1) IM=NJ2K1=K+1DO 20 I=K1,IML=I-K+1C=KS(K,L)/KS(K,1)IW=NW-L+1DO 10 J=1,IWM=J+I-K10KS(I,J)=KS(I,J)-C*KS(K,M)20P(I)=P(I)-C*P(K)矩阵回代P(NJ2)=P(NJ2)/KS(NJ2,1) 求最后一个位移DO 40 I1=1,NJ1 按位移数(行)逆循环I=NJ2-I1IF(NW.GT.NJ2-I+1) JO=NJ2-I+1IF(NW.LE.NJ2-I+1) JO=NWDO 30 J=2,JOK=J+I-130P(I)=P(I)-KS(I,J)*P(K)40P(I)=P(I)/KS(I,1)WRITE(6,50)50FORMAT(/1X,'NODAL DISPLACEMENTS'/3X,*'NODE',5X,'X-DOSP.',8X,'Y-DISP.')DO 60 I=1,NJWRITE(6,70) I,P(2*I-1),P(2*I)WRITE(7,*) P(2*I-1)60WRITE(7,*) P(2*I)70FORMAT(1X,I5,2E15.6)RETURNEND******************************************************************************************************C SUBPROGRAM-10C CALCULATE ELEMENT STRESS MATRIX计算单元应力SUBROUTINE SIGME(NE,NJ,NJ2,E,PR,LND,X,Y,P)DIMENSION LND(NE,3),X(NJ),Y(NJ),D(3,3),B(3,6),S(3,6),*ST(3),P(NJ2),DE(6)WRITE(6,5)5FORMAT(/1X,'ELEMENT STRESSES'/)CALL DTE(E,PR,D)DO 50 IE=1,NE 按单元循环CALL ATE(IE,NJ,NE,LND,X,Y,AE) 单元面积AECALL BTE(IE,NJ,NE,LND,X,Y,AE,B) 应变矩阵BDO 10 I=1,3DO 10 J=1,6S(I,J)=0.0DO 10 K=1,310S(I,J)=S(I,J)+D(I,K)*B(K,J)DO 20 I=1,3DO 20 J=1,2IH=2*(I-1)+JIW=2*(LND(IE,I)-1)+J20DE(IH)=P(IW)DO 30 I=1,3ST(I)=0.0DO 30 J=1,630ST(I)=ST(I)+S(I,J)*DE(J)SGX=ST(1)σxSGY=ST(2)σyTXY=ST(3)τxyASG=(SGX+SGY)*0.5σpRSG=SQRT(0.25*(SGX-SGY)**2+TXY*TXY)vRSGMA=ASG+RSGσ1SGMI=ASG-RSGσ2IF(SGY.EQ.SGMI) CETA=0.0IF(SGY.NE.SGMI) CETA=90.-57.29578*ATAN(TXY/(SGY-SGMI))50WRITE(6,60) IE,SGX,SGY,TXY,SGMA,SGMI,CETA60FORMAT(1X,'ELEMENT NO.=',I5/3X,'SIGX=',E15.6,2X,'SIGY=',E15.6,*2X,'TXY =',E15.6/3X,'SGMA=',E15.6,2X,'SGMI=',E15.6,2X,*'CETA=',E15.6)RETURNEND。

离散动力系统生成sierpinski三角形

离散动力系统生成sierpinski三角形
离散动力系统在生成Sierpinski三角形以及其他图形方面非常有效,因为它可以快速生成复杂的图形。此外,离散动力系统还可以用于模拟各种各样的演化过程,如生物进化、社会变迁等。因此,它在各种领域中都有广泛的应用。
离散动力系统是一种用于模拟演化过程的数学模型。它通过不断迭代一组规则来模拟演化过程,并且可以生成各种各样的图形。
Sierpinski三角形是一种常见的图形,它是通过不断地把一个三角形分成三个更小的三角形来生成的。
在使用离散动力系统生成Sierpinski三角形时,我们需要设定一组规则来模拟这个演化过程。例如,我们可以设定一条规则,表示如果一点在三角形的内部,就将它移动到三角形的中心;另一条规则可以表示如果一个点在三角形的外部,就将它移动到三角形的顶点。
然后我们可以通过不断地迭代这些规则来生成Sierpinski三角形。在每次迭代中,我们都根据规则来更新点的位置,并且不断地重复这个过程,直到生成的图形达到我们预期的形状为止。
离散动力系统可以通过设定不同的规则来生成各种各样的图形,包括Sierpinski三角形。在使用离散动力系统生成Sierpinski三角形时,需要根据所使用的规则来调整迭代次数和其他参数,以便生成所需的图形。

c++等边三角形的编程

c++等边三角形的编程

c++等边三角形的编程等边三角形是指三边长度均相等的三角形。

在c++编程中,我们可以通过一些简单的语句来绘制等边三角形。

本文将简单介绍如何使用c++编程绘制等边三角形。

首先,我们需要定义一个等边三角形的边长,即三边长度相等的长度。

我们可以使用一个变量来存储这个长度。

以下是一个示例: ```c++int length = 10;```接下来,我们需要使用c++编程来绘制三角形。

我们将使用循环语句和输出语句来绘制等边三角形。

我们可以使用for循环来控制等边三角形的行数和列数,以下是一个示例:```c++for (int i = 1; i <= length; i++) {for (int j = 1; j <= length - i; j++) {cout << ' ';}for (int k = 1; k <= i; k++) {cout << '* ';}cout << endl;}```在这个示例中,我们使用了三个嵌套的for循环来输出等边三角形。

第一个for循环控制行数,第二个for循环控制空格数,第三个for循环控制星号数量。

最后,我们使用cout输出星号和空格,形成等边三角形的形状。

对于上述代码,我们可以通过以下方式解释:第一个for循环用来控制等边三角形的行数,i表示当前行数,从1开始逐渐增加,最大值为等边三角形的边长。

第二个for循环用来控制等边三角形每行的空格数量,j表示当前空格数,从1开始逐渐增加,最大值为等边三角形的边长减去当前行数。

第三个for循环用来控制等边三角形每行的星号数量,k表示当前星号数,从1开始逐渐增加,最大值为当前行数。

最后,我们使用cout输出星号和空格,形成等边三角形的形状,并在每行结束后输出一个换行符号。

通过以上代码,我们可以绘制出如下所示的等边三角形。

```** ** * ** * * ** * * * ** * * * * ** * * * * * ** * * * * * * ** * * * * * * * ** * * * * * * * * *```总结:本文简单介绍了如何使用c++编程绘制等边三角形。

通过坐标判断三角形c语言

通过坐标判断三角形c语言

通过坐标判断三角形c语言第一篇:通过坐标判断三角形c语言#include #includeint main(){int a,b,c,d,e,f;double g,h,i,j,k,l;printf(“请输入3个点的坐标,(不用加括号,坐标之间用逗号隔开)”)scanf(“%d,%d%d,%d%d,%d”,&a,&b,&c,&d,&e,&f);g=sqrt((a-c)*(a-c)+(b-d)*(b-d));h=sqrt((c-e)*(c-e)+(d-f)*(d-f));i=sqrt((e-a)*(e-a)+(f-b)*(f-b));if(h>g&&h>i){j=h;h=g;g=j;}if(i>h&&i>g){k=i;i=g;g=k;}if(i>h){l=h;h=i;i=l;if(g>=h+i||g<=h-i){printf(“不是三角形”);}else{if(g*g>i*i+h*h){printf(“钝角三角形”);}if(g*g==i*i+h*h||i*i==g*g+h*h||h*h==i*i+g*g){printf(“直角三角形”);}if(g*g{printf(“锐角三角形”);}} }第二篇:C语言三角形字母题目5:打印出如下图案。

A A AB ABC ABC ABCDE ABCD ABCDEFG ABCDE ABCDEFGHI ABCDEF ABCDEFGHIJK ABCDEFG#include main(){char a;int i=7,j,q;// printf(“输入一个数:n”);// scanf(“%d”,&i);for(j=1;j<=i;j++)for(a='A',q=0;q{printf(“%c”,a);a=a+1;}printf(“n”);} }#include main(){char a;int i=6,j,q,b,c;// printf(“输入一个数:n”);// scanf(“%d”,&i);for(q=1;q<=i;q++){for(b=q;b<=i;b++)printf(“ ”);for(a='A',c=1;c<=2*q-1;c++){printf(“%c”,a);a=a+1;}printf(“n”);} }第三篇:C语言判断闰年和平年C语言判断闰年和平年#include void fun(int year){ if((year%4==0&&year%100!=0)||(year%100==0&&year% 400==0)){printf(“%d年是闰年n”,year);} else {printf(“%d年不是闰年n”,year);} } void main(){ int Year;scanf(“%d”,&Year);fun(Year);}第四篇:通过月经情况判断健康状况通过月经情况判断健康状况月经是判断女性健康的一个重要标准,我们女性的身体也是很脆弱的,要重点的保护自己。

JavaScript图形实例:SierPinski三角形

JavaScript图形实例:SierPinski三角形

JavaScript图形实例:SierPinski三角形1.SierPinski三角形Sierpinski三角形是一种分形,由波兰数学家谢尔宾斯基在1915年提出,它是一种典型的自相似集。

其生成过程为:(1)取一个三角形(多数使用等边三角形);(2)沿三边中点连线,将它分成四个小三角形;(3)对上、左、右这三个小三角形重复这一过程。

SierPinski三角形的生成示意如图1所示。

图1 SierPinski三角形的生成SierPinski三角形采用递归过程易于实现,编写如下的HTML代码。

<!DOCTYPE html><head><title>SierPinski三角形</title></head><body><canvas id="myCanvas" width="600" height="600" style="border:3px double #996633;"> </canvas><script type="text/javascript">var canvas = document.getElementById('myCanvas');var ctx = canvas.getContext('2d');var depth =5;ctx.strokeStyle = "red";ctx.lineWidth = 3;function sierpinski(x1,y1,x2,y2,x3,y3,n){if (n<0) return;ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.lineTo(x3,y3);ctx.lineTo(x1,y1);ctx.closePath();ctx.stroke();var x4 = (x1 + x2) / 2;var y4 = (y1 + y2) / 2;var x5 = (x2 + x3) / 2;var y5 = (y2 + y3) / 2;var x6 = (x1 + x3) / 2;var y6 = (y1 + y3) / 2;sierpinski(x1,y1,x4,y4,x6,y6,n-1);sierpinski(x6,y6,x5,y5,x3,y3,n-1);sierpinski(x4,y4,x2,y2,x5,y5,n-1);}sierpinski(300, 500-500*Math.sqrt(3)/2, 50, 500, 550, 500,depth);</script></body></html>在浏览器中打开包含这段HTML代码的html文件,可以看到在浏览器窗口中绘制出的SierPinski三角形,如图2所示。

数字直角三角形c语言

数字直角三角形c语言

数字直角三角形c语言数字直角三角形是一种特殊的直角三角形,其中三个边的长度都是整数。

在本文中,我们将介绍使用C语言编写数字直角三角形的方法。

我们将讨论算法和代码,并给出示例以帮助读者更好地理解。

要编写C语言代码来生成数字直角三角形,我们需要使用嵌套的循环结构。

第一个循环将控制行数,第二个循环将控制每行中数字的数量。

让我们来看一个示例代码:```c#include <stdio.h>int main() {int rows;printf("请输入行数:");scanf("%d", &rows);for (int i = 1; i <= rows; i++) {for (int j = 1; j <= i; j++) {printf("%d ", j);}printf("\n");}return 0;}```在上面的代码中,我们首先声明了一个整数变量`rows`来存储用户输入的行数。

然后,我们使用`for`循环来控制行数。

在每一行中,我们使用另一个`for`循环来打印数字。

内部循环的条件是`j <= i`,这样可以确保每行打印的数字数量等于行数。

我们使用`printf`函数来打印数字,并在每行结束后使用`printf("\n")`来换行。

让我们通过一个例子来演示代码的运行过程。

假设用户输入的行数为5,那么代码将输出以下结果:```11 21 2 31 2 3 41 2 3 4 5```从输出中可以看出,这是一个数字直角三角形,其中每一行的数字从1开始递增,直到当前行数为止。

现在,让我们对代码进行一些修改,以生成特定的数字直角三角形。

我们将使用一个变量`start`来存储每行的起始数字,而不是始终使用1。

我们还将使用一个变量`step`来存储每次递增的步长。

修改后的代码如下:```c#include <stdio.h>int main() {int rows, start, step;printf("请输入行数:");scanf("%d", &rows);printf("请输入起始数字:");scanf("%d", &start);printf("请输入步长:");scanf("%d", &step);for (int i = 1; i <= rows; i++) {for (int j = 0; j < i; j++) {printf("%d ", start + j * step);}printf("\n");}return 0;}```在上面的代码中,我们添加了两个额外的输入提示,让用户输入起始数字和步长。

编程新手的疑惑:代码循环如何画出一个简单的三角形

编程新手的疑惑:代码循环如何画出一个简单的三角形
简单的做法就是不打印那些存在奇数的行,也就是说在循环时,若发现列数columns - 星数line 为奇数,则不打印该行。
判断奇数的方法为 求余,如果余数为0,则为偶数,执行循环,如果余数为1,则跳过。
public class PrintTest { public static void main(String[] args) { int line = 9;
简单的做法就是结合之前的代码。
public class PrintTest {
public static void main(String[] args) { for (int i = 0; i < 3; i++) { System.out.print("*"); } System.out.println(); for (int i = 0; i < 3; i++) { System.out.print("*"); } System.out.println(); for (int i = 0; i < 3; i++) { System.out.print("*"); } System.out.println();
int columns = 9; for (int i = 0; i < line; i++) {
int loffset; int roffset; int odd = (columns - (i + 1 )) % 2; if (odd == 0) {
loffset = ( columns - (i + 1 ) ) / 2; roffset = loffset; for (int j = 0; j < columns; j++) {
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

广西教育学院学报2002年第6期用C语言绘制SIERPINSKI三角形
戴祯杰岑磊
(广西教育学院数学与计算机系广西南宁邮编:530023)
摘要:本文介绍了Sierpinski三角形的构造规则,并且用C语言程序实现了Sierpinski三角形的生成。

关键词:Sierpinski三角形分形C语言
中图分类号:O1,T P39文献标识码:A文章编号:1006-9410(2002)06-0079-03
波兰数学家Waclaw Sierpinski于1916年提出Sierpinski三角形,具体做法如下:
作一等边三角形,连接各边中点,使原三角形分成四个小三角形,然后挖去中间的一个小三角形,如图1(a)所示。

将剩下的三个小三个角形按上面同样的方法继续分割,并舍弃位于中间的那个三角形,,如此不断重复分割与舍弃的过程,就能得到如图1(b)所示的结构,即由一个中间有大量空隙的三角形构成。

由于形成Sier pinski三角形的过程,是一个不断子分与舍弃的过程,其总的周长,随着分割的不断地进行而变得越来越大;而Sierpinski三角形的总面积(图中涂黑的部分)则变得越来越小。

在极限的情况下,三角形总的边长趋于无穷,而总的面积则趋于零。

也就是:当用一维的尺度去测量时,其值为无穷大,而当用二维尺度去度量时,测得的值为零,Sier pinski三角形的分维数为:D=log3/log2=1.5849,
Sierpinski三角形的英文名词是Gasket,有填料、垫片的意义。

这个模型与统计力学的某些问题有关,因78
而受到理论工作者的重视。

图1中给出的Sier pinski三角形是用计算机绘制的,算法步骤如下:
(1)设置递归深度n;
(2)用绘制一个三角形,其顶点坐标为(x a,ya),(x b,yb),(xc,yc);
(3)调用Sier-Gasket递归子程序。

以下为生成Sier pinski三角形的C语言源代码:
/*Sierpinski*/
#include<stdio.h>
#include<graphics.h>
v oid Sier-Gasket(float xa,float ya,float xb,float yb,float x c,float yc,int n)
{float xp,yp,x q,yq,x r,yr:
if(n>0)
{x p=(x b+x c)/2;y p=(yb+yc)/2;
x q-(x c+x a)/2;yq-(yc+ya)/2;
x r=(x a+xb)/2;yr=(y a+yb)/2
moveto(x p,yp);lineto(x q,yq);
lineto(x r,yr);lineto(x p,y p);
Sier-Gasket(xa,ya,x r,y r,x q,yq,n-1);
Sier-Gasket(xb,yb,x p,yp,xr,yr,n-1);
Sier-Gasket(xc,yc,xq,yq,xp,y p,n-1);
}
}
main()
{int n;
float xa,ya,x b,yb,xc,y c,x_max,y_max;
int gdr iver,g mo de;
gdriver=V GA;
gmode-V GAHI;
initgraph(&gdriver,&g mode,00);
pr intf(0Recursion dept h(for ex ample:7):0);
/*x_max=300.0;y_max=200.0;*/
scanf(0%d0,&n);
cleardevice();
x a=320.0,ya=182.0;
xb=420.0;yb=298.0;
79
x c-220.0;yc-298.0;
moveto(x a,ya);lineto(x b,yb);lineto(x c,yc);lineto(xa,ya);
Sier-Gasket(xa,ya,x b,yb,xc,y c,n);
getch();
closegraph();
}
在递归过程中,值得指出的是这里与前面有所不同,它是从大到小,也就是先挖去三角形三个中点构成的三角形,用白色填充,再分别挖去剩下的三个小三角形各边中点构成的三角形。

按这种方式一直递归到n=1为止,递归结束;否则,还需要分别对没有挖空的三角形继续进行深度为n-1的递归调用。

图2给出了n=4的Sierpinski三角形。

参考文献:
[1]胡瑞安等著.分形的计算机图像及其应用.中国铁道出版社,1995.1
[2]李友兰等著.T urbo C语言屏幕绘图.电子工业出版社,1993.10
80。

相关文档
最新文档