# Руководство по KSEGу

## Темы:

С чего начать/Коротко обо всём
Введение
Как выделять
Как строить
Преобразования
Измерения и вычисления
Правка и привязки точек
Вид и картинки
Построения

## С чего начать/Коротко обо всём

После выполнения нижеследующего вы получите общее представление о том как пользоваться KSEGом и сможете начать играть с ним сами. Но чтобы ознакомиться со всеми возможностями вам придётся прочитать всё руководство целиком.

1. Запустите KSEG. Перед вами появляется окно с белым листом, который занимает почти все пространство окна (вокруг него панель инструментов, меню и т.п.).
2. Щёлкните правой кнопкой в середину белого листа — появится точка А.
3. При нажатой кнопке SHIFT щёлкните правой кнопкой в другое место на листе — появится точка B. Так как вы нажимали кнопку SHIFT, точка А осталась выделенной, и после этого шага у вас получились две выделенные точки.
4. Выберете опцию «Новые/Окружность по центру и точке» из меню. Вы получите окружность с центром в точке А, проходящую через точку B. Окружность появится выделенной, а точки А и B перестанут быть выделенными.
5. Выделите точку B левой кнопкой мышки (при этом окружность перестанет быть выделенной). При нажатом SHIFT щёлкните левой кнопкой по А чтобы выделить её.
6. Выберете снова «Новые/Окружность по центру и точке» из меню. Теперь должна получиться окружность через точку А и с центром в B (потому что вы выбрали точку B первой).
7. При нажатом SHIFT выберете первую окружность левым щелчком. Теперь обе окружности должны быть выделены.
8. Выберете «Новые/Точки пересечения» из меню. Появятся обе точки пересечения окружностей, обе выделенные.
9. Выберете «Новые/Прямая» из меню. Вы получите срединный перпендикуляр к отрезку АВ.
10. Теперь подвигайте точкой А, нажав на неё левой кнопкой мышки. Это даёт общее представление того что делает KSEG.

Наша цель была показать пример работы с KSEGом. Это, конечно, не самый короткий способ строить срединный перпендикуляр на KSEGе (хотя самый короткий как построение с помощью циркуля и линейки).
Наверх

## Введение

KSEG — это инструмент, который даёт возможность создавать «живые чертежи» в планиметрии, в частности, для построений с помощью циркуля и линейки. Почти каждый раз, кoгда я играю с KSEGом, я узнаю что-то новое, и это обычно приятно.

Для создания «живого чертeжа» надо начать с того, что поставить несколько точек на лист и использовать их для создания новых объектов, как, например, прямые и окружности. Далее вы можете двигать точки, с которых вы начали, и смотреть, как меняется всё построение. Это главное, что делает KSEG, но, конечно, можно делать и многое другое. Я часто использую KSEG для создания диаграмм, которые потом использую вместе с LaTeX. Например, можно печатать из KSEGа в PS-файл и потом сделать из него EPS-файл или сделать PNG-файл и использовать его с pdfLaTeXом (см. «Вид и картинки»).

Проблема с терминологией: Я использую термин «Построение» для макро-документов, написанных на KSEGе, и также для наборов геометрических объектов, которые зависят друг от друга. Обычно ясно, что именно я имею в виду, тем не менее, в этом руководстве «Построение» с заглавной буквы обозначает макро-документ, а «построение» со строчной обозначает набор геометрических объектов.

### Геометрические объекты

Точки, прямые, измерения, вычисления, геометрические места точек (ГМТ) и т.д.; всё это — «геометрические объекты». Геометрический объект может зависеть от других геометрических объектов, называемых предками. Например, если вы строите две точки и прямую между ними, то точки являются предками прямой, a прямая есть потомок точек. Когда вы двигаете свободную точку, положения всех её потомков пересчитываются. Когда вы двигаете объект, у которого есть предки, довольно сложный алгоритм решает кого из них надо двигать, чтобы получить нужную траекторию этого объекта.

Геометрический объект может «не существовать», как, например, «пересечение» окружностей, которые не пересекаются. Если окружности приблизить друг к другу, то точки снова станут существовать. Потомки «несуществующих» объектов — тоже «несуществующие» (за исключением ГМТ, см. ГМТ в «Как строить»). Например, если вы двигаете картинку, и вдруг большая часть построения исчезла из-за того, что два отрезка перестали пересекаться (в этом случае исчезнувшие объекты — это потомки точки пересечения), не волнуйтесь, они снова появятся, как только появится эта точка пересечения.
Наверх

## Как выделять

Чтобы построить новый объект, вам обычно требуется выделить набор существующих объектов. Здесь описано как это можно делать:

- Левый щелчок по пустому месту отменяет все выделения.
- Левый щелчок по объекту выделяет его, если он не был выбран, и наоборот.
- Нажмите на пустое место левой кнопкой, переведите мышку, держа кнопку нажатой, и отпустите кнопку. Это выделит все объекты, части которых попали в прямоугольник, и отменит выделение всех остальных.
- Левый щелчок по объекту при нажатом SHIFT выделяет его, если он не был выделен, и, наоборот, при этом все остальные выделенные объекты останутся.
- Нажмите на пустое место левой кнопкой при нажатом SHIFT, переведите мышку, держа кнопку нажатой, и отпустите кнопку мышки. Это добавит объекты, части которых попали в прямоугольник к уже выделенным.
- В Построении у вас есть также возможность выбрать объект, нажав на соответствующую строчку в списке справа. Здесь вы можете щёлкнуть, нажать и двигать, а также щёлкнуть при нажатом SHIFT. Заметьте, что, в отличие от других методов, так можно выбирать невидимые и несуществующие объекты.

Когда вы щёлкаете по месту, содержащему несколько объектов, всё немного сложнее (для KSEGа, но для вас всё просто). Объекты имеют три группы очерёдности: точки — первые; кривые, текст и ГМТ — вторые; круги, многоугольники и т.п. — последние. Если объект, первый в очереди, находится под мышкой, то следующий будет игнорирован. Если объекты стоят в одном месте очереди, то многократный щелчок будет менять выбор по циклу. При этом очень полезно смотреть на строчку внизу, она говорит, что случится, если щёлкнуть по этому месту.

### Выделение групп

Выделять несколько объектов очень удобно с помощью «Выделения групп». Этот способ позволяет собрать произвольный набор объектов в одну группу для того, чтобы было удобно потом выделять и отменять выделение сразу всех объектов в ней двумя щелчками мышки. Нажмите на «Правка/Выделить группы...», откроется окошко (зависящее от документа, с которым вы работаете). Окно показывает все группы, которые есть у этого документа плюс ещё встроенные группы (такие как «Все точки», «Все отрезки» и т.п.; они отмечены звёздочками).

Когда вы выделяете группу (или несколько) в списке и щёлкаете по кнопке «Выделить», выделяются все объекты в этой группе, и отменяется выделение всех остальных. Если щёлкнуть по кнопке «Выделить» при нажатом SHIFT, то объекты в этой группе добавятся к тем, что уже выделены. Нажатие кнопки «Отменить выделение» отменит выделение только объектов в группе. Если у вас выбран хотя бы один объект, то можно нажать на кнопку «Новая группа», это приведёт к созданию новой группы из выделенных объектов. Встроенные группы удалить невозможно.

Квадратик «Включая Невидимые Объекты» влияет только на встроенные группы. Если он не отмечен (а по умолчанию так), «Все точки» отмечают только видимые (не скрытые) точки, соответственно, если квадратик отмечен, то группа «Все точки» включает скрытые точки тоже. Невстроенные группы всегда выделяют все объекты, включая скрытые.

Невстроенные группы могут стать пустыми, если все объекты в них удалены. Такие группы отмечаются знаком минус, но автоматически не удаляются (потому что с помощью кнопок «назад/вперёд одну правку» эта группа может ожить). Тем не менее, пустые группы не сохраняются вместе с документом.
Наверх

## Как строить

Когда строится новый объект, он немедленно отмечается, а все остальные объекты перестают быть отмеченными. (Единственное исключение, когда вы строите точку правым щелчком при нажатом SHIFT)

### Точки

- Чтобы построить свободную точку, щёлкните правой кнопкой по свободному месту.
- Чтобы построить точку на кривой (прямой, отрезке, луче, окружности или дуге), щёлкните правой кнопкой по кривой.
- Чтобы построить точку на пересечении двух кривых, щёлкните правой кнопкой по пересечению. Можно также выделить две кривые и выбрать «Новые/Точка(и) пересечения» из меню. Если отмеченные кривые имеют две точки пересечения (или такое возможно в принципе), то этим способом будут построены обе точки, в то время как щелчок даст только одну.
- Чтобы построить середину(ы) одного или нескольких отрезков, выделите отрезки и выберете «Новые/Середина(ы)» из меню.

Есть ещё пара типов точек — концы и центры. Их удобно применять в Построениях, когда дан отрезок, но не его концы, или окружность, но не её центр. Чтобы построить концы отрезка, луча или дуги, выделите их и выберете «Новые/Концы» из меню. Чтобы построить центр окружности или дуги, выделите их и выберете «Новые/Центр» из меню.

### Отрезки

Есть единственный способ строить отрезок — выделить пару или больше точек и выбрать «Новые/Отрезок(ки)» из меню. Если выделены две точки, то будет построен один отрезок. Если выделены n > 2 точек, то будет построена замкнутая ломаная из n отрезков.

### Лучи

- Чтобы построить луч из одной точки через другую, выделите пару точек (по очереди) и выберете «Новые/Луч» из меню. Если выделены n > 2 точек, то будет построено n, также как и в случае отрезков.
- Чтобы построить биссектрису угла, выделите три точки, определяющие угол, и выберете «Новые/Биссектриса». Биссектриса всегда делит острую половину угла.

### Прямые

- Чтобы построить прямую, выделите две или больше точек и выберете «Новые/Прямая(ые)» из меню. Если выделены n > 2 точек, то будет построено n прямых.
- Чтобы построить прямую, параллельную данной через данную точку, выделите точку и прямую (отрезок или луч) и выберете «Новые/Параллельная прямая» из меню. Вы можете также выделить несколько точек и одну прямую или несколько прямых и одну точку.
- Чтобы построить перпендикуляр, выделите точку и прямую (отрезок или луч) и выберете «Новые/Перпендикуляр» из меню. Вы можете также выделить несколько точек или несколько прямых (но не обеих).

### Окружности

- Чтобы построить окружность по центру и точке, выделите центр и потом точку, через которую должна пройти окружность, и выберете «Новые/Окружность по центру и точке» из меню.
- Чтобы построить окружность по центру и радиусу, выделите центр и отрезок, равный радиусу, и выберете «Новые/Окружность по центру и радиусу» из меню.

### Дуги

Дуга может быть построена только выделением трёх точек и выбором «Новые/Дуга по трём точкам»

### ГМТ (Геометрические Места Точек)

ГМТ — это геометрический объект, который представляет траекторию другого геометрического объекта (называемого «ведомый»), когда точка (называемая «водитель») двигается вдоль кривой. Ведомый объект может быть точкой кривой или даже другим ГМТ (но в этом случае KSEG может сильно тормозить). ГМТ может существовать, даже если ведомого не существует, потому что он может появиться, когда водитель в другом положении.

Например: пусть L есть прямая и A — точка на L, пусть B есть точка, не лежащая на L, и пусть K есть прямая, проведённая через A, перпендикулярная к AB. Тогда если взять K ведомым, а A водителем, ГМТ, описываемое K, ограничено параболой, касательной к L, и с фокусом в B.

ГМТ — это бесконечный набор геометрических объектов, и KSEG не может высчитать каждый из них. Вместо этого KSEG приближает ГМТ. Вы можете изменить количество точек подсчёта для ГМТ, если дважды щёлкните по ГМТ или выделите ГМТ и выберете «Правка/Количество точек подсчёта...» из меню. Если ведомый объект это точка, то KSEG соединяет точки на ГМТ кривой и старается побыстрее сделать её гладкой и точной. В этом случае число точек подсчёта — это только верхняя граница, KSEG может ограничиться меньшим числом точек, если решит, что кривая уже достаточно хороша. Использование здесь самонастраивающегося алгоритма делает более красивые ГМТ, чем ГМТ созданные схожими программами.

### Заполненные объекты

- Чтобы построить внутренность многоугольника, выделите три или более точек и выберете «Новые/Многоугольник».
- Чтобы построить круговой сектор или сегмент, выделите дугу и выберете соответственно «Новые/Круг. сектор» или «Новые/Круг. сегмент».
- Чтобы построить круг, выделите окружность и выберете «Новые/Круг».

Наверх

## Преобразования

KSEG даёт возможность применять некоторые преобразования плоскости. Для этого надо выбрать параметры преобразования (центр, вектор, коэффициент, угол, и т.п.), выделяя и нажимая на «Преобразования/Выбор ???» из меню. После этого выделить объект и выбрать нужное преобразование из нижнего подменю «Преобразования». Теперь ещё раз, но медленно:

Выбор:

- Чтобы выбрать вектор, выделите две точки и нажмите на «Преобразования/Выбор вектора» из меню. Выберется вектор из первой выбранной точки во вторую.
- Чтобы выбрать ось симметрии, выделите прямую (луч или отрезок) и нажмите на «Преобразования/Выбор оси» из меню.
- Чтобы выбрать центр, выделите точку и нажмите на «Преобразования/Выбор центра» из меню.
- Чтобы выбрать угол, выделите три точки (измерение или вычисление) и нажмите на «Преобразования/Выбор угла» из меню.
- Чтобы выбрать коэффициент, выделите два отрезка прямой или одно измерение (или вычисление) и нажмите на «Преобразования/Выбор коэффициента» из меню.

Выбранные объекты выделяются жёлтым цветом. Если вы закончили с преобразованиями и хотите избавиться от этих жёлтых пометок (из эстетических соображений или чтобы сфотографировать экран — эти пометки не появляются, когда печатаешь), нажмите на «Преобразования/Отмена выбора» в меню.

- Чтобы произвести параллельный перенос (сдвиг), вам нужно выбрать вектор.
- Чтобы произвести осевую симметрию (отражение), вам нужно выбрать ось.
- Чтобы произвести гомотетию, вам нужно выбрать центр и коэффициент.
- Чтобы произвести поворот, вам нужно выбрать центр и угол.

Преобразования с измерениями и вычислениями как параметры дают возможность делать построения, которые невозможно сделать, пользуясь только циркулем и линейкой. С такими вещами надо быть осторожным, но это даёт кучу возможностей — например, файл coord.seg показывает, как можно заставить KSEG рисовать параметрически заданную кривую с помощью ГМТ
Наверх

## Измерения и вычисления

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

- Чтобы измерить расстояние между точкой и кривой или другой точкой, выделите нужные объекты и нажмите на «Измерения/Расстояние» в меню.
- Чтобы измерить длину отрезка, выделите отрезок и нажмите на «Измерения/Длина» в меню.
- Чтобы измерить длину окружности, выделите окружность и нажмите на «Измерения/Длина окружности» в меню.
- Чтобы измерить длину дуги, выделите дугу и нажмите на «Измерения/Длина дуги» в меню.
- Чтобы измерить радиус дуги или окружности, выделите нужный объект и нажмите на «Измерения/Радиус» в меню.
- Чтобы измерить угол определённый тремя точками, выделите три точки и нажмите на «Измерения/Угол» в меню.
- Чтобы измерить отношение длин двух отрезков, выделите их и нажмите на «Измерения/Отношение» в меню.
- Чтобы измерить наклон (т.е. тангенс угла наклона к оси Х), выделите прямую (или луч, или отрезок) и нажмите на «Измерения/Наклон» в меню.
- Чтобы измерить площадь многоугольника, круга, сектора или сегмента, выделите нужный объект и нажмите на «Измерения/Площадь» в меню. В случае многоугольника с самопересечениями результат будет равен модулю алгебраической площади (т.е. часть отмеченных регионов будет браться со знаком минус)

Вы можете собрать несколько измерений в одном вычислении. Чтобы начать вычисление, нажмите на «Измерения/Вычисление» в меню или дважды щёлкните по уже существующему измерению. При использовании меню откроется пустое вычисление, если ничего не было выделено, но если одно измерение или вычисление было выделено, то вычисление откроется с ним. Двойной щелчок откроет вычисление с тем, по чему вы щёлкнули. В любом случае появится редактор вычисления, в который можно ввести нужную формулу. Если дважды щёлкнуть по готовому вычислению, то появится тот же редактор вычисления, который даст возможность изменить формулу.

Кнопка «назад одну правку» в редакторе вычислений совсем не связана с той же кнопкой в основном окне KSEGа и информация в стеке теряется, как только вы закрыли редактор вычислений.

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

sqrt, log, exp, floor, ceil, fabs, sin, cos, tan, sinh, cosh, tanh, asin, acos, atan, asinh, acosh, atanh

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

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

Я должен сказать,что эта часть KSEGа наиболее слабая. Нет поддержки нужных единиц, вычисления делаются криво и медленно (и с жуками-багами).
Наверх

## Правка и привязки точек

### Как менять внешний вид и ярлыки

Вы можете сказать KSEGу, как рисовать геометрические объекты. Для этого надо выделить нужный объект (или несколько объектов) и нажать на «Правка/Цвет», «Правка/Стиль линий», «Правка/Стиль точек» или «Правка/Шрифт». Если никаких объектов выбрано не было, то это изменение повлияет на все последующие построения. Хотя цвет, шрифт и т.д. не присутствуют на панели инструментов, вы можете щёлкнуть по линии наверху этих подменю, тем самым отрезав их, что даёт возможность делать соответствующие изменения одним щелчком.

Точки и кривые имеют ярлыки, которые могут быть показаны (по умолчанию они скрыты). Для этого выделите объект(ы) и выберете «Правка/± Ярлык». Ярлыки можно изменить, выделив объект и выбрав «Правка/Изменить ярлык».Или дважды щёлкнуть по ярлыку, если он уже показан. Вы можете также создавать ярлыки с верхними и нижними индексами, если сможете догадаться как :-). Ярлык можно двигать вокруг объекта, к которому он относится.

### Как менять привязки точек

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

Например, предположим, вы построили треугольник ABC, потом проделали большое построение нового неизвестного досель центра и потом решили выяснить его поведение в случае, когда ABC равнобедренный. Чтобы сделать |AB| = |BC|, постройте окружность с центром в B через точку A. Потом при нажатом CTRL перетащите точку C на окружность. После того, как вы отпустите кнопку, точка C будет лежать на окружности и, таким образом, ABC будет равнобедренным. Чтобы сделать ABC снова произвольным, при нажатом CTRL возьмите C и пере! тащите на свободное место.

И так, при нажатом CTRL:

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

Все эти правки можно возвращать с помощью CTRL+Z («Правка/Назад одну правку»). Строчка внизу окна всегда говорит, что случится, если опустить точку в этом месте.

Иногда KSEG не разрешает переопределять так как вы хотите. И у него есть на то причины (хотя жуки-баги могут также присутствовать). Вы не можете переопределять точку на её собственного потомка. Вы также не можете переопределять точки, если они ломают зависимость между водителем и ведомым ГМТ, в частности, вы не можете переопределить водителя ГМТ. Также есть довольно сложные правила в Построениях, которые следят за тем, чтобы вы не испортили его переопределениями, например, вы не можете данную точку переопределить на конечную кривую. Если ! вы обнаружите, что KSEG позволяет делать переопределения, которые ломают построения, напишите мне.
Наверх

## Вид и картинки

### Как двигать вид и менять масштаб

KSEG позволяет менять масштаб и двигать всю картинку целиком. Чтобы поменять масштаб, выберете «Окно/Изменить масштаб». Курсор должен превратиться в лупу (когда наведён на лист чертежа). Надавите на левую кнопку мышки и водите вверх-вниз, чтобы менять масштаб. Центром соответствующих гомотетий будет точка, где вы нажали на мышку. Как только вы отпустите мышку, курсор опять станет обычным. Масштаб всегда показывается в правом нижнем углу. Заметьте, что, независимо от увеличения, точки, ярлыки, толщина линий и т.п. не меняются. Чтобы двигать всю картинку, выберете «Окно/Двигать всё», нажмите левой кнопкой в любую точку листа и тащите. Вы можете также двигать всё без использования меню — просто надавите средней кнопкой и тащите.

Если вы выбрали «Окно/Увеличить до упора», KSEG автоматически сдвинет и поменяет масштаб изображения до почти максимального (что удобно для печати и создания картинок). Если вы выбираете «Окно/Масштаб =100%», KSEG вернёт масштаб к 100% и приведёт его к изначальным координатам.

### Несколько окон

Чтобы открыть ещё одно окно KSEGа с тем же документом, выберете «Окно/Новое окно». Изменения масштаба и сдвиги листа в одном окне никак не скажутся на другом, но изменения самого документа или выделение объектов в нём будут отражены во всех окнах. В частности, вы можете двигать точкой в одном окне и наблюдать за изменениями в другом. Вы можете использовать такие окна, например, чтобы наблюдать за небольшим участком чертежа (или чтобы совершать небольшие изменения при увеличенном масштабе) и одновременно видеть большую картинку в основном окне.

### Как делать картинки

Вы можете «фотографировать» чертежи в файлы нескольких стандартных форматов. Чтобы это сделать, выберете «Файл/Сделать картинку...». Появится окно, которое даст вам возможность выбрать формат, и спросит, хотите ли вы получить изображение «Высокого качества». После выбора нажмите ОК и выберете имя файла в следующем окне. Размеры картинки будут те же, что и размер окна.

Если вы отметили квадратик «Высокое качество», KSEG будет думать дольше, картинка будет лучше, но не всегда. В этом случае графика становится лучше, она делается со сглаживанием, такой способ хорош, если вы хотите повесить картинку на интернет, но картинка может выглядеть ужасно, когда печатаешь (хуже чем если бы квадратик не был отмечен). Никогда не используйте «Высокое качество» для создания чёрно-белого изображения — это будет ужасно (хотя с чёрнобелыми оттенками работает нормально). Обычный способ более безопасный, картинка будет точно такой же, как вы видите на экране.
Наверх

## Построения

Построения — это наиболее сильная часть KSEGа. Построение похоже на обычный КKSEGовский чертёж, но его можно использовать как макро-документ в других чертежах или Построениях. Начнём с простого примера:

### Пример: Построение описанной окружности

Здесь мы пройдёмся по Построению circumcircle.sec. По пути я объясню, что делает каждый шаг. В этом Построении мы строим описанную окружность для данных трёх точек.

1. Откройте новое Построение, выбрав «Файл/Новое Построение».
2. Постройте три точки A, B и C. Эти точки будут «данными» для Построения.
3. Выделите A, B и C и сделайте их данными, выбрав «Построение/Сделать данным». Это даст понять KSEGу, что эти точки будут данными для Построения, когда вы будете использовать его в других чертежах.
4. Постройте отрезки AB и BC и их середины D и E.
5. Постройте перпендикуляр к AB через D и перпендикуляр к BC через E. Постройте их точку пересечения F. Вы получили центр описанной окружности треугольника ABC.
6. Теперь постройте окружность с центром F, которая проходит через точку A. Это и есть желанная описанная окружность.
7. Теперь выделите все объекты, которые вы построили, кроме описанной окружности и трёх данных точек, и скройте их («Правка/Скрыть объекты»). Мы делаем это потому, что при использовании этого Построения в других чертежах нам не нужны промежуточные объекты построения, нам нужна только описанная окружность.
8. Теперь всё! Можно применить наше построение в другом чертеже: откройте новый чертёж («Файл/Новый чертёж»), постройте в нём три точки, выделите их и нажмите на «Строить/Не назван» (я предполагаю, что вы не сохранили Построение). Волшебным образом появляется описанная окружность!

### Построения без рекурсии

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

- Хотя объекты с предками могут быть объявлены данными, но обычно этих предков не имеет смысл строить, если только они не нужны для чего-то ещё. Такие объекты отмечаются «(не строится)» в списке справа.

  Вот правило: Представьте отношение предки-потомки как направленный граф из объектов. Если любой направленный путь из объекта A в объект без потомков имеет хотя бы один данный объект, то A не строится.

- KSEG не разрешает помечать водителя ГМТ (также как потомка водителя, который является предком ГМТ) как данный объект.
- В принципе разрешается ссылаться на объект в построении с отмеченным объектом другого типа. Например, предположим, в Построении вы взяли отрезок как данный и построили на нём точку, тогда в другом чертеже, выделив дугу, окружность или луч, вы можете применить это Построение и получите точку на соответствующей кривой. Но если бы в Построении вы строили перпендикуляр к отрезку, то вы не сможете применить его для дуги или окружности.

  Алгоритм, который ставит выбранные объекты в соответствие с данными объектами Построения, довольно сложен (но также не очень хорош теоретически). Сначала он пытается сделать соответствие между порядком выбора и порядком данных Построения. Если так не получается, он начинает подбирать порядок (он должен бы проверять все попарные соответствия, но тогда было бы больше работы и сомнительно, чтоб это всё сильно улучшало). Иногда он не может сопоставить выбранные и отмеченные объекты (тогда соответствующая строка в подменю «Строить» не активна). В таком случае просто выделите снова объекты в другом порядке, более близком к тому, что требуется.

- Свободные точки (также как измерения и вычисления), которые не сделаны данными, будут принимать случайное положение. Точки, построенные на кривой, будут принимать случайное положение на кривой.
- Кнопка «Строить/Ещё построения» даёт возможность быстрого использования библиотеки Построений. С помощью «Строить/Ещё Построения/Изменить папку...» выберете папку, в которой находятся ваши любимые Построения. После этого выделите объекты на вашем чертеже, которые соответствуют данным нужного Построения, и выберете «Строить/Ещё Построения/Имя_файла.sec», чтобы проделать Построение (не открывая его). Чтобы это работало, KSEG просматривает все Построения в выбранной папке и активизирует те, которые применимы к выделенным объектам.
- «Файл/Скопировать как Построение» даёт возможность скопировать чертёж как Построение. Это полезно, если вы хотите использовать часть вашего чертежа в другом чертеже или Построении. После нажатия на «Файл/Скопировать как Построение» вам следует объявить какие-то объекты данными и можно применять Построение.

### Построение с рекурсией

Построения с рекурсией вещь очень сильная. Она даёт возможность строить фракталы и также просто применять Построение несколько раз. Как простой пример примените tractix.sec (для этого откройте tractix.sec, откройте новый чертёж и выделите в нём короткий отрезок и две точки, нажмите на «Строить/tractix.sec» и введите глубину рекурсии около 30-ти). Кривая дракона, dragon.sec, даёт более сложный пример с ветвящийся рекурсией.

Построение становится рекурсивным, когда вы вводите объект «цикл» в него (циклы не являются настоящими геометрическими, но ведут себя похоже). Чтобы завести цикл, выберете объекты, которые могут быть использован как данные Построения, и нажмите на «Построение/Рекурсия». Цикл говорит KSEGу, что после выполнения других построений он должен повторить построение с этими новыми объектами как данными. Конечно, KSEG не будет делать это вечно, когда вы применяете рекурсивное Построение, KSEG спрашивает какую сделать глубину рекурсии. Будьте осторожны, если вы сделали больше, чем один цикл в Построении, количество объектов будет экспонентой от глубины рекурсии, другими словами, не делайте глубину большой. На моём старом 350-мегагерцевом компьютере KSEG может свободно оперировать сотней тысячей объектов, и этого хватает для всего, что нужно.

Как только вы завели цикл в Построении, множество данных объектов нельзя менять (вы не сможете сделать новый объект данным, или данный объект нормальным, вырезание данного объекта вырезает также все циклы и т.п.). Всё это для того, чтобы не ломать циклы. Чтобы изменить данные объекты, уберите сначала циклы.

Вы также можете помечать объекты в рекурсивном построении как «Конечный» или «Начальный». Конечные объекты — это объекты, которые строятся только на последнем шаге рекурсии, Это полезно для построения фракталов, см., например, dragon.sec or sierp2.sec. Потомки конечных объектов также могут быть построены только на последнем шаге, они отмечаются (конечн.) в списке справа.

Начальные объекты более сложная штука, хотя не очень сильная. Они делают довольно странные вещи, которые иногда трудно предсказать. Начальный объект строится только один раз (на первом шаге рекурсии). Любой объект, у которого все предки начальные (не напрямую), становится начальным и отмечается (начальн.) в списке с права. Посмотрите, например, на sierp.sec, сначала воспользуйтесь этим построением (обратите внимание, что стороны большого треугольника строятся только раз). Начальные объекты удобно использовать для того, чтоб сэкономить памят! ь (как например в koch.sec).

В рекурсивных Построениях с Конечными/Данными/Начальными объектами KSEG старается не разрешать неправильные или бессмысленные изменения как, например, делать Начальный или Данный объект с Конечным предком. Не так очевидно, что конкретно он делает, но обычно он всё делает правильно (если вы нашли пример, когда это не так, пришлите мне правильное Построение и описание действия, которое его ломает).
Наверх

Илья Баран
ibaran@mit.edu
http://www.mit.edu/~ibaran/