Масштабирование отрезков
При формировании изображения отрезок достаточно часто используется как основной элемент. Поэтому рассмотрим основные геометрические преобразования применительно к отрезку.
Горизонтальный отрезокмежду точками с абсциссамих1иx2 имеет длину
L=x2 - x1.
Изменение длины отрезка в зависимости от коэффициента масштабирования определяется соотношением
Ls = L*S = S(x2 – x1) =X2s – X1s
Координаты точекX2s ,X1s рассчитываются по матрице масштабирования относительно начала координат. ЕслиS>1отрезок становится длиннее; еслиS <1– отрезок станет короче, в противном случае он не изменит свою длину. Из рисунка видно, что масштабирование приводит к изменению координат концевых точек, то есть после масштабирования отрезок занимает новое положение, определяемое координатами концевых точек. Общий подход при перемещении отрезка заключается в выборе опорной (базовой) точки, положение которой считается фиксированной ( точкаx0 на рисунке 3.29). Координаты отрезка в этом случае после проведения расчетов определяются из выражений
X1s = (x1-x0)*S + x0 =x0*(1-S)+x1*S
X2s =(x2-x0*S) + x0=x0*(1-S) + x2*S
В качестве опорной точки можно выбирать любую точку на экране или вне его
Фиксируя середину отрезка, получим
X1s =XM - (x2-x1)*S/2
X2s =XM+(x2-x1)*S/2
Для вертикального отрезка расчеты дают аналогичные результаты для координатыy.
Отрезок, проведенный под произвольным углом, (рис. 3.30) масштабируется одновременным изменением горизонтальной (x2-x1) и вертикальной(y2-y1)проекций относительно базовой точкиx0.
X1s = x0*(1-S)+x1*S
X2s =x0*(1-S) + x2*S
Y1s = y0*(1-S )+ y1*S
Y2s =y0*(1-S) + y2*S
Для увеличения или уменьшения длины наклонного отрезка, с сохранением наклона, требуется равенство коэффициента масштабирования по осям. Полученные выше результаты, как видно приводят к расчетам координат концевых точек отрезков. Окончательный вид изображения получается путем вычерчивания линий, соединяющих точки с вычисленными координатами. Для изображений, содержащих линии более высокого порядка (окружность, эллипс и др.) масштабирование применяется только к определяющим точкам и элементам – центр окружности, радиус.
Вращение точки.
Рисунок 3.31 иллюстрирует вращение точки. Перемещение осуществляется из точки X,Yв точкуX1,Y1по дуге окружности с центром вращенияX0,Y0. Угол jна рисунке определяет величину поворота. Координаты точкиX1,Y1после поворота определяются из
X1=X0 + (X-X0)*cosj + (Y-Y0)*sinj
Y1=Y0 + (Y-Y0)*cosj + (X-X0)*sinj
Опорная (базовая) точка вращения может находиться в любом месте на экране и вне его границ. Угол поворота jизменяется против направления часовой стрелки (положительное направление отсчета) от начального положения точкиX,Y. Обычно значения этого угла лежат в пределах от 0 до 2p. Другие углы поворота тоже допустимы, однако такие углы эквивалентны повороту в указанном диапазоне.
Преобразования над системой точек в однородных координатах в наиболее общем виде, выполняемые операциями R, S ,Tможет быть представлено матрицейPразмером (3х3)
.
Правая верхняя часть размером 2х2 является объединенной матрицей поворота и масштабирования, tx иty описывают суммарный перенос;p и q – получение проекций, аS –производит изменение общего масштаба.
1Все преобразования проводятся в декартовой прямоугольной системе координат. Случай использования иного позиционирования обязательно будет оговариваться.