下面我们用 MATLAB 模拟一个简化的火焰效果, 在这个模拟中,每个点都按照以下规则进
行迭代:
(1)对于每个点 (x(i), y(i)),随机选择一个小的水平位移 dx 和一个垂直位移 dy。
(2)更新点的位置:x(i) = x(i) + dx 和 y(i) = y(i) + dy。
(3)根据点的 y 坐标从预定义的颜色映射中选择一个颜色。
这个过程重复多次(由 maxIter 控制),并且每次迭代都在同一图形窗口中更新点的位置和
颜色。
这个模拟中的“迭代公式”实际上是一组随机位移规则,而不是一个固定的数学公式。因此,
它产生的图形不是传统意义上的分形,而是一个看起来像火焰的动态粒子系统。
MATLAB 代码:
clear all;clc;close all;
% 火焰分形模拟
% 参数设置
nPoints = 5000; % 生成的点数
maxIter = 25; % 最大迭代次数
x = zeros(nPoints, 1); % 初始化 x 坐标
y = zeros(nPoints, 1); % 初始化 y 坐标
color = zeros(nPoints, 3); % 初始化颜色
% 定义火焰的颜色梯度
colorMap = [255 0 0; 255 128 0; 255 255 0; 200 200 0; 128 128 0; 0 128 0];
colorMap = colorMap / 255; % 归一化到 0-1 范围
% 生成初始点
for i = 1:nPoints
x(i) = rand; % 随机 x 坐标
y(i) = 0; % 初始 y 坐标为 0
color(i, :) = colorMap(1, :); % 初始颜色为红色
end
% 创建图形窗口
figure;
hold on; % 保持当前图形
% 模拟火焰分形
for iter = 1:maxIter