Суперформула
Суперформула и обобщением суперэллипса является была предложена Йоханом Гиелисом около 2000 года. [1] Гилис предположил, что эту формулу можно использовать для описания многих сложных форм и кривых, встречающихся в природе. Гилис подал заявку на патент, связанный с синтезом шаблонов, созданных с помощью суперформулы, срок действия которой истек 10 мая 2020 г. [2]
В полярных координатах , с радиус и угол, суперформула:
Выбирая разные значения параметров и можно создавать разные формы.
Формула была получена путем обобщения суперэллипса, названного и популяризированного Питом Хейном , датским математиком .
2D-графики
[ редактировать ]В следующих примерах значения, показанные над каждым рисунком, должны быть m , n 1 , n 2 и n 3 .
Программа 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
Расширение до более высоких измерений
[ редактировать ]Формулу можно расширить до 3, 4 или n измерений с помощью сферического произведения суперформул. Например, параметрическая 3D -поверхность получается перемножением двух суперформул r 1 и r 2 . Координаты определяются соотношениями:
где ( широта ) варьируется между - π /2 и π /2, а θ ( долгота ) между - π и π .
3D сюжет
[ редактировать ]3D-суперформула: a = b = 1; m , n 1 , n 2 и n 3 показаны на рисунках.
Программа GNU Octave для создания этих цифр:
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;
Обобщение
[ редактировать ]Суперформулу можно обобщить, допустив различные m параметров в двух членах суперформулы. Заменив первый параметр с y и вторым параметром с г : [3]
Это позволяет создавать вращательно-асимметричные и вложенные структуры. В следующих примерах а, б, и 1:
Ссылки
[ редактировать ]- ^ Гиелис, Йохан (2003), «Общее геометрическое преобразование, объединяющее широкий спектр естественных и абстрактных форм» , American Journal of Botany , 90 (3): 333–338, doi : 10.3732/ajb.90.3.333 , ISSN 0002 -9122 , PMID 21659124
- ^ Патент EP 1177529 , Гилис, Йохан, «Способ и устройство для синтеза рисунков», выдан 2 февраля 2005 г.
- ^ * Штёр, Уве (2004 г.), SuperformulaU (PDF) , заархивировано из оригинала (PDF) 8 декабря 2017 г.
Внешние ссылки
[ редактировать ]
- Некоторые эксперименты по аппроксимации кривых Гилиса методами моделирования отжига и роя частиц глобальной оптимизации
- Аппроксимация кривых Чакона-Гелиса методом наименьших квадратов с помощью метода оптимизации роя частиц
- 2D-плоттер Superformula и генератор SVG
- Интерактивный пример с использованием JSXGraph
- SuperShaper: интерактивный 3D-генератор SuperShape с открытым исходным кодом и ускорением OpenCL с визуализацией на основе шейдеров (OpenGL3).