Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию [pdf]

.pdf
Скачиваний:
740
Добавлен:
02.05.2014
Размер:
6.04 Mб
Скачать

Рис. 86

Рис. 87

892. Даны натуральные числа xc , yc , r

и действительное число t.

Начертить астроиду радиуса r с центром в точке (xc , yc ) , где одна из осей фигуры составляет угол t радиан с положительной полуосью OX (рис. 88). (см. задачи 849 и 885).

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

подобно тому, как это делается при написании цифр на электронных часах или индекса на почтовом конверте (рис. 89). Если предположить, что левый нижний угол прямоугольника совмещен с началом координат, то каждому отрезку можно поставить в соответствие координаты его концов. Так, букве Б, изображенной на рис. 90, соответствует последовательность координат (0, 0) - (0, 8), (0, 8) - (4, 8), (0, 4) - (4,4), (0,0) - (4,0), (4,4) - (4,0) - назовем ее векторным шаблоном буквы.

Рис. 88

Рис. 89

Рис. 90

Таким образом, последующая обрисовка буквы на экране сводится к построению отрезков, координаты концов которых определяются согласно векторному шаблону и с учетом позиции экрана, в которую должен быть помещен левый нижний угол соответствующего прямоугольника. (Перенос и другие преобразования фигур описаны в задаче 885).

Составить векторные шаблоны для всех букв алфавита и цифр и получить на экране слово ТЕСТ, расположенное, как показано на рис. 91, а и 91, б.

ТЕСТ

(100, 100)

а

ТЕСТ

(100, 100)

б

Рис. 91

894. Используя шаблоны, описанные в предыдущей задаче, выполнить подрисуночные подписи к графикам функций из задач 843- 849.

895. Даны натуральные числа x1,y1,x2 ,y2 ,x3 ,y3 ,x4 ,y4 . Построить прямоугольник, левый верхний угол которого находится в точке

( x1,y1 ), а правый нижний- в точке (x2 , y2 ) , и прямоугольник, левый верхний угол которого находится в точке ( x3 , y3 ), а правый нижний- в

точке (x4 , y4 ) . Определить, пересекаются ли эти прямоугольники.

Если да, то закрасить их общую часть.

Для решения задачи воспользоваться следующим. Пусть

l = max(x1, x3 ), r = min(x2 , x4 ), b = max( y2 , y4 ), t = min( y1, y3 ).

Прямоугольники пересекаются, если l < r и и b < t. Общей частью двух пересекающихся прямоугольников также является прямоугольник (предполагается, что стороны прямоугольников попарно параллельны). Левый верхний и правый нижний углы прямоугольника пересечения находятся в точках с координатами соответственно (l, t) и (r, b).

896. Два прямоугольника заданы координатами своих левого верхнего и правого нижнего углов. Верно ли, что прямоугольники пересекаются и что первый из них расположен левее и ниже, чем второй? Если да, то построить фигуру, показанную на рис. 92 (см. предыдущую задачу).

Рис. 92

897. Вопрос о том, пересекаются ли две (или более) плоские геометрические фигуры, отчасти может быть сведен к более простому вопросу о том, пересекаются ли прямоугольники, объемлющие эти фигуры. В случае, когда прямоугольники не пересекаются, не пересекаются и сами фигуры (рис. 93, а). Когда прямоугольники пересекаются (рис. 93, б), требуется дополнительный анализ.

Объемлющий прямоугольник строится следующим образом: прямоугольник должен полностью заключать в себе фигуру и иметь стороны, параллельные осям координат. При этом стремятся определить прямоугольник, имеющий наименьшую площадь. Такой прямоугольник легко построить для многих геометрических фигур, например для отрезка прямой, треугольника, окружности (рис. 93, в) и т. д. Более сложно строить объемлющие прямоугольники для дуг окружностей или других кривых.

а) Отрезок прямой задан координатами концов. Построить прямоугольник, объемлющий данный отрезок.

б) Окружность задана координатами центра и радиусом. Построить квадрат, объемлющий данную окружность.

в) Треугольник задан координатами вершин. Построить прямоугольник, объемлющий данный треугольник.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

 

 

 

б

 

 

 

в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 93

898. Отрезок прямой задан координатами концов, окружность – координатами центра и радиусом, треугольник - координатами вершин. Построить заданные фигуры, а также прямоугольники, объемлющие каждую из фигур, и прямоугольник, объемлющий все три фигуры (рис. 94).

Воспользоваться тем, что левый верхний и правый нижний углы прямоугольника, объемлющего п фигур, имеют координаты соответственно (l, t) и (r, b), где

l =

min(l1, ..., ln ),

r =

max(r1

, ..., rn ),

b =

min(b1

, ..., bn ),

t =

max(t1, ..., tn ),

где ( li , ti ), ( ri , bi ) - координаты левого верхнего и правого нижнего углов прямоугольника, объемлющего i-ю фигуру (1 i n ).

Рис. 94

899. Даны натуральные числа n, x1 , y1 , x2 , y2 , ..., xn , yn .

Построить точки с координатами (x1 ,y1 ), (x2 ,y2 ), ..., (xn ,yn ) и

прямоугольник, объемлющий все эти точки.

Воспользоваться тем, что левый верхний и правый нижний углы искомого прямоугольника имеют координаты (l, t) и (r, b), где

l =

min(x1 , x2 , ..., xn ),

r =

max(x1 , x2

, ..., xn ),

b =

min( y1

,

y2

, ..., yn ),

t =

max( y1

,

y2

, ..., yn ),

900. При работе с графическим изображением часто возникает необходимость выбрать одну или несколько точек экрана. Так, например, для того чтобы построить отрезок, следует задать два его конца, для построения окружности можно задать ее центр и любую точку на окружности и т. д. Для указывания требуемой точки обычно используют курсор. Курсор может иметь одну из следующих конфигураций:

а) Перекрестье (рис. 95, а). Указываемая точка - это точка пересечения двух прямых.

б) Крестик (рис. 95, б). Указываемая точка - это точка пересечения двух коротких отрезков.

в) Стрелка (рис.95, в). Указываемая точка - это точка, в которую помещается острие стрелки.

Построить курсоры а) - в), указывающие точку с координатами

(100, 100).