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

简介: 分形图形不同于传统的图形,它具有自相似的特点即通常可以理解为一个粗糙或者零碎的几何图形,可以不断分成数个部分,而且每一部分都近似的是原来的图形缩小后的形状。它们之间往往有一些的共同的规律,在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图形的绘制


相关文章
|
数据可视化 测试技术 定位技术
任何人都可以制作的六大酷炫创意地图
任何人都可以制作的六大酷炫创意地图
392 0
任何人都可以制作的六大酷炫创意地图
|
iOS开发
开眼了!20个极具创意的移动界面动画效果
  静态截图不能显示任何活力,而线框图也看起来略显枯燥。对于移动应用程序开发人员和设计师来说,通过动感的 GIF 动画展示手机应用程序的概念与屏幕或一个特定的功能在应用程序中是如何工作是一个可爱的呈现技巧。
930 0
新手如何成为更好的图形设计师
新手如何成为更好的图形设计师使用 Eye Dropper 分析配色表https://chrome.google.com/webstore/detail/eye-dropper/hmdcmlfkchdmnmnmheododdhjedfccka使用 Page Ruler 测量https://chrome.
|
Web App开发
55个激发您设计灵感的蓝色风格Web设计
即使 您在设计中只采用了一对,又或者整个页面都是,在Web设计中也将是很好的选择。您可以使用不同的蓝色色调梯度,蓝色背景纹理,蓝色字体排版或蓝色图标。 您有足够可以采用的非常酷的组合,使得您建立一个可以触摸的时尚类型的网站。
1062 0
|
Web App开发 前端开发
免费精美素材:一组充满吸引力的矢量徽章图案
  徽章是设计中使用的基本元素之一,是帮助你销售产品和提升产品人气的非常有效的方式。如果你想让网页中的某个产品吸引用户的注意力,你可以给它加个徽章。下面分享一组充满吸引力的免费矢量徽章集合,赶紧收藏吧。
1050 0
|
10月前
|
算法 API 异构计算
MistoLine-线条魔法,驾驭每一缕创意!
MistoLine 是一个可以适配任意类型线稿,准确性高,稳定性优秀的SDXL-ControlnetNet模型。它可以基于用户输入的任意类型的线稿图(手绘、各类controlnet-line preprocessor、模型线框轮廓等)作为条件,生成高质量图像(短边大于1024px),无需再根据不同线预处理器选择不同的controlnet模型,MistoLine在各类线稿条件下都有较好的泛化能力。
|
10月前
|
数据可视化 测试技术 uml
【掌握绘图艺术】用PlantUML绘制完美UML图表,开发者的福音
【掌握绘图艺术】用PlantUML绘制完美UML图表,开发者的福音
1890 1
|
6月前
|
图形学 开发者
【独家揭秘】Unity游戏开发秘籍:从基础到进阶,掌握材质与纹理的艺术,打造超现实游戏视效的全过程剖析——案例教你如何让每一面墙都会“说话”
【8月更文挑战第31天】Unity 是全球领先的跨平台游戏开发引擎,以其高效性能和丰富的工具集著称,尤其在提升游戏视觉效果方面表现突出。本文通过具体案例分析,介绍如何利用 Unity 中的材质与纹理技术打造逼真且具艺术感的游戏世界。材质定义物体表面属性,如颜色、光滑度等;纹理则用于模拟真实细节。结合使用两者可显著增强场景真实感。以 FPS 游戏为例,通过调整材质参数和编写脚本动态改变属性,可实现自然视觉效果。此外,Unity 还提供了多种高级技术和优化方法供开发者探索。
97 0
|
15天前
|
人工智能 自然语言处理 搜索推荐
PhotoDoodle:设计师必备!AI一键生成装饰元素,30+样本复刻风格+无缝融合的开源艺术编辑框架
PhotoDoodle 是由字节跳动、新加坡国立大学等联合推出的艺术化图像编辑框架,能够通过少量样本学习艺术家的独特风格,实现照片涂鸦和装饰性元素生成。
43 1
PhotoDoodle:设计师必备!AI一键生成装饰元素,30+样本复刻风格+无缝融合的开源艺术编辑框架
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
Sketch2Lineart:AI绘画工具,自动将手绘草图转换成清晰的线条画
Sketch2Lineart是一款基于人工智能的绘画工具,能够自动将手绘草图转换成清晰的线条画。该工具支持多种功能,如草图转线稿、自动描述生成、细节调整和风格定制等,适用于艺术创作、产品设计、教育培训等多个领域。
337 60
Sketch2Lineart:AI绘画工具,自动将手绘草图转换成清晰的线条画