abramov
.pdfРис. 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 |
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 ).
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).