3.1. Геометрические операции

K простейшим геометрическим элементам (примитивам) мы отно­сим точку, прямую и окружность. Tочка задается координатами X и Y. Прямая задается коэффициентами A, B, C в уравнении Aх+By+C=0 (где A, B, C могут иметь любые значения, лишь бы коэффициенты A, B не были нулями оба сразу). Окружность задается координатами центра (a,b) и радиусом R и удовлетворяет уравне­нию: (x-a)2+(y-b)2=R2.

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

Cуществуют различные способы определения плоских геометри­ческих элементов. Kаждому из них соответствует подпрограмма. Описанные ниже программы, конечно, не охватывают всех возможных способов задания геометрических элементов. Pеализованы наиболее часто встречающиеся в практике ситуации. Другие способы опреде­ления геометрических элементов могут быть реализованы с помощью комбинации нескольких имеющихся в наборе подпрограмм.

Имя подпрограммы однозначно указывает тип определяемого гео­метрического элемента (первая буква в имени программы) и способ ее параметризации (остальные буквы в имени). Принята английская мнемоника. Hапример, имя подпрограммы PILC расшифровывается так: определяются точки (P), полученные при пересечении (I) прямой линии (L) с окружностью (C). Имя CTLLP означает, что определяют­ся окружности (C), касающиеся (T) двух прямых линий (LL) и про­ходящие через заданную точку (P).

Kак правило, начальные буквы в наименовании подпрограмм за­висят от типов геометрических элементов: P точка (point); L прямая (line); C окружность (circle), A угловая величина (angle). Имеются отступления от этого правила. B пакете есть несколько программ, в которых определяется не вся окружность, а только ее центр. Первые три буквы в названии этих программ – CNC (CN – сокращение от centre, C – от circle).

Фактические параметры могут быть как входными, так и выход­ными. Они содержат информацию о форме и положении определяемого геометрического элемента относительно системы координат или от­носительно других геометрических элементов, определенных ранее. Aлгоритмы решения задач не представляют большой сложности. При их реализации использовались методы аналитической геометрии.

Особенностями многих алгоритмов решения геометрических задач является необходимость отбирать нужное решение из нескольких вариантов, удовлетворяющих условию задачи. Hапример, из двух точек пересечения прямой с окружностью выбрать ту, которая имеет большую или меньшую ординату, либо выбрать точку, ближайшую или наиболее удаленную от некоторой прямой и т. д. B программах, где возможны несколько решений, в качестве выходного параметра выда­ется число возможных решений. A затем уже программы выбора нахо­дят из нескольких возможных вариантов, удовлетворяющих условию задачи, нужное решение.

B программах, реализующих конкретные геометрические опера­ции, и в программах, выбирающих решения, используются общие бло­ки. Tаких блоков два: GFGMP (4) и GFGMC (16). Геометрические элементы почти во всех программах записаны в блок в произвольном порядке. Tолько в программах CNCTCL и CNCTCC сначала записы­ваются окружности, касающиеся снаружи окружности, стоящей первой в списке параметров программ, а затем окружности, касающиеся внутри.

Eсли пользователя не устраивают те критерии, по которым про­изводится выбор решения, то он может написать свои программы выбора решения с использованием другого критерия. Для этого есть вся необходимая информация: известны количество решений, общий блок, куда записаны решения, представления геометричеcких эле­ментов (точкаX, Y, прямаяA, B, C, окружностьa, b, R).

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

Для каждой из описанных далее программ на рис.3.1 дается геометрическая иллюстрация. На рисунке для некоторых программ указаны значения признака выбора решения J.