Неявная кривая

Овалы Кассини:
(1) a=1,1, c=1 (сверху),
(2) a=c=1 (в середине),
(3) a=1, c=1,05 (снизу)
Неявная кривая
Неявная кривая как множества уровня поверхности

Неявная кривая — это плоская кривая, определённая уравнением в неявном виде, связывающим две координатные переменные, обычно обозначаемые x и y. Например, единичная окружность задаётся уравнением . В общем случае любая неявная кривая задаётся уравнением вида

для некоторой функции F от двух переменных. Следовательно, неявная функция может рассматриваться как множество нулей функции от двух переменных. «Неявная» означает, что равенство не выражает ни решение x от переменной y, ни наоборот.

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

Плоская кривая может быть представлена в декартовых координатах (координатах x, y) любым из трёх методов, одним из которых является уравнение в неявном виде, приведённое выше. Другой способ - описание графика функции равенством , в котором явно представлена функция - называется явным представлением. Третьим важным способом описания кривой является параметрическое описание, где координаты x и y точек кривой представлены двумя функциями x(t), y(t), обе в форме явного представления и зависящие от общего параметра

Примеры неявных кривых:

  1. прямая:
  2. окружность:
  3. Полукубическая парабола:
  4. Овалы Кассини (см. рисунок),
  5. (см. рисунок).

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

Теорема о неявной функции описывает условия, при которых равенство может быть решено неявно по x и/или по y, т. е. при условиях, при которых можно правомерно записать или . Эта теорема является ключевым фактором для вычисления важных геометрических свойств кривой — касательных, нормалей и кривизны. На практике неявные кривые имеют существенный изъян — их визуальное представление нередко затруднительно. Однако существуют компьютерные программы, позволяющие нарисовать неявную кривую.

Неявная кривая с уравнением может рассматриваться как множество уровня со значением 0 для поверхности (см. третий рисунок).

Наклон и кривизна

[править | править код]

В общем случае для неявных кривых не подходит тест на функцию с помощью вертикальной прямой (что означает, что некоторым значениям x соответствуют более одного значения y), а потому кривая не является графиком функции. Однако теорема о неявной функции имеет условие, при котором неявная кривая локально задаётся графиком функции (в частности, кривая не должна самопересекаться). Если определяющие соотношения достаточно гладкие в таких областях, неявные кривые имеют хорошо определённые наклоны, касательные прямые, нормальные вектора и кривизны.

Есть несколько возможных путей вычисления этих величин для неявной кривой. Одним из методов является использование неявного дифференцирования для вычисления производной y по x. Кроме того, для кривой, заданной уравнением в неявном виде , можно выразить эти формулы напрямую в терминах частных производных функции . Ниже используются следующие обозначения: частные производные (производная по x), , (для второй производной по x), (для смешанной второй частной производной),

Касательный и нормальный вектор

[править | править код]

Точка кривой называется регулярной, если первые частные производные и не равны нулю одновременно.

Уравнение касательной прямой в регулярной точке выглядит следующим образом:

так что наклон касательной прямой, а следовательно и наклон кривой в этой точке равен

Если в точке выполняется условие , кривая в этой точке вертикальна.

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

Нормальный вектор к кривой в точке задаётся равенством

(здесь вектор записан в виде строки).

Для читаемости формул аргументы опущены. Кривизна в регулярной точке задаётся формулой

[1].

Вывод формул

[править | править код]

Теорема о неявной функции гарантирует в окрестности точки существование функции , такой что .

Согласно формуле сложной производной производные функции равны

и

(где аргументы в правой части второй формулы опущены для простоты чтения).

Если вставить производные функции в формулы касательной прямой и кривизны графика, получаем явное равенство

(касательная прямая)
(кривизна).

Преимущества и недостатки неявных кривых

[править | править код]

Недостатки

[править | править код]

Существенным недостатком неявной кривой является отсутствие простой возможности вычислить отдельную точку, что важно для визуализации кривой (см. следующий раздел).

Преимущества

[править | править код]
  1. Неявные представления позволяют вычисление точек пересечения — если одна кривая представлена неявно, а другая представлена параметрически, для вычисления точек пересечения нужна лишь простая (одномерная) итерация Ньютона, в отличие от случаев неявная-неявная и параметрическая-параметрическая (см. Пересечение).
  2. Неявное представление даёт возможность разделить точки вне кривой по знаку . Это может быть полезно, например, при использовании методов ложного положения[англ.] вместо итерации Ньютона.
  3. Легко создать кривые, которые геометрически почти подобны заданной неявной кривой путём просто добавления маленького числа: (см. раздел Гладкая аппроксимация).

Использование неявных кривых

[править | править код]
Гладкая аппроксимация выпуклого многоугольника

В математике неявные кривые в виде алгебраических кривых играют важную роль.

Кроме того, неявные кривые используются для создания кривых желаемых геометрических форм. Вот два примера.

Гладкие аппроксимации

[править | править код]

Выпуклые многоугольники

[править | править код]

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

с подходящим маленьким параметром является гладкой (дифференцируемой) аппроксимацией многоугольника. Например, кривые

для
Гладкая аппроксимация 1)половины круга, 2) пересечения двух кругов

содержат гладкие аппроксимации многоугольника с 5 рёбрами (см. рисунок).

Пары прямых

[править | править код]

В случае двух прямых

получаем

пучок параллельных прямых, если заданные прямые параллельны
пучок гипербол, которые имеют заданные кривые в качестве асимптот.

Например, произведение координатных переменных даёт пучок гипербол , для которых оси координат являются асимптотами.

Если использовать другие простые неявные кривые, отличные от прямых (окружности, параболы,...) получим широкий ряд новых интересных кривых. Например,

(произведение формулы окружности и формулы прямой – оси y) даёт гладкую аппроксимацию полукруга (см. рисунок),

(произведение формул двух окружностей) даёт гладкую аппроксимацию двух окружностей (см. рисунок).

Смешение кривых

[править | править код]
Смешивающие кривые (красные) двух окружностей

В САПР используются неявные кривые для создания соединения кривых[2][3], специальный вид кривых, позволяющих гладкое соединение одной кривой с другой. Например,

образует соединяющие кривые между двумя окружностями

Метод гарантирует непрерывность касательных и кривизны в точках касания (см. рисунок). Две прямых

определяют точки контакта с окружностями. Параметр на рисунке равен .

Изолинии двух точечных зарядов

[править | править код]
Изолинии двух точечных зарядов в синих точках

Изолинии двух равных точечных зарядов в точках можно представить равенством

Кривые похожи на овалы Кассини, но таковыми не являются.

Визуализация неявной кривой

[править | править код]

Для визуализации неявной кривой обычно определяют многоугольник на кривой и рисуют его. Для параметрической кривой эта задача проста — просто вычисляются точки, соответствующие последовательности параметрических значений. Для неявной кривой нужно решить две подзадачи:

  1. определение первой точки на кривой вблизи заданной стартовой точки,
  2. определение точки на кривой, начиная с известной точки на кривой.

В обоих случаях естественно положить . На практике это предположение нарушается в единственной изолированной точке.

Алгоритм точки

[править | править код]

Для решения обоих задач, упомянутых выше, требуется программа (которую будем называть ), которая по заданной точке вблизи неявной кривой находит точку , лежащую на этой кривой:

(P1) Полагаем
(P2) повторяем
( шаг Ньютона для функции ) (P3) до тех пор, пока расстояние между точками не станет достаточно малым.
(P4) является точкой на кривой вблизи стартовой точки .

Алгоритм трассировки

[править | править код]
для алгоритма трассировки: стартовые точки показаны зелёным цветом

Чтобы создать многоугольник почти такой же, как и кривая, выбирают длину шага и

(T1) выбирают подходящую начальную точку вблизи кривой
(T2) определяют точку кривой с помощью программы
(T3) определяют касательную (см. выше), выбирают стартовую точку на касательной, отстоящую на длину шага (см. рисунок) и находят вторую точку на кривой с помощью программы .

Поскольку алгоритм находит точки последовательно вдоль кривой, он называется алгоритмом трассировки.

Алгоритм отслеживает только связные части кривой. Если неявная кривая состоит из нескольких частей, алгоритм следует возобновлять несколько раз с разных подходящих исходных точек.

Пример: Иллюстрация растрового алгоритма для неявной кривой . Кривая (красная) — это кривая, которую алгоритм пытается нарисовать. Растровые точки (чёрные) используются в качестве стартовых точек для поиска ближайших точек на кривой (красные кружочки). Расстояние между растровыми точками специально сделано большим, чтобы показать индивидуальные точки кривых. Чтобы более точно отобразить кривую, следует использовать больше растровых точек [4].

Растровый алгоритм

[править | править код]

Если неявная кривая состоит из нескольких или даже неизвестных частей, может оказаться более подходящим использование алгоритма растеризации. Вместо точного следования вдоль кривой растровый алгоритм покрывает всю кривую таким числом точек, что они сливаются вместе и выглядят словно кривая.

(R1) Образуем сеть точек (растр) в интересующей нас области плоскости x-y.
(R2) Для каждой точки растра выполняем алгоритм со стартовой точкой P и отмечаем результат.

Если сеть достаточно плотна, результат аппроксимирует связные части неявной кривой. Если в дальнейшем будет нужен многоугольник на кривой, можно прогнать алгоритм трассировки на нужной части.

Неявные пространственные кривые

[править | править код]

Любая пространственная кривая, определённая двумя уравнениями

называется неявной пространственной кривой.

Точка кривой называется регулярной, если векторное произведение градиентов и не равно в этой точке:

В противном случае точка называется особой (сингулярной). Вектор является касательным вектором кривой в точке

Кривая пересечения сферы и цилиндра

Примеры:

является прямой.

является сечением сферы плоскостью, то есть окружностью.

является эллипсом (сечением цилиндра плоскостью).

является пересечением сферы и цилиндра.

Для вычисления точек кривой и визуализации неявной пространственной кривой см. статью Пересечение.

Примечания

[править | править код]
  1. Goldman, 2005, с. 632.
  2. Hoffmann, Hopcroft, 1985, с. 347-365.
  3. Hartmann, 1990, с. 500-507.
  4. Taubin, 1994.

Литература

[править | править код]
  • Gomes A., Voiculescu I., Jorge J., Wyvill B., Galbraith C. Implicit Curves and Surfaces: Mathematics, Data Structures and Algorithms. — Springer-Verlag, 2009. — ISBN 978-1-84882-405-8.
  • C.L. Bajaj, C.M. Hoffmann, R.E. Lynch. Tracing surface intersections // Comp. Aided Geom. Design. — 1988. — Вып. 5. — С. 285-307.
  • C. Hoffmann, J. Hopcroft. The potential method for blending surfaces and corners // Geometric-Modeling / G. Farin (Ed). — Philadelphia: SIAM, 1985.
  • E. Hartmann. Blending of implicit surfaces with functional splines // CAD,. — Butterworth-Heinemann, 1990. — Т. 22, вып. 8.
  • Goldman R. Curvature formulas for implicit curves and surfaces // Computer Aided Geometric Design. — 2005. — Т. 22, вып. 7. — doi:10.1016/j.cagd.2005.06.005.
  • G. Taubin. Distance Approximations for Rastering Implicit Curves // ACM Transactions on Graphics. — 1994. — Т. 13, № 1.
  • Geometry and Algorithms for COMPUTER AIDED DESIGN Архивная копия от 30 октября 2017 на Wayback Machine