sierpinski地毯
(分形作业)
取一矩形,九等分而去其中。
每一份九等分去其中;循环往复。

方法一(传统方法)
将每个矩形映射到三个矩形中去即可。
k=3**times
b=np.zeros((k,k),dtype=int)
for i in range(k//3):
for j in range(k//3):
t=ct.renew(a[i][j])
b[3*i:3*i+3,3*j:3*j+3]=t
return b
if i==0:
t=np.zeros((3,3),dtype=int)
t[1][1]=1
elif i==1:
t=np.ones((3,3),dtype=int)
return t
创建一个比之前的矩形大3倍的矩形,将原来的每块按“若黑,中白外黑;若白,全白”的方法来处理。
在数据存储里,以黑为0,以白为1。刚好用分别(zeros+芯=1)与(ones)来处理,是坠吼的。
每个回合,我们都把矩形扩大了3倍(以行数计)。
只要再补上一个模块,使输出的矩形如你所想地大。其实我本来是不想整的 ,但是,最初的矩形是9*9像素的。。。这不影响我交作业但是这做博客就很难看了。

我会告诉你我是这么交上去的?
import ct
import numpy as np
import random
def output(a,times,iii):
k=3**(iii-times)
n=3**iii
p=3**times
b=np.zeros((n,n),dtype=int)
for i in range(p):
for j in range(p):
pass
if a[i][j]==1:
for ii in range(k):
for jj in range(k):
b[i*k+ii][j*k+jj]=1
b[i*k+ii][j*k+jj]=1
b[i*k+ii][j*k+jj]=1
return b
k=3**times
b=np.zeros((k,k),dtype=int)
for i in range(k//3):
for j in range(k//3):
t=ct.renew(a[i][j])
b[3*i:3*i+3,3*j:3*j+3]=t
return b
if i==0:
t=np.zeros((3,3),dtype=int)
t[1][1]=1
elif i==1:
t=np.ones((3,3),dtype=int)
return t
k=3**iii
for i in range(k):
for j in range(k):
if a[i][j]==0:
img[i][j][0]=0
img[i][j][1]=0
img[i][j][2]=0
if a[i][j]==1:
img[i][j][0]=255
img[i][j][1]=255
img[i][j][2]=255
return img
import numpy as np
import ct
a=np.zeros((1,1),dtype=int)
times=1
for i in range(times):
a=ct.big(a,i+1)
print(a.shape)
img=ct.cut(times)
imgg=ct.print(a,times,img)
cv2.imwrite(name,imgg)
if times<5:
b=ct.output(a,times,5)
imgx=ct.cut(5)
imgggg=ct.print(b,5,imgx)
name=str("sierpinskinew"+str(int(times))+".jpg")
cv2.imwrite(name,imgggg)
总之是因为可以心安理得地用python而高兴的一天。
哎,你说C++,是不会用么?算也不算。
讲道理要实现没什么技术问题,除了,你写三小时程序有两小时在骂街以外。
C++使我暴躁。
你说我np(3**7,3**7)多快乐啊。上次int a[1000][1000]直接boom了。。。
替代算法有么,当然有,可是不快乐啊2333333。
sierpinski地毯的更多相关文章
- sierpinski地毯(II)
今天又是因为可以用py而高兴的一天. 继续咱的sierpinski地毯计划. 二,随机算法 在二十年前,磁盘容量以MB还是KB计的时候,分形解决计图的问题确实有很大的优势.存至多十来个数就好了.我要在 ...
- 分形之谢尔宾斯基(Sierpinski)地毯
前面讲了谢尔宾斯基三角形,和这一节的将把三角形变为正方形,即谢尔宾斯基地毯,它是由瓦茨瓦夫·谢尔宾斯基于1916年提出的一种分形,是自相似集的一种. 谢尔宾斯基地毯的构造与谢尔宾斯基三角形相似,区别仅 ...
- 混沌分形之谢尔宾斯基(Sierpinski)
本文以使用混沌方法生成若干种谢尔宾斯基相关的分形图形. (1)谢尔宾斯基三角形 给三角形的3个顶点,和一个当前点,然后以以下的方式进行迭代处理: a.随机选择三角形的某一个顶点,计算出它与当前点的中点 ...
- sierpinski垫片(3D)[误]
今天是因为可以用py而高兴的一天. 昨天老板淡淡地回了一句,sierpinski地毯画得挺好的. 我思考了五秒钟之后,想起来作业其实是sierpinski垫片. 三角垫片比地毯难做多了. 因为 ...
- JavaScript图形实例:SierPinski三角形
1.SierPinski三角形 Sierpinski三角形是一种分形,由波兰数学家谢尔宾斯基在1915年提出,它是一种典型的自相似集.其生成过程为: (1)取一个三角形(多数使用等边三角形): (2) ...
- 18个分形图形的GIF动画演示
这里提供18个几何线段分形的GIF动画图像.图形颜色是白色,背景色为黑色,使用最基本的黑与白以表现分形图形. (1)科赫(Koch)雪花 (2)列维(levy)曲线 (3)龙形曲线(Drago ...
- JavaScript动画实例:递归分形图动态展示
在“JavaScript图形实例:SierPinski三角形” 和“JavaScript图形实例:Levy曲线及其变形”等文章中我们介绍了通过递归生成分形图形的方法.我们可以将绘制的分形图形每隔一定的 ...
- luogu1003铺地毯[noip2011 提高组 Day1 T1]
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...
- AC日记——铺地毯 洛谷 P1003(水水水水水~)
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...
随机推荐
- Spring学习的第二天
第二天总共学习了以下内容: spring中的ioc常用注解: 案例使用xml方式和注解方式实现单表的CRUD操作(但还是需要xml配置文件,并不是纯注解的配置): 改造基于注解的Ioc案例,使用纯注解 ...
- 字节码联盟成立,WebAssembly 生态将完善网络安全性
近日 Mozilla.Fastly.Intel 与 Red Hat 宣布成立联合组织 Bytecode Alliance(字节码联盟),该联盟旨在通过协作实施标准和提出新标准,以完善 WebAssem ...
- 使用python执行系统命令——subprocess
背景:subprocess是python官方推荐调用系统命令的模块 import subprocess subprocess最主要的两个方法/类: # 参数说明:stdin和stdout相当于一个管 ...
- java基础 - 形参和实参,值传递和引用传递
形参和实参 形参:就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的. 形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元. 因此,形 ...
- 集合系列 Queue(九):PriorityQueue
PriorityQueue 是一个优先级队列,其底层原理采用二叉堆实现.我们先来看看它的类声明: public class PriorityQueue<E> extends Abstrac ...
- 使用python解析ip地址
前言 想要批量将ip地址转换为省份城市.国家或是经纬度?百度上的批量查找每次的容量太小满足不了要求?第三方库神器 - geoip2帮你解决所有烦恼. 准备工作 首先安装一下geoip2库, pip i ...
- Windows10 搭建Kafka集群
下载Kafka 1.下载Kafka:http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz 2.解压后复制Kafka文件夹,分 ...
- 剑指offer笔记面试题12----矩阵中的路径
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该路径 ...
- win7系统防止中招勒索病毒
echo @@ netsh advfirewall firewall add rule name= netsh advfirewall firewall add rule name= netsh ad ...
- Android Gradle 学习笔记(三):Gradle 日志
在第一节,我们使用到了gradle -q hello命令行来运行Hello World,并对Hello World进行了简单的分析,了解到 gradle -q hello 的意思是要执行的build. ...