Повороты, переносы, отрисовка изображений

Содержание

Слайд 2

До начала работы Было на бумаге: Задание – поместить в квадрат

До начала работы

Было на бумаге:
Задание – поместить в квадрат 2х2, и

центр картинки должен совпасть с началом координат.
Расчет:
aspectFig = Vx / Vy
aspectForm = 1 // 2х2
S = (aspectFig < aspectForm) ? 2 / Vy : 2 / Vx
Vx_m = Vx*S // размер по X и Y внутри 2x2
Vy_m = Vy*S

Vx

Vy

Слайд 3

В программе – команда model В файле соответствует команде figure после

В программе – команда model

В файле соответствует команде figure после описания

рисунка:
# первый рисунок
model 2 1 4 2 # центр в точке (2, 1), размеры 4x2
color 0 255 0 # цвет зеленый
thickness 3 # толщина линии 3
path 5 # путь из четырех ребер (пять вершин)
0.5 0.5 # левый нижний угол
0.5 1.5 # левый верхний угол
2.5 1.5 # правый верхний угол
2.5 0.5 # правый нижний угол
0.5 0.5 # левый нижний угол
# преобразования и размещения по описанию
figurе
Слайд 4

Следующий шаг – разместить картинку в прямоугольник заданного размера Условие -

Следующий шаг – разместить картинку в прямоугольник заданного размера

Условие -

минимальный размер прямоугольника 2х3.
Следовательно, надо пересчитать коэффициент масштабирования из 2х2 в 2х3.
aspectFig = Vx_m / Vy_m // размер в 2х2
aspectForm = Wx / Wy; // Wх = 2, Wy =3
S = (aspectFig < aspectForm) ? Wy / Vy_m : Wx / Vx_m;
Этот коэффициент должен быть применен к картинке до начала основного рисования.
Слайд 5

Расчет в model Vx = 4 Vy=2 aspectFig = Vx /

Расчет в model
Vx = 4 Vy=2
aspectFig = Vx / Vy =>

2 aspectForm = 1
S = (aspectFig =2 < aspectForm =1) ? 2 / Vy : 2 / Vx => S= 2/Vx = 1/2
Vx_m = Vx*S => Vx_m = 2
Vy_m = Vy*S => Vy_m = 1
Слайд 6

Расчет для команд отрисовки в файле (след.шаг) Вариант, когда Wх =

Расчет для команд отрисовки в файле (след.шаг)

Вариант, когда Wх = 2,

Wy =3 (фрейм 40х20)
aspectFig = Vx_m / Vy_m => aspectFig = 2/1 = 2
aspectForm = Wx / Wy;
S=(aspectFig(2 < 2/3) ? 3/1 : 2/2 = 1
Вариант, когда Wх = 1, Wy =1.5 (фрейм 20х10)
aspectFig = Vx_m / Vy_m => aspectFig = 2/1 = 2
aspectForm = Wx / Wy;
S=(aspectFig=>(2 < 1/1.5) ? 1.5/1 : 1/2 = 0.5
Слайд 7

Повороты, переносы Задание: Центры изображений в серии из 6-и изображений расположены

Повороты, переносы

Задание:
Центры изображений в серии из 6-и изображений расположены на

окружности радиуса 14 клеток.
Каждое изображение в серии имеет поворот 30 градусов относительно предыдущего изображения в серии.

Радиус – 14. Сдвиг на 30 градусов по кругу
Центр окружности в точке (15, 16)
Разместить надо фигуру ниже

Слайд 8

Отрисовка Стартовое положение – после ввода, если поставить figure. В файле

Отрисовка

Стартовое положение –
после ввода, если поставить figure.
В файле должна быть

команда
scale 1.5 - подогнать размер под 2х3
Надо повернуть вверх ногами, чтобы заняло свое стартовое положение:
Rotate 90
Слайд 9

Движение по окружности Для удобства начнем справа – 1) Встать на

Движение по окружности

Для удобства начнем справа –
1) Встать на радиус

окружности translate 14 0
2) Сказать, что ее центр в (15,16)
pushTransform #
translate 15 16
Слайд 10

Повороты по окружности #достали из стека стоящую на голове картинку popTransform

Повороты по окружности

#достали из стека стоящую на голове картинку
popTransform
#и повернули

ее на 30 градусов вокруг своей оси
rotate -30
pushTransform # запомнили figure
#поставили на окружность и повернули на окружности вокруг центра окружности
translate 14 0 # figure
rotate -30 #figure # показать куда встала - не покажет, так как ушла за экран
translate 15 16 # поставили на место центр окружности
figure
Слайд 11

#достали из стека повернутую еще на 30 popTransform #и повернули ее

#достали из стека повернутую еще на 30
popTransform
#и повернули ее на 30

градусов
rotate -30
pushTransform # запомнили #figure
#поставили на окружность и повернули на окружности на -60 градусов (30+30)
translate 14 0 #figure
rotate -60 #figure # показать куда встала - не покажет, так как ушла за экран
translate 15 16 # поставили на место центр окружности
figure
Слайд 12

#достали из стека повернутую еще на 30 popTransform #и повернули ее

#достали из стека повернутую еще на 30
popTransform
#и повернули ее на 60

градусов
rotate -60
pushTransform # запомнили # figure
#поставили на окружность и повернули на окружности на -120 градусов (30+30 +60)
translate 14 0 #figure
rotate -120 #figure # показать куда встала - не покажет, так как ушла за экран
translate 15 16 # поставили на место центр окружности
figure
Слайд 13

#достали из стека повернутую еще на 60 popTransform #и повернули ее

#достали из стека повернутую еще на 60
popTransform
#и повернули ее на 30

градусов
rotate -30
pushTransform # запомнили #figure
#поставили на окружность и повернули на окружности на -150 градусов (30+30 +60 +30)
translate 14 0 #figure
rotate -150 #figure # показать куда встала - не покажет, так как ушла за экран
translate 15 16 # поставили на место центр окружности
figure
Слайд 14

#достали из стека повернутую еще на 30 popTransform #и повернули ее

#достали из стека повернутую еще на 30
popTransform
#и повернули ее на 30

градусов
rotate -30
pushTransform # запомнили #figure
#поставили на окружность и повернули на окружности на -180 градусов (30+30 +60 +30)
translate 14 0 #figure
rotate -180 #figure # показать куда встала - не покажет, так как ушла за экран
translate 15 16 # поставили на место центр окружности
figure