Суперквадрики

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Примеры суперквадриков

Суперквадрики — семейство геометрических поверхностей, определяемых уравнением эллипсоида и других поверхностей второго порядка, где показатели степени 2 заменены произвольным числом. Их можно считать трёхмерными аналогами кривых Ламе (суперэллипсов).

Суперквадрики включают множество поверхностей, сходных по форме с кубом, октаэдром, цилиндром и тором со скруглёнными или острыми углами. Из за их многообразия и относительной простоты являются популярным инструментом геометрического моделирования, включая компьютерную графику.

Некоторые авторы, например Алан Барр (англ.)русск., включают в число суперквадрик также суперэллипсоиды и супертороиды[1][2], однако настоящие супертороиды не удовлетворяют данному выше определению; с другой стороны, некоторые суперквадрики являются супержллипсоидами, хотя ни одно из этих семейств не включает другое.

Формулы[править | править вики-текст]

Неявные уравнения[править | править вики-текст]

В общем виде суперквадрики описываются формулой

 \left|x\right|^r + \left|y\right|^s + \left|z\right|^t =1,

где 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. В общем виде суперквадрика является результатом масштабирования канонической суперквадрики по каждой из трёх координатных осей. В общем виде уравнение имеет вид

 \left|\frac{x}{A}\right|^r + \left|\frac{y}{B}\right|^s + \left|\frac{z}{C}\right|^t \leq 1

Параметрическое описание[править | править вики-текст]

Параметрическое описание в координатах u (долгота) и v (широта) задаётся формулами

\begin{align}
 x(u,v) &{}= A c\left(v,\frac{2}{r}\right) c\left(u,\frac{2}{r}\right) \\
 y(u,v) &{}= B c\left(v,\frac{2}{s}\right) s\left(u,\frac{2}{s}\right) \\
 z(u,v) &{}= C s\left(v,\frac{2}{t}\right) \\
 & -\frac{\pi}{2} \le v \le \frac{\pi}{2}, \quad -\pi \le u < \pi ,
\end{align}

где с и s — вспомогательные функции:

\begin{align}
 c(\omega,m) &{}= \sgn(\cos \omega) |\cos \omega|^m \\
 s(\omega,m) &{}= \sgn(\sin \omega) |\sin \omega|^m
\end{align}

и

 \sgn(x) = \begin{cases}
 -1, & x < 0 \\
  0, & x = 0 \\
 +1, & x > 0 .
\end{cases}


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;


Примечания[править | править вики-текст]

  1. Barr, A.H. (January 1981), Superquadrics and Angle-Preserving Transformations. IEEE_CGA vol. 1 no. 1, pp. 11-23
  2. Barr, A.H. (1992), Rigid Physically Based Superquadrics. Chapter III.8 of Graphics Gems III, edited by D. Kirk, pp. 137—159

See also[править | править вики-текст]

Ссылки[править | править вики-текст]