The superformula is a generalization of the
superellipse
A superellipse, also known as a Lamé curve after Gabriel Lamé, is a closed curve resembling the ellipse, retaining the geometric features of semi-major axis and semi-minor axis, and symmetry about them, but a different overall shape.
In the C ...
and was proposed by Johan Gielis around 2000. Gielis suggested that the formula can be used to describe many complex shapes and curves that are found in nature. Gielis has filed a patent application related to the synthesis of patterns generated by the superformula, which expired effective 2020-05-10.
In
polar coordinates
In mathematics, the polar coordinate system is a two-dimensional coordinate system in which each point on a plane is determined by a distance from a reference point and an angle from a reference direction. The reference point (analogous to t ...
, with
the radius and
the angle, the superformula is:
:
By choosing different values for the parameters
and
different shapes can be generated.
The formula was obtained by generalizing the superellipse, named and popularized by
Piet Hein, a
Danish mathematician
A mathematician is someone who uses an extensive knowledge of mathematics in their work, typically to solve mathematical problems.
Mathematicians are concerned with numbers, data, quantity, mathematical structure, structure, space, Mathematica ...
.
2D plots
In the following examples the values shown above each figure should be ''m'', ''n''
1, ''n''
2 and ''n''
3.
A
GNU Octave
GNU Octave is a high-level programming language primarily intended for scientific computing and numerical computation. Octave helps in solving linear and nonlinear problems numerically, and for performing other numerical experiments using a lang ...
program for generating these figures
function sf2d(n, a)
u = :.001:2 * pi
raux = abs(1 / a(1) .* abs(cos(n(1) * u / 4))) .^ n(3) + abs(1 / a(2) .* abs(sin(n(1) * u / 4))) .^ n(4);
r = abs(raux) .^ (- 1 / n(2));
x = r .* cos(u);
y = r .* sin(u);
plot(x, y);
end
Extension to higher dimensions
It is possible to extend the formula to 3, 4, or ''n'' dimensions, by means of the
spherical product
In mathematics, the superquadrics or super-quadrics (also superquadratics) are a family of geometric shapes defined by formulas that resemble those of ellipsoids and other quadrics, except that the squaring operations are replaced by arbitrary ...
of superformulas. For example, the
3D parametric surface A parametric surface is a surface in the Euclidean space \R^3 which is defined by a parametric equation with two parameters Parametric representation is a very general way to specify a surface, as well as implicit representation. Surfaces that o ...
is obtained by multiplying two superformulas ''r''
1 and ''r''
2. The coordinates are defined by the relations:
:
:
:
where
(
latitude
In geography, latitude is a coordinate that specifies the north– south position of a point on the surface of the Earth or another celestial body. Latitude is given as an angle that ranges from –90° at the south pole to 90° at the north po ...
) varies between −''π''/2 and ''π''/2 and ''θ'' (
longitude
Longitude (, ) is a geographic coordinate that specifies the east– west position of a point on the surface of the Earth, or another celestial body. It is an angular measurement, usually expressed in degrees and denoted by the Greek let ...
) between −''π'' and ''π''.
3D plots
3D superformula: ''a'' = ''b'' = 1; ''m'', ''n''
1, ''n''
2 and ''n''
3 are shown in the pictures.
Image:Sf3d_3257.svg
Image:Sf3d_3.5.5.5.svg
Image:Sf3d_3301515.svg
Image:Sf3d_7284.svg
Image:Sf3d_5111.svg
Image:sf3d_4.5.54.svg
Image:sf3d_8.5.58.svg
Image:Sf3d_4121515.svg
A
GNU Octave
GNU Octave is a high-level programming language primarily intended for scientific computing and numerical computation. Octave helps in solving linear and nonlinear problems numerically, and for performing other numerical experiments using a lang ...
program for generating these figures:
function sf3d(n, a)
u = pi:.05:pi
v = pi / 2:.05:pi / 2
nu = length(u);
nv = length(v);
for i = 1:nu
for j = 1:nv
raux1 = abs(1 / a(1) * abs(cos(n(1) .* u(i) / 4))) .^ n(3) + abs(1 / a(2) * abs(sin(n(1) * u(i) / 4))) .^ n(4);
r1 = abs(raux1) .^ (- 1 / n(2));
raux2 = abs(1 / a(1) * abs(cos(n(1) * v(j) / 4))) .^ n(3) + abs(1 / a(2) * abs(sin(n(1) * v(j) / 4))) .^ n(4);
r2 = abs(raux2) .^ (- 1 / n(2));
x(i, j) = r1 * cos(u(i)) * r2 * cos(v(j));
y(i, j) = r1 * sin(u(i)) * r2 * cos(v(j));
z(i, j) = r2 * sin(v(j));
endfor;
endfor;
mesh(x, y, z);
endfunction;
Generalization
The superformula can be generalized by allowing distinct ''m'' parameters in the two terms of the superformula. By replacing the first parameter
with ''y'' and second parameter
with ''z'':
[* ]
:
This allows the creation of rotationally asymmetric and nested structures. In the following examples a, b,
and
are 1:
References
External links
{{Commons category, Superformula
Some Experiments on Fitting of Gielis Curves by Simulated Annealing and Particle Swarm Methods of Global OptimizationLeast Squares Fitting of Chacón-Gielis Curves By the Particle Swarm Method of OptimizationSuperformula 2D Plotter & SVG GeneratorInteractive example using JSXGraphSuperShaper: An OpenSource, OpenCL accelerated, interactive 3D SuperShape generator with shader based visualisation (OpenGL3)Simpel, WebGL based SuperShape implementation
Geometric shapes
Curves
Surfaces