创意图形项目技术文章总结

简介: 分形图形不同于传统的图形,它具有自相似的特点即通常可以理解为一个粗糙或者零碎的几何图形,可以不断分成数个部分,而且每一部分都近似的是原来的图形缩小后的形状。它们之间往往有一些的共同的规律,在java编程实现的过程中,一般可以通过坐标的变换来实现绘图。最重要的就是找出其中的变化规律。

分形图形不同于传统的图形,它具有自相似的特点即通常可以理解为一个粗糙或者零碎的几何图形,可以不断分成数个部分,而且每一部分都近似的是原来的图形缩小后的形状。它们之间往往有一些的共同的规律,在java编程实现的过程中,一般可以通过坐标的变换来实现绘图。最重要的就是找出其中的变化规律。



下面通过对几个例子的分析来实现几个分形图形的绘图。


要实现分形图形的绘制,首先需要有一个画图板界面(之前的文章已经提过,此处略去~),也可以在上面定义颜色按钮。



例一:神奇的色子


1.平面上随机选A,B,C三个点。再随机选一个点,记为P。


2.有一个三面色子,每丢一次,则选中ABC三个中一点。


开始游戏:


1.重复丢色子,如果选中A,则取A和P的中点P1,画黑,


2.如果选中B,则取B和P1的中点P2,画黑


3.如果选中A,则取A和P2的中点P3,画黑



分析:


所谓平面上选择A,B,C,P 四个点就是在界面上随机生成四个坐标。


每丢一次色子选中A,B,C,中的一个点也可以通过随机数来实现,比如随机产生一个3以内的非负整数,0代表A,1代表B,2代表C


当选中的点不同时,中点的坐标可由数学关系式表示,用java中drawLine的方法可以画出该点。上述过程在for循环中循环多次即可绘图。


以下是代码的实现:

40.png41.png




例二:迭代实现分形


42.png分析:这两个图形的画法较为相似。


需要注意的是坐标的值可能过小,需要对他们进行放大;


经三角函数计算后的值可能为小数,而drawLine方法中参数需要是int类型的,所以需要数据类型的强制转化。


由于在赋值过程中x和y值的值会不断的变化,而后面的计算也需要用到x和y的值,所以需要定义一个中间变量来暂时保存数据,之前计算完毕后再将其赋值之后将各点画黑。


最后将上面的各个步骤放入一个for循环中循环多次实现绘图。



以下是代码的实现:


第一个图形



43.png


第二个图形:


44.png



例三:迭代分形的另一个画法



45.png


(1)a = 0.4, b = 1, c = 0


(2)a = 1, b = 4, c = 60


思路和例二一样,根据题目中已有的规律不断改变x和y的值,每次经过适当的放大,用drawLine(x1,y1,x2,y2)方法画点。最后将上述过程放入for循环中循环多次画出图形


以下是代码的实现:


46.png47.png


例四:L-System


48.png60.png61.png

L-System是人们通过对植物对象生长过程的经验式概括和抽象得出来的一种分形图形。它的核心思想是字符串替换。


通过对它的图形的分析,我们不难发现它的递推规律,如果假设一条直线所对应的字符串为“F”,再定义逆时针旋转60°为“+”,顺时针旋转60°为“-”,那么初始直线就可以转化成字符串“F+F--F+F”;进行下一步时,只用将该字符串中的所有的“F”再替换成“F+F--F+F”即可。


具体的实现方法为:


49.png

实现了字符串的替换,下面就需要考虑如何根据字符串画出我们想要的图形了。


①先统计有几条直线,记一共有linecount条直线,可以换算成4^n条,那么下面直线长度就是(初始长度/3^(n-1))


50.png②生成真实的点的数组,其中x0,y0控制画线的方向,x1,y1控制每次画线的末位置



51.png


③遍历点的数组,将相邻的两个点画线连接起来



52.png之后就实现了L-System图形的绘制


相关文章
|
索引 Python
Python 教程之 Pandas(10)—— 访问 series 的元素
Python 教程之 Pandas(10)—— 访问 series 的元素
285 0
Python 教程之 Pandas(10)—— 访问 series 的元素
|
存储 Docker 容器
Docker安装默认存储路径修改与镜像恢复
Docker安装默认存储路径修改与镜像恢复
515 0
|
机器学习/深度学习 数据采集 vr&ar
3D重建范式变革!最新模型MVDiffusion++
【2月更文挑战第30天】MVDiffusion++,一项革命性的3D重建技术,能在少量图像和无相机姿态信息下生成高密度、高分辨率的3D视图,简化重建流程。采用无姿态架构和视图丢弃策略,提升效率和质量。在Objaverse和Google Scanned Objects数据集上表现优越,且能与文本到图像生成模型结合,潜力广泛应用于游戏、电影和虚拟现实。然而,对训练数据质量和计算资源的需求是其挑战。
261 4
3D重建范式变革!最新模型MVDiffusion++
|
机器学习/深度学习 人工智能 算法
AI技术如何提升视频画质
在现代科技的飞速发展下,人工智能(AI)技术已经成为人们生活中不可或缺的一部分。尤其是在视频处理领域,AI技术的作用愈发凸显。AI技术的出现不仅仅简化了视频处理的流程,而且提高了视频画质的表现力和感知度。 本文将讲述AI技术提升视频画质的基本特点与方法。
|
存储 缓存 数据安全/隐私保护
Windows 命令提示符(CMD)操作(二):系统信息和管理
Windows 命令提示符(CMD)操作(二):系统信息和管理
|
机器学习/深度学习 数据采集 算法
【Python机器学习】过拟合及其抑制方法讲解及实战(图文解释 附源码)
【Python机器学习】过拟合及其抑制方法讲解及实战(图文解释 附源码)
258 0
【Python机器学习】过拟合及其抑制方法讲解及实战(图文解释 附源码)
|
人工智能
技术心得记录:关于自补图的认识和构造(无证明)
技术心得记录:关于自补图的认识和构造(无证明)
613 0
|
机器学习/深度学习 数据采集 人工智能
智能运维:机器学习在系统维护中的应用与挑战
本文深入探讨了机器学习技术在IT运维领域的应用,并分析了其带来的优势及面临的主要挑战。文章首先概述了智能运维的发展历程和当前趋势,随后详细讨论了机器学习技术如何优化故障预测、自动化处理流程以及增强安全监控。最后,文中指出了实施过程中可能遇到的技术和管理难题,为读者提供了对智能运维未来发展方向的深刻见解。
|
存储 移动开发 算法
《阿里大数据之路》读书笔记:第二章 日志采集
《阿里大数据之路》读书笔记:第二章 日志采集
|
存储 机器人 PyTorch
使用 ExLlamaV2 在消费级 GPU 上运行 Llama 2 70B
使用 ExLlamaV2 在消费级 GPU 上运行 Llama 2 70B
702 0