很多人问我明明已经有现成的程序,为什么还要教大家自己写代码制作分形呢?

那好,既然已经有那么多人成功了,你们可以不用追求成功,就这样颓废下去,可以吗?

(这个例子是不是很怪?其实我认为是一回事)

import numpy as np

import cv2

from tqdm import tqdm

# 我只是想加个进度条

def f(z, c):

# 原始的M集迭代公式(Python支持复数数据类型,可以直接计算)

return z**2 + c

def dwell(z0, c, bailout, step):

# 一般的迭代数公式

z = z0

i = 0

while abs(z) <= bailout and i <= step:

z = f(z, c)

i += 1

return i

def dwell_to_bgr(s):

# 配色方案

# 这里用的函数是用伯恩斯坦基构造的,效果不错

red = lambda s: (1-s)**4

green = lambda s: (1-s)**2*(1+2*s+3*s**2)

blue = lambda s: 2*s**2*(1-s)*(3-s)

color = np.array([blue(s), green(s), red(s)])

color = np.floor(225 * color)

return color

def main():

# 基本参数:迭代步数,初值,逃离界

step = 1024

z0 = 0

bailout = 2

# 构造网格(在原定大小基础上进行9倍超采样)

x_ir = 640

y_ir = 360

g = np.zeros((3*y_ir+1, 3*x_ir+1))

# 作画区域确定

x_range = 2

y_range = x_range * y_ir / x_ir

# 计算各格子的颜色(配色方案另行说明)

for i in tqdm(range(g.shape[0])):

for j in range(g.shape[1]):

# 坐标这么写是保证生成的图符合传统上的直角坐标系

x = x_range * (2 * j / (g.shape[1]-1) - 1)

y = -y_range * (2 * i / (g.shape[0]-1) - 1)

c = x + y * 1j

g[i][j] = dwell(z0, c, bailout, step)

# 对矩阵进行0-1归一化

g = (g - np.min(g)) / (np.max(g) - np.min(g))

# 填入BGR三通道,适应OPENCV的格式

img = np.zeros((g.shape[0], g.shape[1], 3))

for i in tqdm(range(g.shape[0])):

for j in range(g.shape[1]):

for k in range(3):

img[i][j][k] = int(dwell_to_bgr(g[i][j])[k])

# 放缩恢复原定的图像大小(插值算法是我自己选的,有疑问可以问我)

img2 = cv2.resize(img, (x_ir, y_ir), interpolation=cv2.INTER_AREA)

cv2.imwrite("test.png", img2)

main()

python画简便的图-如何用python画M集(1)——M集原始图的画法相关推荐

  1. python 画三维函数图-如何用Matplotlib 画三维图的示例代码

    最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散 ...

  2. 用python画机器猫代码_如何用Python画一只机器猫?| 原力计划

    原标题:如何用Python画一只机器猫?| 原力计划 作者 | 人邮异步社区 责编 | 胡巍巍 出品 | CSDN博客 自信心是成功的源泉,对刚入门编程行业的初级程序员来说,多敲代码多做项目就是构建自 ...

  3. 用python画简单的动物-如何用python画简单的动物

    首先来看一下实现效果,如下图: 具体实现代码请看: (推荐学习:python视频教程)# -*- coding:utf-8 -*-# __author__ :kusy# __content__:文件说 ...

  4. python如何编写树_如何用Python画一颗小树?

    1.代码的结构: 本代码有两个子函数组成,有main函数和画树函数组成. 2.编写画树函数: 画树函数,就是用来画出我们的树的一种子函数,代码如下:def tree(plist,l,a,f): if ...

  5. 用python画简单的图案-如何用Python画各种著名数学图案 | 附图+代码

    原标题:如何用Python画各种著名数学图案 | 附图+代码 用Python绘制著名的数学图片或动画,展示数学中的算法魅力. Mandelbrot 集 代码:46 lines (34 sloc) 1. ...

  6. 如何用python画爱心型线_如何用python画爱心

    用python绘制爱心的基本步骤如下: 首先先下载安装好python程序. 在我们自己的电脑上找到python 的IDLE工具. 2.然后打开IDLE,新建一个文件,命名为test1.py. 3.接着 ...

  7. python程序写蛇_如何用Python画一条蛇

    先上效果图 最近又打算重新学习Python了, 之前也入门过Python, 但是弄完Python的开发环境后, 停留在print("hello world")阶段 非科班出身, 没 ...

  8. python绘制彩色同心圆_如何用python画同心圆

    Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发.Python在设计上坚持了 ...

  9. python 读取excel图片_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

  10. python编程代码画画_如何用python编写一个绘制马赛克图像的自写程序

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 这篇教程将会展示如何用python的图形化包"Pygame"和基础的文件I/O来创建一 ...

最新文章

  1. 模仿Hibernate的逆向工程_java版_源码下载
  2. android widget 研究 (转载)
  3. Linux IPC udp/tcp/UNIX域 socket编程
  4. 008_Redis的ZSet数据类型
  5. androidstuido_schooltest_7_storage
  6. redis集群搭建(基于docker)
  7. html中验证密码中是包含字母,在JavaScript中确认密码验证
  8. BZOJ 4706: B君的多边形 找规律
  9. [【转载】 linux进程间通信方式
  10. 【Python】 注释
  11. spring-beans下的BeanUtils.copyProperties
  12. ps文件太大无法保存?
  13. 太阳方位角/天顶角名词解释及计算方法
  14. 海量的超赞 Linux 软件 (转载)
  15. 从FrameDebugger看Unity渲染
  16. shell小实验详解1——for循环语句实现求奇数和与偶数和+小技巧使用!!!
  17. 测试点先发散后收敛思考
  18. mysql 5.7的my.ini的位置在隐藏文件夹“ProgramData”下面
  19. C基础学习之C 输入 输出
  20. 20世纪最好的10个算法(转)

热门文章

  1. OpenGL控件变换
  2. [C++11] 右值引用和移动语义
  3. Stanford机器学习---第八讲. 支持向量机SVM
  4. GNOME 3 + Ubuntu 11.04
  5. 解决百度富文本框中添加的表格页面获取后不显示表格边框的问题
  6. mysql5.7主从复制--在线变更复制类型【转】
  7. 枚举一个集合的所有子集
  8. POJ--1300--Door Man【推断无向图欧拉通路】
  9. BZOJ 2733: [HNOI2012]永无乡 启发式合并treap
  10. javascript时间差工具包