Application Scenarios
- Algorithm Testing: Generate ground-truth fractals with known dimensions
- Education: Demonstrate fractal geometry concepts
- Benchmarking: Compare analysis methods on known structures
- Artistic Creation: Generate fractal artwork
Usage Examples
Generate Classic Fractals
import numpy as np, matplotlib.pyplot as plt
from FreeAeonFractal.FASample import CFASample
from FreeAeonFractal.FAVisual import CFAVisual
points_1d = CFASample.get_Cantor_Set(iterations=256) # dim ≈ 0.63
points_2d = CFASample.get_Sierpinski_Triangle(iterations=1024) # dim ≈ 1.58
points_fern = CFASample.get_Barnsley_Fern(iterations=4096) # dim ≈ 1.67
points_3d = CFASample.get_Menger_Sponge(iterations=10240) # dim ≈ 2.73
fig = plt.figure(figsize=(14, 4))
ax1 = fig.add_subplot(141); CFAVisual.plot_1d_points(points_1d, ax1); ax1.set_title("Cantor Set")
ax2 = fig.add_subplot(142); CFAVisual.plot_2d_points(points_2d, ax2); ax2.set_title("Sierpinski")
ax3 = fig.add_subplot(143); CFAVisual.plot_2d_points(points_fern, ax3); ax3.set_title("Barnsley Fern")
ax4 = fig.add_subplot(144, projection='3d'); CFAVisual.plot_3d_points(points_3d, ax4); ax4.set_title("Menger Sponge")
plt.tight_layout(); plt.show()
Convert Points to Image and Analyze
points = CFASample.get_Sierpinski_Triangle(iterations=4096)
image = CFASample.get_image_from_points(points, img_size=(512, 512))
from FreeAeonFractal.FAImageFD import CFAImageFD
fd_bc = CFAImageFD(image).get_bc_fd()
print("Sierpinski FD (BC):", fd_bc['fd']) # expected ≈ 1.58
Class Description
CFASample
IFS fractal generator. Uses randomized iterated affine transformations (chaos game algorithm).
generate(init_point, iterations, trans_matrix, trans_probability) [static]
Core IFS engine. Returns (iterations, ndim) point array.
trans_matrix: shape(n_transforms, ndim, ndim+1)— affine matricestrans_probability: selection probabilities, must sum to 1
get_Cantor_Set(init_point, iterations=256) [static]
1D Cantor Set. Dimension ≈ 0.6309 (log 2 / log 3)
get_Sierpinski_Triangle(init_point, iterations=256) [static]
2D Sierpinski Triangle. Dimension ≈ 1.585 (log 3 / log 2)
get_Barnsley_Fern(init_point, iterations=4096)
2D Barnsley Fern. Dimension ≈ 1.67
get_Menger_Sponge(init_point, iterations=10240) [static]
3D Menger Sponge using 20 contraction maps. Dimension ≈ 2.727 (log 20 / log 3)
get_image_from_points(points, img_size=(512,512), margin=0.05) [static]
Convert 2D IFS point cloud to binary uint8 image (occupied pixels = 255).
Fractal Dimensions Reference
| Fractal | Dimension | Method |
|---|---|---|
| Cantor Set | ≈ 0.63 | 1D box-counting |
| Sierpinski Triangle | ≈ 1.58 | 2D box-counting |
| Barnsley Fern | ≈ 1.67 | 2D box-counting |
| Menger Sponge | ≈ 2.73 | 3D box-counting |
Important Notes
- Iterations: More = denser approximation; 1000+ recommended for analysis
- Image Size: 256×256 or larger gives reliable scale ranges for FD analysis
- IFS Convergence: Converges regardless of start point; discard first few hundred if needed