Суперформула
Суперформула — узагальнений випадок рівняння плоскої кривої супереліпса (кривої Ламе), записаний у 1997 році бельгійським вченим Йоханом Джилісом (англ. Johan Gielis).
Й.Джиліс припустив, що формула може бути використана для опису багатьох складних форм і кривих, які зустрічаються в природі[1].
Зміст |
Запис рівняння [ред.]
У полярних координатах, для
радіуса і кута
, суперформула має вигляд:
![r\left(\varphi\right) =
\left[
\left|
\frac{\cos\left(\frac{m\varphi}{4}\right)}{a}
\right| ^{n_{2}}
+
\left|
\frac{\sin\left(\frac{m\varphi}{4}\right)}{b}
\right| ^{n_{3}}
\right] ^{-\frac{1}{n_{1}}}
,](http://upload.wikimedia.org/math/3/9/3/3931daba030999caee0aa68c909a61a9.png)
де
— характеризує число фрагметів, що повторюються;
,
,
— параметри, що визначають форму;
,
— габарити (величини півосей).
Графіки [ред.]
Інші приклади кривих, побудованих за супреформулою для вказаних m, n1, n2 і n3 при a = b = 1
Програмні реалізації побудови кривих [ред.]
GNU Octave [ред.]
Програма для генерування кривих на основі суперформули мовою програмування GNU Octave:
function sf2d(n,a) u=[0:.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
PHP script [ред.]
PHP-скрипт для генерування таких фігур:
<?php header("Content-type: image/png"); set_time_limit(120); $img = imagecreatetruecolor(800, 800); $black = imagecolorallocate($img, 0, 0, 0); imagefilledrectangle($img, 0, 0, 800, 800, $black); $center = 400; $PI = 2 * pi(); $a = 1; $b = 1; $m = 12; $n1 = 5; $n2 = 6; $n3 = 48; for($f = 0; $f <= $PI; $f += 0.0001) { $r= pow((pow(abs(cos($m*$f/4)/$a),$n2) + pow(abs(sin($m*$f/4)/$b), $n3)), -(1/$n1)); $x = $center + $r * cos ($f) * 100; $y = $center + $r * sin ($f) * 100; $col = imagecolorallocate($img, 255, 255, 255); imagesetpixel($img, $x, $y, $col); } print imagepng($img); imagedestroy($img); ?>
Узагальнення на більшу кількість вимірів [ред.]
Рівняння [ред.]
Є можливим розширення суперформули до 3, 4, чи n вимірів, у сферичній системі координат. Наприклад тривимірне параметричне задання поверхні отримується перемноженням двох суперформул r1 and r2. Геометричне місце точок відповідної поверхні може бути задане співвідношеннями:
де
змінюється у межах від -π/2 до π/2 (широта) і θ в діапазоні між -π та π (довгота).
Графічні побудови [ред.]
Програма у GNU Octave [ред.]
A GNU Octave 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;
Див. також [ред.]
Примітки [ред.]
- ↑ Gielis Johan A generic geometric transformation that unifies a wide range of natural and abstract shapes American Journal of Botany 90 (3): 333–338, 2003. ISSN 0002-9122
Посилання [ред.]
- Some Experiments on Fitting of Gielis Curves by Simulated Annealing and Particle Swarm Methods of Global Optimization (англ.)
- Least Squares Fitting of Chacón-Gielis Curves By the Particle Swarm Method of Optimization (англ.)
- Superformula 2D Plotter & SVG Generator (англ.)
- Interactive example using JSXGraph (англ.)
- 3D Superdupershape Explorer using Processing (англ.)
- Interactive 3D Superformula plotter using Processing (with code) (англ.)
- SuperShaper: An OpenCL accelerated 3D SuperShape generator with shader based visualisation (OpenGL3) (англ.)
,
,
— параметри, що визначають форму;
,
— габарити (величини півосей).

