区区几行代码你可以完成逆袭,从此成为抽象派画家,有图有真相
所谓抽象画就是不是写实再现(此处来自度娘),而我觉得它就是人的一种思维抽象的表达,它不按常理出牌,千变万化,在混乱中又有自己的规律,在混乱中又有自己独特的美,让人看见它时思绪万千。那种美让人无法名状,那种美也是不能再复制的。
最近在学java基础课程的迭代方法,迭代是一种十分常见的算法,在数学中,迭代函数是在碎形和动力系统中深入研究的对象,而在代码的世界中我们可以利用迭代的思想结合一些迭代数学公式绘制一些美丽动人且充满艺术气息的抽象式图片。下面给大家分享一个刚刚完成的使用迭代思想来绘制图像的例子,区区几行代码你就可以成为抽象派的画家。几行代码你就可以做出如下的图片:
具体实现如下:
首先你要选择一个迭代的数学式子,百度一下很多,我选择的一个是(其中a,b,c,d为常数):
其实这样的式子也就是我们中学时学的数列,知道当前值就可以计算出写一个值,一直下去,这就是迭代的思想。
利用这个式子我们可以利用计算机计算出你想要数目的(X,Y)值,再使用java中的drawline(X,Y,X,Y)方法(当我们将画直线方法的起点坐标和末点坐标设置成一样的时候,绘制的就是一个点),将这些点绘制到画板上,并陪上颜色,就可以呈现一幅美丽的画了。下面是实现的具体代码(详细注释了):
/** * 一个公式,改变各个参数值,你就可以拥有各种各样的抽象图画,很神奇 * 使用一个按钮控制绘制 */ package 抽象图像; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class Draw extends JFrame implements ActionListener { //将画布对象设置为类的属性,可以在类的方法中使用 private Graphics g; //入口函数 public static void main(String[] args) { Draw d = new Draw(); d.init(); } // 初始化画板 public void init() { this.setTitle("神奇的函数"); this.setSize(700, 700); this.setDefaultCloseOperation(3); this.setLayout(new FlowLayout()); this.setLocationRelativeTo(null); this.getContentPane().setBackground(Color.black); this.setVisible(true); // 获取画布对象 g = this.getGraphics(); // 添加一个控制按钮 JButton bu = new JButton("画图"); bu.setActionCommand("draw"); this.add(bu); bu.addActionListener(this); } //重写ActionLitener中的方法,在此实现绘制的方法 public void actionPerformed(ActionEvent e) { //初始化x和y double x = 0, y = 0; //给公式的常量赋值,改变每个值可以得到不同的图像 double a =-1.7, b = -2.5, c = -2, d = -2; //使用循环计算出每次迭代的值,并完成绘制 for (int i = 0; i < 100000; i++) { //调用java中Math中的方法,计算函数值,计算出当前的x和y的值,下一次循环时用当前的x,y的值计算下一此的x和y的值,依次下去 x = d * Math.sin(a * x) - Math.sin(b * y); y = c * Math.cos(a * x) + Math.cos(b * y); //由于画布坐标的特点,所以作如下处理(左上角为原点,竖直向下为Y轴,计算的值太小所以*100,+330是为了将隐藏的点平移到画布上来) int m = (int) ((d * Math.sin(a * x) - Math.sin(b * y)) * 100+330); int n = (int) ((c * Math.cos(a * x) + Math.cos(b * y)) * 100+350); //给每个点上颜色,并绘制 g.setColor(new Color(250,i%255,i%155)); g.drawLine(m, n, m, n); } } }
改变式子中的常数(a,b,c,d)的值,会的到不一样的图片,同时记着给他们施以颜色,那样得到的图像会更动人,我尝试了换了几组数字,得到了几个图片,向大家展示一下,发挥你的想象的空间,绘制出更加NICE的图片:
原文:ITeye
区区几行代码你可以完成逆袭,从此成为抽象派画家,有图有真相相关推荐
- python你TM太皮了——区区30行代码就能记录键盘的一举一动
先看看效果 Like This↓ 一.公共WiFi 公用电脑什么的 在我们日常在线上工作.玩耍时,不论开电脑.登录淘宝.玩网游 统统都会用到键盘输入 在几乎所有网站,例如淘宝.百度.126邮箱等等 为 ...
- Python3,区区5行代码,让黑白老照片变成华丽的彩色照,被吸粉了。
区区5行行代码,把黑白老照片变成彩色照片 1.引言 2.代码实战 2.1 介绍 2.2 示例 3.总结 1.引言 小屌丝:鱼哥,走啊,出去撸串啊. 小鱼:今天可不行, 小屌丝:啥情况,串都不撸了,换口 ...
- Python3,区区10行代码,批量把图片插入Excel指定单元格中,省下时间去烫头发。
这里写目录标题 1.引言 2.代码实战 2.1 代码示例 2.2 遇到问题及处理方案 2.2.1 遇到问题 2.2.2 解决方案 3.总结 1.引言 小屌丝:鱼哥, 想请教你个问题. 小鱼:啥问题呢? ...
- 区区几行代码,就能全面实现 Python 自动探索性数据分析
探索性数据分析是数据科学模型开发和数据集研究的重要组成部分之一.在拿到一个新数据集时首先就需要花费大量时间进行EDA来研究数据集中内在的信息.自动化的EDA Python包可以用几行Python代码执 ...
- Python3,10行代码,制作艺术签名,从此走上人生巅峰。
制作艺术签名 1.引言 2.代码实战 2.1 代码示例 3.总结 1.引言 小鱼:小屌丝,你在画啥呢? 小屌丝:- 我这在练习签名呢. 小鱼:这- 艺术签? 小屌丝:喔,鱼哥,你这真实博才多艺,这都知 ...
- Python 3,4行代码实现去除图片背景色,从此告别PS!!
python3实现去除图片背景色 1. removebg工具介绍 2. 去除一张图片的背景色 3. 去除多张图片的背景色 最近博文更新的少,是因为小鱼在备考~~ 闲来无事,弄个证书玩完,关键,好处那是 ...
- 这短短几行代码价值一万
先说一下发生的事情吧. 去年某时,一位朋友找到我,说他面临一个很严重的问题,如果此问题解决不了,他们的产品就不能被用户所接受,说白了就是白做了,拿不到钱. 他们给用户开发一套软件,但是用户通过文本导入 ...
- Python用20行代码实现完整邮件功能 [完整代码+建议收藏]
大家好,我是Lex 喜欢欺负超人那个Lex 擅长领域:python开发.网络安全渗透.Windows域控Exchange架构 今日重点:python脚本实现发送邮件,邮件添加附件,读取接收邮件等功能. ...
- 60行代码出炫酷效果之 python语音控制电脑壁纸切换
前言 大家早好.午好.晚好吖 ❤ ~欢迎光临本文章 电脑大家有吧!手大家有吧!今天!! 就由我带领大家用区区60行代码打造一款语音壁纸切换器程序!!! 单纯的桌面有时候会让人觉得单调,那么~ 让大家能 ...
最新文章
- 伍六七带你学算法 入门篇——最后一个单词的长度
- 从Webshell到肉鸡
- diou ciou torch
- python3下载文件-在Python 3中从Web下载文件
- 微服务框架开发(二)—扩展spring schema
- 多线程的那点儿事(之读写锁)
- toj 4317 多连块拼图
- codeforces 598C C. Nearest vectors(极角排序)
- Apache安装及jboss部署说明文档1
- 计算机辅助设计与制造实习周记,计算机辅助设计与制造专业毕业实习周记范文原创全套.pdf...
- 《凤凰架构》读书笔记
- 亚马逊便携式小空调冷风机英国站UKCA认证测试标准
- yapi接口管理工具
- Windows 8 引入新版的凭据管理器
- 风火编程--opencv使用记事
- 国外大数据初创公司巨额融资 国内公司初长成
- iOS GPUImage研究序一:内置滤镜
- ClickHouse settings final
- Android 模拟器 计步器,春雨计步器怎样刷步数图文教程
- 程序如何打包成apk文件
热门文章
- MSN:小绿人的雄心
- LeanTouch 案例分享
- Android马赛克效果MosaicView
- 有道难题——2010网易编程挑战赛
- 【附源码】Java计算机毕业设计二手车况在线评估(程序+LW+部署)
- 【Android】HandlerThread详解
- 世界有时候是很大的,而胸怀也要宽大一些为好
- tcp accept函数
- 上传文件.HttpMediaTypeNotSupportedException:Content type ‘multipart/form-data;
- 数说故事与中山大学人机物智能融合实验室正式达成战略合作