本文以使用混沌方法生成若干种谢尔宾斯基相关的分形图形。
(1)谢尔宾斯基三角形
给三角形的3个顶点,和一个当前点,然后以以下的方式进行迭代处理:
a.随机选择三角形的某一个顶点,计算出它与当前点的中点位置;
b.将计算出的中点做为当前点,再重新执行操作a
相关代码如下:
class SierpinskiTriangle : public FractalEquation
{
public:
SierpinskiTriangle()
{
m_StartX = 0.0f;
m_StartY = 0.0f;
m_StartZ = 0.0f;
m_triangleX[0] = 0.0f;
m_triangleY[0] = FRACTAL_RADIUS;
m_triangleX[1] = FRACTAL_RADIUS*sinf(PI/3);
m_triangleY[1] = -FRACTAL_RADIUS*sinf(PI/6);
m_triangleX[2] = -m_triangleX[1];
m_triangleY[2] = m_triangleY[1];
}
void IterateValue(float x, float y, float z, float%26amp; outX, float%26amp; outY, float%26amp; outZ) const
{
int r = rand()%3;
outX = (x + m_triangleX[r])*0.5f;
outY = (y + m_triangleY[r])*0.5f;
outZ = z;
}
private:
float m_triangleX[3];
float m_triangleY[3];
};
关于基类FractalEquation的定义见:混沌与分形
最终生成的图形为:

通过这一算法可以生成如下图像:

(2)谢尔宾斯基矩形
既然能生成三角形的图形,那么对于矩形会如何呢?尝试下吧:
class SierpinskiRectangle : public FractalEquation
{
public:
SierpinskiRectangle()
{
m_StartX = 0.0f

本文介绍了如何使用混沌方法生成谢尔宾斯基三角形、矩形、五边形和四面体等分形图形。通过迭代处理三角形顶点的中点,创造出独特的几何形态,展示了分形的美丽和混沌理论的应用。
最低0.47元/天 解锁文章
5978

被折叠的 条评论
为什么被折叠?



