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 .现在将这些地毯按照编号从小到大的顺序平行于 ...
随机推荐
- <深度学习>TensorBoard的demo
import tensorflow.compat.v1 as tf import os os.environ["CUDA_VISIBLE_DEVICES"] = "-1& ...
- 【使用篇二】Lombok的介绍与使用(16)
Lombok通过简单注解来实现精简代码来达到消除冗长代码的目的.它能够提高编码效率.使代码更简洁.消除冗长代码.避免修改字段名时忘记修改方法名. 一.Lombok注解 Lombok主要常用的注解有: ...
- 第04组 Beta冲刺(2/4)
队名:斗地组 组长博客:地址 作业博客:Beta冲刺(2/4) 各组员情况 林涛(组长) 过去两天完成了哪些任务: 1.分配展示任务 2.收集各个组员的进度 3.写博客 展示GitHub当日代码/文档 ...
- js 运算的内置函数
// 一.Math.round()作用:四舍五入返回整数.(返回参数+0.5后,向下取整) // Math.round(5.57) //返回6 // Math.round(2.4) //返回2 // ...
- 【带着canvas去流浪(10)】文字烟花
目录 一. 文字烟花 二. 动画原理 2.1 像素操作 2.2 烟花生成算法 2.3 计时器 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址 ...
- InfluxDB从原理到实战 - 一篇文章搞懂InfluxDB时区
0x00 简介 InfluxDB默认以UTC时间存储并返回时间戳,当接收到一个时序数据记录时,InfluxDB将时间戳从本地时区时间转换为UTC时间并存储,查询时,InfluxDB返回的时间戳对 ...
- C# 请求在线接口数据
请求后台,有很多方式,常见的有WebRequest.HttpClient.以下mark一上~ WebRequest方式 1. Get public static async Task<strin ...
- linux中vi和vim操作
一.简单介绍 vi 和 vim 类似于windows的文本编辑器 所有的Linux系统都会内置vi文本编辑器 vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能 ...
- RDIFramework.NET敏捷开发框架 ━ 工作流程组件Web业务平台
接前两篇: RDIFramework.NET敏捷开发框架 ━ 工作流程组件介绍 RDIFramework.NET敏捷开发框架 ━ 工作流程组件WinForm业务平台 1.RDIFramework.NE ...
- Python list遍历remove()时的一个小BUG
有这样一个列表: s=list('abcdefg') 现在因为某种原因我们需要从s中踢出一些不需要的元素,方便起见这里直接以踢出所有元素的循环代替: for e in s: s.remove(e) 结 ...