Русская Википедия:Неявная поверхность
Неявная поверхность — это поверхность в евклидовом пространстве, определённая уравнением
- <math>F(x,y,z)=0.</math>
Неявная поверхность является множеством нулей функции трёх переменных. Термин неявная здесь означает, что уравнение не решено относительно любой из переменных, x, y или z.
График функции обычно описывается уравнением <math>z=f(x,y)</math> и такое представление называется явным. Третьим важным способом описания поверхности является параметрическое представление — <math>(x(s,t),y(s,t), z(s,t))</math>, где координаты x, y и z точек поверхности представлены тремя функциями <math>x(s,t)\, , y(s,t)\, , z(s,t)</math>, зависящими от общих параметров <math>s,t</math>. Обычно изменение представления поверхности осуществляется просто только в случае, если задано явное представление <math>z=f(x,y)</math>. Тогда другими двумя представлениями будут <math>z-f(x,y)=0</math> (неявное) и <math> (s,t,f(s,t)) </math> (параметрическое).
Примеры:
- плоскость <math> x+2y-3z+1=0.</math>
- сфера <math> x^2+y^2+z^2-4=0.</math>
- тор <math>(x^2+y^2+z^2+R^2-a^2)^2-4R^2(x^2+y^2)=0. </math>
- Поверхность рода 2: <math>2y(y^2-3x^2)(1-z^2)+(x^2+y^2)^2-(9z^2-1)(1-z^2)=0</math> (см. рисунок).
- Поверхность вращения <math> x^2+y^2-(\ln(z+3.2))^2-0{,}02=0</math> (см. рисунок рюмка).
Для плоскости, сферы и тора имеется простое параметрическое представление, что неверно для четвёртого примера.
Теорема о неявной функции описывает условия, при которых уравнение <math>F(x,y,z)=0</math> может быть решено (по меньшей мере неявно) относительно x, y или z. Но в общем случае явного решения может и не существовать. Эта теорема является ключевой для вычисления важных геометрических свойств поверхности, таких как касательные плоскости, нормали к поверхности, кривизны (см. ниже). Однако эти поверхности имеют существенный недостаток — их визуализация затруднительна.
Если <math>F(x,y,z)</math> является многочленом от x, y и z, поверхность называется алгебраической. Пример 5 не является алгебраической поверхностью.
Несмотря на трудность визуализации неявные поверхности дают относительно простые техники для их теоретической генерации (например, Шаблон:Не переведено 5) и поверхности, интересные для практических целей (см. ниже).
Формулы
При следующих соглашениях неявная поверхность представлена уравнением <math>F(x,y,z)=0</math>, где функция <math>F</math> удовлетворяет необходимым условиям дифференцируемости. Ниже будем обозначать частные производные функции <math>F</math> как <math>F_x,F_y,F_z,F_{xx},\ldots</math>.
Касательная плоскость и нормальный вектор
Точка поверхности <math>(x_0, y_0,z_0)</math> называется регулярной тогда и только тогда, когда градиент функции <math>F</math> в точке <math>(x_0, y_0,z_0)</math> не равен нулевому вектору <math>(0, 0, 0)</math>, что означает
- <math> (F_x(x_0,y_0,z_0),F_y(x_0,y_0,z_0),F_z(x_0,y_0,z_0))\ne (0,0,0)</math>.
Если точка поверхности <math>(x_0, y_0,z_0)</math> не регулярна, она называется особой (употребляется также термин сингулярная точка).
Уравнение касательной плоскости в регулярной точке <math>(x_0,y_0,z_0)</math>
- <math>F_x(x_0,y_0,z_0)(x-x_0)+F_y(x_0,y_0,z_0)(y-y_0)+F_z(x_0,y_0,z_0)(z-z_0)=0,</math>
а уравнение нормального вектора
- <math> \mathbf n(x_0,y_0,z_0)=(F_x(x_0,y_0,z_0),F_y(x_0,y_0,z_0),F_z(x_0,y_0,z_0))^T.</math>
Нормальная кривизна
Чтобы сделать формулы проще, аргументы <math>(x_0,y_0,z_0)</math> в формуле ниже опущены. Тогда
- <math>\kappa_n = \frac{\mathbf v^\top H_F\mathbf v}{\|\operatorname{grad} F\|}</math>
является нормальной кривизной поверхности в регулярной точке для единичного касательного вектора направления <math> \mathbf v</math>. <math>H_F</math> является гессианом функции <math>F</math> (матрицей вторых производных).
Доказательство этой формулы опирается (как и в случае неявной кривой) на теорему о неявной функции и формулу нормальной кривизны параметрической поверхности.
Приложения неявных поверхностей
Как и в случае неявных кривых легкой задачей является создание неявных поверхностей желаемой формы с помощью алгебраических операций (сложение, умножение) простых примитивов.
Эквипотенциальная поверхность двух точечных зарядов
Точечный заряд <math>q_i</math> в точке <math>\mathbf p_i=(x_i,y_i,z_i)</math> образует потенциал в точке <math> \mathbf p=(x,y,z)</math> (физические константы опущены)
- <math>F_i(x,y,z)=\frac{q_i}{\|\mathbf p -\mathbf p_i\|}.</math>
Эквипотенциальная поверхность для значения потенциала <math>c</math> является неявной поверхностью <math> F_i(x,y,z)-c=0 </math>, что есть сфера с центром в точке <math>\mathbf p_i</math>.
Потенциал четырёх точечных зарядов вычисляется пo формуле
- <math>F(x,y,z)=\frac{q_1}{\|\mathbf p -\mathbf p_1\|}+ \frac{q_2}{\|\mathbf p -\mathbf p_2\|}+ \frac{q_3}{\|\mathbf p -\mathbf p_3\|}+\frac{q_4}{\|\mathbf p -\mathbf p_4\|}.</math>
На рисунке четыре заряда имеют величину 1 и расположены в точках <math>(\pm 1,\pm 1,0)</math>. Показанная поверхность является эквипотенциальной поверхностью (неявной поверхностью) <math>F(x,y,z)-2{,}8=0</math>.
Поверхность постоянного произведения расстояний
Овал Кассини можно определить как множество точек, для которых произведение расстояний от двух заданных точек постоянно (в отличие от эллипса, для которого постоянна сумма расстояний). Аналогично неявные поверхности могут быть определены как постоянное произведение расстояний от некоторых фиксированных точек.
На рисунке метаморфоз верхняя левая поверхность образуется по такому правилу. Эта поверхность является поверхностью уровня функции <math>F(x,y,z)-1{,}1=0</math>, где
- <math>
\begin{align} F(x,y,z) = {} & \Big( \sqrt{(x-1)^2+y^2+z^2}\cdot \sqrt{(x+1)^2+y^2+z^2} \\ & \qquad \cdot \sqrt{x^2+(y-1)^2+z^2}\cdot\sqrt{x^2+(y+1)^2+z^2} \Big) \end{align} </math>
Метаморфозы неявных поверхностей
Другой простой метод создания новых неявных поверхностей называется метаморфозом неявных поверхностей:
Для двух неявных поверхностей <math>F_1(x,y,z)=0, F_2(x,y,z)=0</math> (на рисунке это поверхность постоянного произведения расстояний и тор) определяются новые поверхности с использованием параметра <math> \mu \in [0,1]</math>:
- <math>F(x,y,z)=\mu F_1(x,y,z)+(1-\mu)F_2(x,y,z)=0</math>
На рисунке представлены поверхности с величинами параметра <math>\mu=0, \, 0{,}33, \, 0{,}66, \, 1</math> .
Гладкая аппроксимация некоторых неявных поверхностей
<math>\Pi</math>-поверхностиШаблон:Sfn могут быть использованы для аппроксимирования любого гладкого и ограниченного объекта в <math>R^3</math>, поверхность которого определяется многочленом, который равен произведению других многочленов. Другими словами, мы можем создать любой гладкий объект с единой алгебраической поверхностью. Обозначим многочлены как <math>f_i\in\mathbb{R}[x_1,\ldots,x_n](i=1,\ldots,k)</math>. Тогда аппроксимирующий объект определяется многочленом
- <math>F(x,y,z) = \prod_i f_i(x,y,z) - r</math>Шаблон:Sfn
где <math>r\in\mathbb{R}</math> определяет смешивающий параметр, контролирующий ошибку аппроксимации.
Аналогично гладкой аппроксимации неявных кривых уравнение
- <math>F(x,y,z)=F_1(x,y,z)\cdot F_2(x,y,z)\cdot F_3(x,y,z) -r= 0</math>
представляет для подходящих параметров <math>c</math> гладкие аппроксимации трёх пересекающихся торов уравнениями
- <math>
\begin{align} F_1=(x^2+y^2+z^2+R^2-a^2)^2-4R^2(x^2+y^2)=0, \\[3pt] F_2=(x^2+y^2+z^2+R^2-a^2)^2-4R^2(x^2+z^2)=0, \\[3pt] F_3=(x^2+y^2+z^2+R^2-a^2)^2-4R^2(y^2+z^2)=0. \end{align} </math>
(На рисунке параметры равны <math> R=1, \, a=0{,}2, \, r=0{,}01.</math>)
Визуализация неявных поверхностей
Есть несколько алгоритмов рендеринга неявных поверхностейШаблон:Sfn, включая алгоритм «marching cubes»Шаблон:Sfn. Фактически, имеются две идеи визуализации неявных поверхностей — одна создаёт сеть многоугольников, которые затем отрисовываются (см. Шаблон:Не переведено 5), а вторая опирается на трассировку лучей, когда определяются точки пересечения лучей с поверхностьюШаблон:Sfn.
См. также
Примечания
Литература
- Шаблон:Статья (International Conference in Central Europe on Computer Graphics, Visualization and Computer Vision)
Ссылки
- Sultanow: Implizite Flächen Шаблон:Wayback
- Hartmann: Geometry and Algorithms for COMPUTER AIDED DESIGN Шаблон:Wayback
- GEOMVIEW Шаблон:Wayback
- K3Dsurf: 3d surface generator Шаблон:Wayback
- SURF: Visualisierung algebraischer Flächen Шаблон:Wayback
- ↑ POV-Ray (Шаблон:Lang-en) использует обратную трассировку лучей для создания трехмерных фотореалистических изображений. Сцена в POV-Ray описывается на SDL (Шаблон:Lang-en) — интерпретируемом языке программирования с С-подобным синтаксисом. При помощью SDL пользователь задает положение камеры, источников света, размещение объектов и их свойства, атмосферные эффекты и т. п. См статью Научные иллюстрации в POV-Ray Шаблон:Wayback