Пари для простаков
Что вы будете делать, если однажды проснетесь и обнаружите, что ни Corel, ни FreeHand, ни даже Illustrator не могут нарисовать окружность? Квадраты и треугольники — пожалуйста, а вот окружность никак. Представили? Так вот, можете считать, что вы проснулись. Ни одна из этих программ действительно не умеет рисовать окружность…
Брр, что за бред…
Действительно, с каких это пор в Illustrator’е стало невозможно делать такие простые вещи? Вы готовы поспорить со мной? Что ж, по рукам.
Итак, является ли окружность, построенная векторным редактором, математически правильной (или, чтобы быть точнее в формулировках, все ли точки окружности равноудалены от ее центра)? Давайте проверим.
Будем исходить из того, что прямые линии (вернее отрезки) в векторных программах строятся точно. Тогда «правильность» окружности произвольного диаметра D можно проверить отрезком длиной D, центр которого совпадает с центром окружности. Если окружность правильная, то, как бы мы ни вращали отрезок, его крайние точки всегда будут лежать на окружности. Согласны? Теперь посмотрите на рис. 1. Красная линия — это окружность, синяя — ее диаметры. В точках А и B все так, как и должно быть, — конец отрезка совпадает с линией окружности. А вот в точке C… Да, в этой точке отрезок чуть-чуть «не дотягивает» до окружности. Если не верите, можете проверить это в любом векторном пакете.
В чем же дело?
Как известно, прелесть векторных кривых заключается в том, что компьютеру нет необходимости запоминать каждую точку кривой, а достаточно знать координаты ее начала, конца и математическую формулу, которая ее описывает. В современных векторных программах, в качестве таких математических формул используются кривые третьего порядка (точнее, их разновидность, называемая кривыми Безье):
f (t) = a3t3 + a2t2 + a1t + a0
Таким образом, через две точки в том же Illustrator’е можно провести бесчисленное множество линий, но все они будут кривыми третьего порядка. Аппроксимировать такими кривыми окружность можно с очень большой степенью точности (как видно из рис. 1, Illustrator это делает с точностью 0,026%), а вот совсем без «погрешностей» — невозможно.
Если кого-то вдруг заинтересует более подробная информация на эту тему, ее можно найти в следующих изданиях:
-
Michael Goldapp. Approximation of circular arcs by cubic polynomials. Computer Aided Geometric Design (№8 1991 pp. 227-238);
-
Tor Dokken and Morten Daehlen. Good Approximations of circles by curvature-continuous Bezier curves. Computer Aided Geometric Design (№7 1990 pp. 33-41).
Неужели это нужно знать?
Скорее нет, чем да. Хотя, с другой стороны, возможно, именно знание подобных «мелочей» и является основным отличием профессионала от любителя.
В любом случае, теперь у вас есть беспроигрышный вариант для заключения выгодного пари с коллегами. Лучшего пари для простаков…
КомпьюАрт 7'2000