Неявная кривая — это плоская кривая, определённая уравнением в неявном виде, связывающим две координатные переменные, обычно обозначаемые x и y. Например, единичная окружность задаётся уравнением . В общем случае любая неявная кривая задаётся уравнением вида
для некоторой функции F от двух переменных. Следовательно, неявная функция может рассматриваться как множество нулей функции от двух переменных. «Неявная» означает, что равенство не выражает ни решение x от переменной y, ни наоборот.
Если функция является многочленом от двух переменных, соответствующая кривая называется алгебраической и для неё есть специфичные методы изучения.
Плоская кривая может быть представлена в декартовых координатах (координатах x, y) любым из трёх методов, одним из которых является уравнение в неявном виде, приведённое выше. Другой способ - описание графика функции равенством , в котором явно представлена функция - называется явным представлением. Третьим важным способом описания кривой является параметрическое описание, где координаты x и y точек кривой представлены двумя функциями x(t), y(t), обе в форме явного представления и зависящие от общего параметра
В первых четырёх примерах представлены алгебраические кривые, однако последняя кривая таковой не является. Первые три кривые являются простым параметрическим представлением, в отличие от четвёртого и пятого примеров. Пятый пример показывает возможность сложной геометрической структуры неявной кривой.
Теорема о неявной функции описывает условия, при которых равенство может быть решено неявно по x и/или по y, т. е. при условиях, при которых можно правомерно записать или . Эта теорема является ключевым фактором для вычисления важных геометрических свойств кривой — касательных, нормалей и кривизны. На практике неявные кривые имеют существенный изъян — их визуальное представление нередко затруднительно. Однако существуют компьютерные программы, позволяющие нарисовать неявную кривую.
Неявная кривая с уравнением может рассматриваться как множество уровня со значением 0 для поверхности (см. третий рисунок).
В общем случае для неявных кривых не подходит тест на функцию с помощью вертикальной прямой (что означает, что некоторым значениям x соответствуют более одного значения y), а потому кривая не является графиком функции. Однако теорема о неявной функции имеет условие, при котором неявная кривая локально задаётся графиком функции (в частности, кривая не должна самопересекаться). Если определяющие соотношения достаточно гладкие в таких областях, неявные кривые имеют хорошо определённые наклоны, касательные прямые, нормальные вектора и кривизны.
Есть несколько возможных путей вычисления этих величин для неявной кривой. Одним из методов является использование неявного дифференцирования для вычисления производной y по x. Кроме того, для кривой, заданной уравнением в неявном виде , можно выразить эти формулы напрямую в терминах частных производных функции . Ниже используются следующие обозначения: частные производные (производная по x), , (для второй производной по x), (для смешанной второй частной производной),
Существенным недостатком неявной кривой является отсутствие простой возможности вычислить отдельную точку, что важно для визуализации кривой (см. следующий раздел).
Неявные представления позволяют вычисление точек пересечения — если одна кривая представлена неявно, а другая представлена параметрически, для вычисления точек пересечения нужна лишь простая (одномерная) итерация Ньютона, в отличие от случаев неявная-неявная и параметрическая-параметрическая (см. Пересечение).
Неявное представление даёт возможность разделить точки вне кривой по знаку . Это может быть полезно, например, при использовании методов ложного положения[англ.] вместо итерации Ньютона.
Легко создать кривые, которые геометрически почти подобны заданной неявной кривой путём просто добавления маленького числа: (см. раздел Гладкая аппроксимация).
Гладкая аппроксимация выпуклого многоугольника может быть получена следующим образом: пусть будет уравнениями прямых, содержащих рёбра многоугольника, при этом внутренние точки многоугольника дают функциям положительные значения. Тогда подмножество неявных кривых
с подходящим маленьким параметром является гладкой (дифференцируемой) аппроксимацией многоугольника.
Например, кривые
для
содержат гладкие аппроксимации многоугольника с 5 рёбрами (см. рисунок).
В САПР используются неявные кривые для создания соединения кривых[2][3], специальный вид кривых, позволяющих гладкое соединение одной кривой с другой. Например,
образует соединяющие кривые между двумя окружностями
Метод гарантирует непрерывность касательных и кривизны в точках касания (см. рисунок). Две прямых
определяют точки контакта с окружностями. Параметр на рисунке равен .
Для визуализации неявной кривой обычно определяют многоугольник на кривой и рисуют его. Для параметрической кривой эта задача проста — просто вычисляются точки, соответствующие последовательности параметрических значений. Для неявной кривой нужно решить две подзадачи:
определение первой точки на кривой вблизи заданной стартовой точки,
определение точки на кривой, начиная с известной точки на кривой.
В обоих случаях естественно положить . На практике это предположение нарушается в единственной изолированной точке.
Для решения обоих задач, упомянутых выше, требуется программа (которую будем называть ), которая по заданной точке вблизи неявной кривой находит точку , лежащую на этой кривой:
(P1) Полагаем
(P2)повторяем
( шаг Ньютона для функции ) (P3)до тех пор, пока расстояние между точками не станет достаточно малым.
(P4) является точкой на кривой вблизи стартовой точки .
Чтобы создать многоугольник почти такой же, как и кривая, выбирают длину шага и
(T1) выбирают подходящую начальную точку вблизи кривой
(T2) определяют точку кривой с помощью программы
(T3) определяют касательную (см. выше), выбирают стартовую точку на касательной, отстоящую на длину шага (см. рисунок) и находят вторую точку на кривой с помощью программы .
Поскольку алгоритм находит точки последовательно вдоль кривой, он называется алгоритмом трассировки.
Алгоритм отслеживает только связные части кривой. Если неявная кривая состоит из нескольких частей, алгоритм следует возобновлять несколько раз с разных подходящих исходных точек.
Если неявная кривая состоит из нескольких или даже неизвестных частей, может оказаться более подходящим использование алгоритма растеризации. Вместо точного следования вдоль кривой растровый алгоритм покрывает всю кривую таким числом точек, что они сливаются вместе и выглядят словно кривая.
(R1) Образуем сеть точек (растр) в интересующей нас области плоскости x-y.
(R2) Для каждой точки растра выполняем алгоритм со стартовой точкой P и отмечаем результат.
Если сеть достаточно плотна, результат аппроксимирует связные части неявной кривой. Если в дальнейшем будет нужен многоугольник на кривой, можно прогнать алгоритм трассировки на нужной части.
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.