从蒙德里安的《纽约城一号》到我的《北京城七号》

关键字:Python、turtle、随机、抽象画、纽约城一号

事情还要从下面这则新闻说起:

新闻截图

抽象画派蒙德里安的大作《纽约城一号》被倒挂几十年?!正挂和倒挂的区别在哪里呢?(恕我理工男的审美能力低下,O(∩_∩)O哈哈~)

这样吧,我来用Python3.7的自带模块(无需额外安装)turtle模块画一幅抽象画《北京城七号》吧

import math
import random
import turtledef random_lines_new_york():"""仿绘蒙德里安的《纽约城一号》作品,作品使用红黄蓝三原色绘制线条。:return:"""def _draw_x(x, color, canvas_size):"""画平行于X轴的线条:param x: 指定的x坐标:param color: 颜色:param canvas_size: 画布大小:return:"""if type(color) is str:turtle.color(color)else:r, g, b = color# 设置画笔颜色turtle.color(r/255.0, g/255.0, b/255.0)# 移动画笔到开始点turtle.goto(x, -canvas_size / 2)turtle.down() # 落下画笔# 从画笔所在的位置画直线到指定的坐标点turtle.goto(x, canvas_size / 2)turtle.up() # 抬起画笔def _draw_y(y, color, canvas_size):"""画平行于指定的Y轴的线条:param y: y坐标:param color: 颜色:param canvas_size: 画布大小:return:"""if type(color) is str:turtle.color(color)else:r, g, b = color# 设置画笔颜色turtle.color(r / 255.0, g / 255.0, b / 255.0)# 移动画笔到开始点turtle.goto(-canvas_size / 2, y)turtle.down() # 落下画笔# 从画笔所在的位置画直线到指定的坐标点turtle.goto(canvas_size / 2, y)turtle.up() # 抬起画笔size = 600 # 画布大小margin = 20 # 画布边缘留白(最边缘的线条距离画布边缘的距离)margin_between = 15 # 线条最小间隔# turtle画布的原点在画布中心turtle.screensize(size, size, "white")turtle.up() # 画笔抬起turtle.speed(10) # 画笔速度turtle.pensize(12) # 画笔粗细yellow = (255,215,0) #'yellow'blue = 'blue'#(25,25,112)red = 'red'# 指定颜色(垂直于x轴的线条)color_x_list = [blue, red, red, red, red, yellow, yellow, yellow, yellow, yellow]# 打乱顺序random.shuffle(color_x_list)print(color_x_list)# 指定颜色(垂直于y轴的线条)color_y_list = [blue, blue, blue, red, red, red, red, yellow, yellow, yellow, yellow, yellow, yellow]# 打乱顺序random.shuffle(color_y_list)print(color_y_list)# 随机生成垂直于x轴的线条位置point_x_list = [margin, size - margin]while len(point_x_list) < len(color_x_list):temp_x = random.randint(margin, size - margin)is_ok = Trueif len(point_x_list) > 0:# 保证最小间距for i in point_x_list:if math.fabs(temp_x - i) < margin_between:is_ok = Falsebreakif is_ok:point_x_list.append(temp_x)print(point_x_list)# 生成12个垂直于y轴的线条位置point_y_list = [margin, size - margin]while len(point_y_list) < len(color_y_list):temp_y = random.randint(margin, size - margin)is_ok = Trueif len(point_y_list) > 0:# 保证最小间距for i in point_y_list:if math.fabs(temp_y - i) < margin_between:is_ok = Falsebreakif is_ok:point_y_list.append(temp_y)print(point_y_list)label_x = []for _ in point_x_list:# 添加x轴线条标识label_x.append('x')label_y = []for _ in point_y_list:# 添加y轴线条标识label_y.append('y')info_list = []info_list += zip(label_x, point_x_list, color_x_list)info_list += zip(label_y, point_y_list, color_y_list)# 打乱顺序random.shuffle(info_list)# 绘制线条for label, x, c in info_list:if label == 'x':_draw_x(x-size/2, c, size)else:_draw_y(x-size/2, c, size)# 抬起画笔turtle.up()# 隐藏画笔turtle.ht()turtle.done()if __name__ == '__main__':random_lines_new_york()

效果图如下,可以从4各方向观看哦:

从蒙德里安的《纽约城一号》到我的《北京城七号》相关推荐

  1. 日立电梯中标佛山地铁三号线、广州地铁七号线西延顺德段

    佛山地铁三号线 6月2日,日立电梯中标佛山地铁三号线,为该项目提供电扶梯产品共176台电梯.目前,佛山地铁三号线开工区间已过半,火车站站-桂丹路站区间右线"天佑31号"盾构机顺利始 ...

  2. 软交换总结之二-七号信令

    七号信令系统是一种局间信令系统.和其他局间信令系统一样,七号信令系统一般不负责用户终端和端局之间用户线上面信令的传输和处理,只负责局交换机之间.局交换机和其他电信设备之间的信令传输和处理. 七号信令属 ...

  3. 七号信令中TUP协议的主要消息和故障问题

    CIC码说明: TUP消息的路由标记: 为OPC 24位 DPC24位 CIC 12位,12位CIC 的低5为时隙号,其中后4位为SLC,高7位为系统号. CIC配置需要注意几个问题:         ...

  4. SAP HUM 如何将HU里的物料号换成另外一个物料号?

    SAP HUM 如何将HU里的物料号换成另外一个物料号? 比如HU 183221204047,里面的物料号是10000191, 业务因故包错了物料号,希望在继续使用HU号码的前提下将物料号由10000 ...

  5. 七号信令:SCCP层简介

    1.   SCCP的引入原因: Ø  通信网和通信新业务的不断发展,需传送与呼叫电路无关的消息. Ø  呼叫有关的消息和电路的不确定关系 Ø  DPC寻址的局限性 Ø  SI的局限性 Ø  网络上有大 ...

  6. linux主设备编号从0到多少,Linux驱动开发之主设备号找驱动,次设备号找设备

    一.引言 很久前接触linux驱动就知道主设备号找驱动,次设备号找设备.这句到底怎么理解呢,如何在驱动中实现呢,在介绍该实现之前先看下内核中主次设备号的管理: 二.Linux内核主次设备号的管理 Li ...

  7. java号段_JAVA手机号正则(多号段)

    import java.util.regex.Pattern; /** * @author: Lindsay * @Date: 2018/9/19 16:23 * @Description: 手机号正 ...

  8. 头条号个人中心登录_头条号平台上线「插入小程序」功能

    头条号平台上线「插入小程序」功能,创作者可在图文.小视频和自定义菜单中插入头条小程序,帐号服务能力和变现能力进一步提升. 一.什么是「头条小程序」? 「头条小程序」是为内容生产者提供的延伸变现工具,是 ...

  9. 一号信令是什么?1号信令和7号信令的区别介绍!

    1号信令又称为多频互控信令或随路信令.那么,什么是一号信令?一号信令是怎么分类的?1号信令常见问题有哪些?1号信令和7号信令之间有哪些区别呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧! 一.1 ...

最新文章

  1. 乐视云监控数据存放到influxdb中
  2. Symmetric multiprocessing(SMP)下的spinlock
  3. SQL Server 2008 阻止保存要求重新创建表的更改问题
  4. 【渝粤题库】陕西师范大学700011 新课程改革与生物教材研究
  5. 赫胥黎的焦虑与美丽新世界
  6. base64和hex
  7. linux-0.11 内核源码学习笔记一(嵌入式汇编语法及使用)
  8. 使用JavaScript 修改浏览器 URL 地址栏
  9. 如何修改默认字体_Excel技巧:怎么修改默认字体为宋体
  10. PHP用户名和密码登陆验证代码
  11. nginx lnmp之nginx+php
  12. SQL学习03---数据库系统概念第6版第3章习题答案
  13. 100首英文经典歌曲
  14. FreeRTOS学习笔记:FreeRTOS如何入门?任务就绪态、阻塞态、挂起态,傻傻分不清?
  15. EBS 报表开发:XML Publisher
  16. 1092: 地头蛇PIPI
  17. OSS对象存储之阿里云和七牛云
  18. SwiftUI学习笔记[path绘制]
  19. matlab创作歌曲——《月半小夜曲》
  20. 深度学习(一):给你的数据集打标签

热门文章

  1. 在使用Repeater、DataList 或 DataGrid 的模板列表时,根据不同状态,显示不同颜色
  2. 为什么越来越多人选择3D打印模型手办
  3. 8个常见的相亲交友源码前端防御性编程方案
  4. 阿里云ECS_Linux服务器解决蠕虫病毒MinerGuard
  5. 【收藏】计算机专业常用学习网站
  6. Unity3d 5.x 学习笔记(3)—— 发射预制体子弹(Instantiate),点射,扫射,五连发效果
  7. 提高质量管理体系的有效性(转载)
  8. cpu压力 测试软件,破坏测试工具——CPU压力
  9. python猜价格小游戏
  10. 提取图像细节的两种方法