Суперквадрики
Суперквадрики — семейство геометрических поверхностей, определяемых уравнением эллипсоида и других поверхностей второго порядка, где показатели степени 2 заменены произвольным числом. Их можно считать трёхмерными аналогами кривых Ламе (суперэллипсов).
Суперквадрики включают множество поверхностей, сходных по форме с кубом, октаэдром, цилиндром и тором со скруглёнными или острыми углами. Из за их многообразия и относительной простоты являются популярным инструментом геометрического моделирования, включая компьютерную графику.
Некоторые авторы, например Алан Барр, включают в число суперквадрик также суперэллипсоиды и супертороиды[1][2], однако настоящие супертороиды не удовлетворяют данному выше определению; с другой стороны, некоторые суперквадрики являются суперэллипсоидами, хотя ни одно из этих семейств не включает другое.
Формулы
Неявные уравнения
В общем виде суперквадрики описываются формулой
где r, s, t — положительные действительные числа, определяющие свойства суперквадрики.
Например, если r = s = and t то в зависимости от их значения получаются следующие геометрические формы:
- r = s = t < 1: октаэдр с вогнутыми гранями и острыми рёбрами и вершинами.
- r = s = t = 1: правильный октаэдр.
- 1 < r = s = t < 2: октаэдр с выпуклыми гранями и скруглёнными рёбрами и вершинами.
- r = s = t = 2: сфера.
- r = s = t > 2: куб со скруглёнными рёбрами и вершинами.
- r = s = t = ∞: куб.
Более разнообразные формы получаются при независимом изменении параметров. Например, при r=s=2 и t=4 получается фигура вращения, похожая на эллипсоид с плоскими концами. Это частный случай суперэллипсоида, которые получаются из квадрик при r = s.
Если показатели степени могут быть отрицательными, то разнообразие поверхностей ещё более возрастает. Эти формы иногда называют «супергиперболоидами».
Канонические суперквадрики занимают пространство внутри куба со значениями каждой из координат от −1 to +1. В общем виде суперквадрика является результатом масштабирования канонической суперквадрики по каждой из трёх координатных осей. В общем виде уравнение имеет вид
Параметрическое описание
Параметрическое описание в координатах u (долгота) и v (широта) задаётся формулами
где с и s — вспомогательные функции:
и
Plotting code
Математический пакет GNU Octave генерирует суперквадрики следующим скриптом:
function retval=superquadric(epsilon,a)
n=50;
etamax=pi/2;
etamin=-pi/2;
wmax=pi;
wmin=-pi;
deta=(etamax-etamin)/n;
dw=(wmax-wmin)/n;
k=0;
l=0;
[i,j] = meshgrid(1:n+1,1:n+1)
eta = etamin + (i-1) * deta;
w = wmin + (j-1) * dw;
x = a(1) .* sign(cos(eta)) .* abs(cos(eta)).^epsilon(1) .* sign(cos(w)) .* abs(cos(w)).^epsilon(1);
y = a(2) .* sign(cos(eta)) .* abs(cos(eta)).^epsilon(2) .* sign(sin(w)) .* abs(sin(w)).^epsilon(2);
z = a(3) .* sign(sin(eta)) .* abs(sin(eta)).^epsilon(3);
mesh(x,y,z);
endfunction;
Примечания
- Barr, A.H. (January 1981), Superquadrics and Angle-Preserving Transformations. IEEE_CGA vol. 1 no. 1, pp. 11-23
- Barr, A.H. (1992), Rigid Physically Based Superquadrics. Chapter III.8 of Graphics Gems III, edited by D. Kirk, pp. 137—159
См. также
Ссылки
- Bibliography: SuperQuadric Representations
- Superquadric Tensor Glyphs Архивная копия от 4 февраля 2012 на Wayback Machine
- SuperQuadric Ellipsoids and Toroids, OpenGL Lighting, and Timing
- Superquadrics by Robert Kragler, The Wolfram Demonstrations Project.
- Superquadrics in Python
- Jaklič, A., Leonardis, A., Solina, F., Segmentation and Recovery of Superquadrics. Kluwer Academic Publishers, Dordrecht, 2000.