56
Школьная ЭВМ рисует окружность
А. Г. ШЕГОЛЕВ
В предыдущего номере «Кванта» мы немного расскаазали о графических возможностях школьной ЭВМ «Ямаха» (и языка MSX — Бейсик), нарисовали красивые картины — вернее, составили алгоритмы, выполняющие эти рисунки. В этот раз мы продемонстрируем графические возможности машин们 при решении геометрических задач на построение. Мы ограничимся разбором лишь одной задачи, но разбор этот будет очень подробным; он основан на принципах систематического программирования (см. «Квант», 1987, № 10, 11). Итак, задача: проведите окружность через три точки, заданные свойства координат.
В существия вам задача о построении окружности, описанной около треугольника. Такое построение выполним, причем единственным образом, если данные три точки различны и не лежат на одной прямой.
Проведем полное систематическое построение алгоритма и программы.
Построим окружность, проходящую через три точки.
Координаты первого точки
Координаты второй точки
Координаты третьей точки
Через эти точки нельзя проводить окружность (и при этом единственно!)!
Рис. 1.
57
Постановка:
Дано: — координаты точек .
Требе: — изобравнение окружности (или ее части, находящейся в пределах экрана).
При: не лежат на одной прямой.
Связь: .
Сценарий:
На рисунке 1 в синее кругочки сведены переменные элементы будущего диалога — конкретные числа, сообщаемые человеком в ответ на запрос ЭВМ. В фигуры скобки заключены два варианта ЭВМ: первый будет видан в случае, если точки с данными координатами лежат на одной прямой, второй — если координаты точек удовлетворяют постановке; в этом последнем случае на экране будет изобравнения точки с заданным координатами и проходит через них окружность.
Метод:
Условие того, что три данные точки и лежат на одной прямой, равносильно колlinearности векторов и (рис. 2) и имеет вид
Уражение 1. Убедитесь в том, что это условие охватывает и случаи, когда любые две (и даже все три) точки совпадают.
Для того чтобы изобравить окружность, мы должны сообщить исполнитель (школьной ЭВМ) координаты ее центра и радиус.
Как известно, центр описанной окружности может быть найден как точка пересечения середины перепределкиров к двум сторонам треугольника и на рисунке 3).
координаты векторов:
— середина стороны — имеет координаты
координаты точки — середины
стороны
Любая точка, лежащая на прямой , имеет координаты , где и — соответствен абсциза и ordinata точки ; и — координаты вектора ; — некоторое число.
Уражение 2. Докажите, что .
координаты точек на прямой выражаются аналогично через параметр , координаты точки и вектора, перпендикулярного к (например вектора ). Для нахождения точки пересечения прямых и приравняем соответствующие координаты:
Решая эту систему линейных уравнений относительно неизвестных и , получим, например, выражение для :
координаты центра окружности
Радиус obtuisется по теореме Пифагора как расстояние между центром и любой из данных точек (напри-
58
метр ):
Теперь, располагая сценарием и методом вычисления, построим алгоритм и переведем его на MSX — BASIC. Используем вспомогательный алгоритм «изображение» (GOSUB 200 — это обращение к соответствующей подпрограмме).
Алгоритм:
алг окружность
нач
вывод «Построим окружность», «проходящий через три точки.»
запрос «Координаты первой точки»;
запрос «Координаты второй точки»;
запрос «Координаты третьей точки»;
если
то вывод «Через эти точки нельзя» «провести окружность» «(и притом единственную)!»
инчете изображение
все
кон
алг изображение
нач
графика
точка , розовый
точка , розовый
точка , розовый
окружн , , розовый
кон
Программа:
10’ окружность