`
kidneyball
  • 浏览: 329013 次
  • 性别: Icon_minigender_1
  • 来自: 南太平洋
社区版块
存档分类
最新评论

分形绘图简介(三) 界面操作

 
阅读更多
上一篇 :分形绘图简介(二) Apophysis 7X登场

前面已经了解了Apophysis的随机生成分形图的功能。下面来看看如果要自己动手绘制一幅分形图,过程是怎样的。同样,暂时不要去关注分形算法,先按照操作教程感受一下绘画过程。

为了便于描述,这一节先了解一下常用的绘图操作界面。(如果你喜欢自己摸索界面的话,也可以直接开始作画

Editor面板

前面已经说过,在主界面按F4键(或者按快捷栏的Editor按钮)就会弹出Editor面板。现在来详细看看这个面板上有些什么。



首先是快捷工具栏



按钮从左到右分别是:
New Flame : 新建一个空白的图案
New Transform : 新建一个变换三角
Duplicate Transform :复制当前的变换三角
Remove Transform : 删除当前的变换三角

Undo : 撤销
Redo : 重做

Copy transform coordinates :复制当前变换三角的参数。
Paste transform coordinates : 把剪贴板中的变换三角参数(如果有的话)应用到当前选择的变换三角上。

Selection Mode : 在变换三角窗口上按下鼠标时会自动选择鼠标所在位置的变换三角。如果关闭Selection Mode,则只能通过右边的Transform下拉框来选择当前的变换三角。特别适用于变换三角出现重叠的情况。
Movement Mode,Rotation Mode,Scale Mode : 这三个按钮只能激活其中一个,用来选择在变换三角窗口中拖动鼠标的行为,分别是:移动、旋转和伸缩。

Toggle World Pivot : 开启/关闭全局旋转中心。激活此按钮,旋转变换三角时将以全局坐标系的原点为圆心。否则(默认情况)以当前变换三角的O顶点为圆心。
Rotate transform counterclockwise : 逆时针转90度
Rotate transform clockwise : 顺时针转90度
Flip transform horizontally : 水平翻转
Flip transform vertically : 垂直翻转

Toggle variation preview : 开启/关闭变换效果预览。激活此按钮,将在变换三角窗口中用点阵图显示当前变换三角的变换效果。在学习绘图期间,建议打开此选项。
Toggle post-transform : 激活post-transform变换三角。关于什么是post-transform,后面再谈。
Toggle final-transform : 激活final-transform变换三角。同样以后再谈。

Add linked transform : 加入一个通过Xaos机制与当前变换三角关联的变换三角。同样,先不用管什么是Xaos。

然后是左边的变换三角编辑窗口。除了前面提过的可以用鼠标左键拖动来改变变换三角外,在这个窗口中:
用鼠标滚轮可以放大/缩小视角
用鼠标右键拖动可以平移视角(按下右键时会弹出右键菜单,不管它,按住右键拖动即可)
按住shift拖动变换三角可以强制垂直或水平平移
按住alt拖动变换三角可以强制旋转
按住ctrl拖动变换三角可以强制拉伸

右边的Transform下拉框可以用来选择当前变换三角
Name就不用说了,随便给当前变换三角起个名,留空亦可
Weight是调整当前变换三角的权重,一个变换三角的权重越值相对于其他变换三角来说越高,由这个变换三角所形成的图案就越明显。注意这里取的是所有变换三角权重的一个比值,把全部变换三角的权重设为1000,和全部设为1是一样的。

右下角是一个标签页面板
Triangle标签页显示了当前变换三角的位置与结构参数。



X、Y、O分别指三个顶点的坐标。

下面带箭头的框用来对变换三角进行定量的旋转、平移和缩放。其中第一个数字是每次旋转的角度,设好后按两边的图标进行旋转。第二个数字是平移的步长,第三个数字缩放的百分比,同样是设好后按两边的图标进行操作。

最下面的Pivot是旋转中心的坐标。

Transform标签页提供了当前变换三角的矢量描述。



其中O还是指O顶点在全局坐标系中的坐标(即由原点出发到O点的矢量)
X和Y则分别是X顶点和Y顶点相对于O点的坐标(即由O点出发到X,Y的矢量)
Rectangular按钮用来激活直角坐标系
Polar按钮用来激活极坐标系。
最下面的Auto-calculate pre_zscale是用来帮助绘制3D图像的,暂时先不管。

Color标签页提供了当前变换三角的颜色描述



其中第一个输入框是由当前变换三角所形成的图像的颜色索引。需要注意的是,“分形火焰算法”是一种基于渐变调色板进行着色的算法,因此必须先为整幅图选定一个渐变颜色方案(在下面介绍的Adjustment面板中设置)。在这里则选定当前变换三角所形成的图像在渐变颜色方案中的颜色索引,如果嫌输入数字麻烦,可以拖动下面的滚动条,或者在色块上按下鼠标左键再水平拖动。

color speed用于确定其他变换三角的颜色对当前变换三角颜色的影响系数,取值由-1到1。设为-1时,则完全不管其他的变换三角,只使用当前变换三角自己的颜色。设为1时,表示完全不管当前颜色,只由其他变换三角来确定当前变换三角的颜色。

Opacity是当前变换三角图像的透明度,取值0到1,为0时完全不显示由当前变换三角所产生的图像。(但是不会隐藏当前变换三角对其他变换三角的影响)

Direct color : 暂时我也不知道是啥。一般就保持默认。

Solo复选框 : 隐藏其他变换三角的图像,只显示当前变换三角生成的图像。

下面三个滑动条是三角变换窗口中的点阵预览的设置。只有开启了工具栏上的“Toggle variation preview”后才会有效果。这些选项对最终结果没有任何影响,一般就保持默认。
Range是点阵的大小
Depth是预览的迭代层数(这个对了解当前变换三角的变换效果比较有用)
Density是点阵的密度

Variations标签页提供了当前变换三角所使用的变换函数。关于变换函数的详情在谈及“分形火焰算法”时再谈。目前我们只要知道在Apophysis中作画,其实是把一个平面上的点集经过一系列函数迭代变换而形成新的图像,而所谓的变换三角,只不过是变换函数的六个基本系数的一个形象描述而已。而这里就决定了当前的变换三角使用什么样函数。



这里列出了众多的变换函数,每个函数后面都可以设定一个系数。这个系数是指点集经过该函数变换后,再乘以这个系数。根据函数不同,这个系数产生的实际效果也不同,需要在实践中逐个慢慢试验掌握。如果系数是0,说明这个函数不起任何作用。任何非零数字都说明当前函数在起作用。如果嫌输入数字麻烦,可以在其名称标签上按住左键然后水平拖动(在大部分属性列表中都可以这样操作)。如果打开了“Toggle variation preview”,在拖动时可以看到变换三角窗口中的点阵预览会即时变动。

Apophysis 7X在创建一个新变换三角时,往往会默认把linear3D的系数设为1。如果实际上不需要的话,记得要把它清零。最方便的办法是在开始修改Variations前,先按最下方的"Clear"按钮,清空所有系数。

如果你只想对正在使用的函数系数进行修改,可以勾选“Hide unused variations”复选框,它会隐藏所有系数为0的函数。

Apophysis 7X已经内置了众多的变换函数,我们也可以通过安装plugin的方式去增加变换函数。在网上找到plugin后(例如在 http://www.fxysw.com/thread-764-1-1.html ),把其中的dll文件复制到Apophysis 7X安装目录下的plugin目录下,再启动Apophysis,就能在这个标签页下发现新的函数了。注意,如果你下载了大量plugin,最好不要一次性全部复制到plugin目录下,这会影响Apophysis的效率(Variations列表也会变得非常长,难以操作)。应该只在用到时把必要的插件复制进去。

Variables标签页则提供了当前变换三角所使用的变换函数所需的一些额外变量。



前面说过,变换三角其实是变换函数的六个基本系数的形象描述。而对于一些比较复杂函数,除了六个基本系数外,还需要一些额外的参数,这里就是用来配置这些额外参数的。

比如说,如果我们在Variations标签页中使用了Julian这个变换,这时再进入Variables标签页,就能看到这里多了julian_power与julian_dist两个参数。

Xaos标签页提供了各个变换三角之间相互影响的设置,在这里先不详述。

以上就是Editor面板的全部界面功能,已经包含了创作分形图的所需的大部分功能,比起photoshop的琳琅满目的绘图工具来说应该说是简单多了(只不过它的运作原理就没photoshop那么直观了)。

除了Editor面板外,Apophysis 7X还提供了另一个面板来对整体图形进行调节。

Adjustment面板

在主窗口上按F5键或在主窗口快捷栏上按Adjustment按钮()就能打开Adjustment面板。



这个面板上的参数将对整个图形产生影响。右上方的的全局参数包括:
Depth Blur : 对3D图像产生景深模糊效果。建议先设置好Pitch和Yaw参数后,这个参数才能正确运作。

Pitch : 3D图像的镜头垂直角度,0表示从正上方俯视,90表示从侧面平视

Yaw : 3D图像的镜头水平角度。

Height : 镜头高度

Perspective : 镜头距离(将此值调大会产生一种将镜头伸入图像中的广角效果)

Scale : 此参数可以对图像进行缩放,但是放大后的图像质量会降低。如果想保持图像质量,应该使用下面Camera标签页的zoom参数(但zoom对细节放大会降低渲染速度)。

下面的标签页

Camera标签页提供了图像大小,镜头位置,旋转图像等设置



Rendering标签页提供了Gamma修正值,亮度,颜色饱和度,背景色的设置。



值得注意的是,有时按照网上的教程去一步步操作,会发现得到的图像和教程的不一致,很可能是由于亮度不够造成的,可以先来这里把亮度适当调整一下,如果还是不行再考虑是不是有些步骤做错了。

Gradient标签页提供了对渐变调色板的设置。



前面说过,“分形火焰算法”的着色机制是基于渐变调色板的。简单来说,就是平面点集被函数变换后,目标平面上的每某一个点都会根据其被命中的次数计算出一个颜色索引值,然后根据这个索引值去调色板中取相应的颜色作为该点颜色。因此同一幅图像,通过调整调色板,可能呈现出完全不同的效果。

面板中的调色板可以用鼠标水平拖动,相当于修改Hue值。下方第一行的参数用于对当前调色板进行调整。第二行的则可以选择不同的调色板,Apophysis 7X内置了数百个调色板。我们也可以导入自定义的调色板。

Image size标签页提供了对画布大小的设置



在Apophysis中进行分形绘图的常用界面大致上就这些,有一些细一点的功能(例如post-transform,final-transform,和Xaos)在了解了算法再来探讨会更好一些。现在,我们已经可以准备好绘制第一幅分形图了。

下一篇 : 分形绘图简介(四)开始作画
  • 大小: 8.1 KB
  • 大小: 14.3 KB
  • 大小: 24.4 KB
  • 大小: 22.1 KB
  • 大小: 28.4 KB
  • 大小: 107.5 KB
  • 大小: 35.3 KB
  • 大小: 20.9 KB
  • 大小: 52.2 KB
  • 大小: 23.1 KB
  • 大小: 25.5 KB
  • 大小: 50.7 KB
  • 大小: 25.6 KB
  • 大小: 8 KB
  • 大小: 50.7 KB
1
4
分享到:
评论

相关推荐

    三种动态分形图 mfc实现 含源代码

    在这个项目中,"三种动态分形图mfc实现含源代码"意味着我们可以通过提供的源代码了解如何使用MFC来绘制三种不同的分形图案。 分形图主要包括以下几种类型: 1. **曼德勃罗集(Mandelbrot Set)**:这是最著名的...

    分形-Cantor三分集MATLAB代码

    5. **图形绘制**:MATLAB提供了强大的绘图功能,如`plot`、`fill`等函数,可以用来可视化Cantor三分集的过程。每次迭代后,可以用不同颜色填充剩下的部分,以展示分形的生成过程。 6. **递归**:虽然不是必须的,但...

    MFC VC++实现Sierpinski分形图像

    它的构造过程是通过将一个等边三角形分割成四个小三角形,然后去除中间的一个,再对剩下的三个进行相同的操作,反复迭代。 1. **初始化OpenGL上下文**:在MFC中,我们通常在CView的OnInitialUpdate()方法中设置...

    分形的matlab程序

    6. **交互式编程**:MATLAB的图形用户界面(GUI)工具箱允许创建交互式的分形生成程序,用户可以通过滑块或输入框动态改变参数,实时观察分形的变化。 通过学习和实践这些概念,你可以利用MATLAB的灵活性和强大功能...

    MFC实现分形云层

    开发者可以重载CView的OnDraw()函数来实现自定义的绘图逻辑,即分形云层的生成算法。 ### 分形云层生成 1. **初始化参数**:首先,设定云层的大小、颜色范围、迭代次数等参数。这些参数将影响最终生成的云层效果。...

    vc++实现分形树的绘制

    本文将详细解析代码片段中的关键知识点,包括如何在Visual C++(vc++)环境中构建一个基于界面的分形树绘制程序,以及分形树算法的基本原理。 ### 分形树的概念 分形树是一种具有自相似性质的数学构造,其形状在...

    Java实现的分形算法与程序设计

    在实现分形时,通常会使用Swing中的`JFrame`、`JPanel`等组件来构建GUI界面,并利用`Graphics2D`类来进行绘图操作。 ##### 绘制分形的基本步骤 1. **定义分形绘制区域**:首先需要确定一个合适的画布大小,并设置...

    推荐一个MATLAB的多重分形工具箱-Fraclab.rar

    Fraclab工具箱就是利用MATLAB的编程接口和图形界面,为用户提供了一套完整的多重分形计算和分析工具。 4. **Fraclab工具箱功能**: - **谱分析**:工具箱提供了计算多重分形谱的函数,这是多重分形分析的核心部分...

    Java图形分形实例源码.rar

    在Java中,通过利用Java AWT(Abstract Window Toolkit)或Swing库,可以创建出交互式的图形界面来展示这些美丽的分形图案。 在描述中提到,这个源码可能有一定的复杂性,暗示可能涉及到递归算法和复杂的图形计算。...

    用vc++实现的分形图案算法源码

    GDI是Windows API的一部分,可以进行基本的绘图操作,如线条、曲线、填充等;DirectX则提供了更强大的图形处理能力,适用于高性能的图形应用。 5. **源码组织**:项目中的源码可能包含了主函数、分形生成函数、绘图...

    VB 分形图科赫格子的实现

    在VB6(Visual Basic 6)环境中,分形图是一种非常有趣的图形编程概念,它可以创建出具有无限细节和复杂性的自相似图案。科赫格子是分形几何中的经典示例,它通过简单的规则迭代生成复杂的形状。在这个项目中,我们...

    分形图像代码(matlab)

    进一步,可以结合MATLAB的用户界面组件,创建交互式应用,让用户能够动态调整参数,实时查看分形变化。 总的来说,“fractals_1.2”压缩包为学习和实践分形图像的MATLAB编程提供了宝贵的资源。通过深入理解这些...

    分形图像C++实现

    ### 分形图像C++实现详解 #### 一、分形图像概述 分形是一类具有自相似性质的几何形状或空间填充模式,在自然界中有广泛的应用,例如海岸线、山脉、云彩等。在计算机图形学中,通过数学方法生成分形图像是一种常见...

    一个基于VC++的简单分形树

    在MFC应用中,我们可能使用CDC(Device Context)类来处理绘图操作,如MoveTo()和LineTo()函数用于绘制线条,以及SetPixel()或者FillSolidRect()等函数来填充颜色。同时,我们还需要在视图类中重载OnDraw()函数,...

    毕业设计MATLAB_谢尔宾斯基分形三角形.zip

    文件可能包含了函数定义、变量声明、迭代逻辑以及绘图指令,通过调用MATLAB的图形用户界面(GUI)或命令行界面(CLI)来展示分形图像。 2. `license.txt`:通常包含软件许可协议,规定了该代码的使用、复制、修改和...

    分形算法与程序设计——Visual Basic实现.rar

    Visual Basic(VB)是一种流行的编程语言,特别适合初学者和快速原型开发,它的易用性和图形用户界面(GUI)支持使其成为实现分形算法的理想选择。 1. **分形基础理论**: - **自相似性**:分形形状在不同尺度上看...

    随机L系统分形树

    - 绘图:将每个字母转化为相应的图形操作,如移动、旋转和绘制线段,形成图形。 - 双击窗口功能:允许用户在图形界面中双击,触发新的迭代,动态观察分形树的生长。 **6. 应用场景** 随机L系统在计算机图形学、艺术...

    Julia集的分形实现

    5. **绘图**:将计算好的颜色数据绘制到CBitmap上,然后更新到窗口的CDC对象,从而在界面上显示分形图像。 6. **交互性**:为了增强用户体验,可以添加交互功能,如改变迭代次数、选择不同常数C等,实时更新分形...

    Fractal:Java分形绘图仪

    在**Java分形绘图仪**中,用户通常可以通过交互式界面来探索这些分形集。点击鼠标可以放大某一点,以便更细致地观察分形的内部结构。这种实时缩放功能展示了分形的自相似性,即使在极小的尺度上,分形的复杂模式依然...

    matlab开发-生成分形树

    在实际操作中,MATLAB的强大功能在于其丰富的图形用户界面和强大的数值计算能力。通过结合这两个特性,我们可以实时观察分形树的生成过程,调整参数以优化视觉效果。例如,可以添加交互式元素让用户输入角度、长度...

Global site tag (gtag.js) - Google Analytics