SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Компьютерная графика
Преобразования на плоскости
Jordi Linares i Pellicer
Escola Politècnica Superior d’Alcoi
Dep. de Sistemes Informàtics i Computació
jlinares@dsic.upv.es
http://www.dsic.upv.es/~jlinares
Преобразования на плоскости
•
•
•

Геометрические преобразования на плоскости необходимы для
трансформации и визуализации нашей модели.
Основные аффинные преобразования: перенос, вращение и
масштабирование
Матрицы преобразований:
Преобразования на плоскости
•
•

Несколько преобразований могут быть скомбинированы в одно,
чтобы определить более сложное преобразование.
Например, вращение вокруг заданной точки (xc, yc):
Преобразования на плоскости
•
•
•
•
•
•
•

В processing каждый графический примитив может быть преобразован
через матрицу, ещё называемую матрицей моделирования (model/view)
Определив эту матрицу, мы сможем перейти от системы координат
нашей модели к системе координат окна, или сделать любое другое
сложное преобразование.
В самом начале матрица моделирования — это просто единичная
матрица, никак не влияющая на графические примитивы
Эти матрицы можно определить при помощи функций rotate(angle),
translate(tx, ty) и scale(sx, sy)
Их смысл — сделать матрицу моделирования равной произведению
предыдущего значения этой матрицы и матрицы, определённой
функцией (перенос, вращение или масштабирование).
rotate(PI) =>M = M • rotate(PI)
На практике это означает, что порядок, в котором мы пишем эти
Функции — обратный тому, в котором они будут применены, то есть
порядок применения будет снизу вверх.
Преобразования на плоскости
•

Пример:
// Вращение вокруг заданной точки
int xc, yc;
size(300, 300);
// Давайте вращать вокруг середины окна
xc = width / 2;
yc = height / 2;
// Мы должны определить матрицы в обратном
// порядке относительно того, как они будут
// влиять на нашу модель
translate(xc, yc);
rotate(PI / 4.0);
translate(-xc, -yc);
// Сейчас мы нарисуем эллипс с центром
// в (xc, yc), с горизонтальным диаметром
// 100 и вертикальным диаметром 200.
// В результате получится эллипс, повёрнутый на
// 45 градусов вокруг своего центра.
ellipse(xc, yc, 100, 200);
Практика 4-1
•

Измените код практики 2-1 (тригонометрические
функции) так, чтобы система координат менялась с
[0,2*PI] на [0, width] и от [-1, +1] до
[height, 0], через определение подходящих матриц
моделирования.

•

Измените код практики 3-1 чтобы показать
изображение в его максимальном пропорциональном
размере в пределах окна, через определение
подходящих матриц моделирования
Преобразования на плоскости
Другие функции, связанные с матрицей моделирования:
resetMatrix()
Сбрасывает матрицу моделирования, делая её единичной матрицей

•

pushMatrix()
popMatrix()
В processing есть вещь, известная как стек матриц
Когда вызвана pushMatrix() , текущая матрица моделирования
кладётся в этот стек (не теряя свои значения)
Когда вызвана popMatrix(), текущая матрица моделирования
является вершиной стека. Она берётся из стека.
В цепочке преобразований (серии вызовов translate(), scale()
или rotate()) pushMatrix() может быть вызвана на любом
промежуточном шаге, к которому мы хотим вернуться через
popMatrix()
Вызовов функции pushMatrix() должно быть столько же,
сколько popMatrix()

•
•
•
•
•
Преобразования на плоскости
// Пример использования
// pushMatrix() и popMatrix()
size(300, 300);
noFill();
background(0);
stroke(255);
// Первый переход в новую систему
// координат:
// Перемещаем (0,0) в центр окна
translate(width / 2, height / 2);
// В этой системе координат
// рисуем эллипс в середине окна
ellipse(0, 0, 100, 200);
// Сохраняем первую систему
// координат
pushMatrix();

// Вторая система координат:
// Дополнительно к предыдущим изменениям,
// мы применяем вращение:
rotate(PI / 4.0);
// Рисуем тот же самый эллипс,
// но сейчас на него будут влиять
// два предыдущих
// преобразования
ellipse(0, 0, 100, 200);
// Возвращаемся к первой
// системе координат
popMatrix();
// Рисуем снова.
// Теперь только фигуру
// после первого переноса
rectMode(CENTER);
rect(0, 0, 100, 200);

Mais conteúdo relacionado

Mais procurados

Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
Mikhail Kurnosov
 
Alexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphicsAlexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphics
Andrew Mayorov
 
6. java lecture swing
6. java lecture swing6. java lecture swing
6. java lecture swing
MERA_school
 
создание HTML игр на элементе canvas
создание HTML игр на элементе canvasсоздание HTML игр на элементе canvas
создание HTML игр на элементе canvas
Alexander Samantsov
 
вращение
вращениевращение
вращение
busujeva
 
CV2011-2. Lecture 03. Photomontage, part 2.
CV2011-2. Lecture 03.  Photomontage, part 2.CV2011-2. Lecture 03.  Photomontage, part 2.
CV2011-2. Lecture 03. Photomontage, part 2.
Anton Konushin
 
CV2011-2. Lecture 09. Single view reconstructin.
CV2011-2. Lecture 09.  Single view reconstructin.CV2011-2. Lecture 09.  Single view reconstructin.
CV2011-2. Lecture 09. Single view reconstructin.
Anton Konushin
 

Mais procurados (20)

6.0a
6.0a6.0a
6.0a
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Progr labrab-4-2013-c++
Progr labrab-4-2013-c++Progr labrab-4-2013-c++
Progr labrab-4-2013-c++
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
Alexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphicsAlexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphics
 
Extended High-Level C-Compatible Memory Model with Limited Low-Level Pointer ...
Extended High-Level C-Compatible Memory Model with Limited Low-Level Pointer ...Extended High-Level C-Compatible Memory Model with Limited Low-Level Pointer ...
Extended High-Level C-Compatible Memory Model with Limited Low-Level Pointer ...
 
6. java lecture swing
6. java lecture swing6. java lecture swing
6. java lecture swing
 
2.139
2.1392.139
2.139
 
УПРАВЛЕНИЕ ИСПОЛНИТЕЛЕМ ЧЕРТЁЖНИК
УПРАВЛЕНИЕ ИСПОЛНИТЕЛЕМ ЧЕРТЁЖНИКУПРАВЛЕНИЕ ИСПОЛНИТЕЛЕМ ЧЕРТЁЖНИК
УПРАВЛЕНИЕ ИСПОЛНИТЕЛЕМ ЧЕРТЁЖНИК
 
Агоритм пчёл и его сравнение с ГА
Агоритм пчёл и его сравнение с ГААгоритм пчёл и его сравнение с ГА
Агоритм пчёл и его сравнение с ГА
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
 
создание HTML игр на элементе canvas
создание HTML игр на элементе canvasсоздание HTML игр на элементе canvas
создание HTML игр на элементе canvas
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
Squeek School #3
Squeek School #3Squeek School #3
Squeek School #3
 
вращение
вращениевращение
вращение
 
Shader magic: Breakdown of popular visual effects for games
Shader magic: Breakdown of popular visual effects for gamesShader magic: Breakdown of popular visual effects for games
Shader magic: Breakdown of popular visual effects for games
 
CV2011-2. Lecture 03. Photomontage, part 2.
CV2011-2. Lecture 03.  Photomontage, part 2.CV2011-2. Lecture 03.  Photomontage, part 2.
CV2011-2. Lecture 03. Photomontage, part 2.
 
CV2011-2. Lecture 09. Single view reconstructin.
CV2011-2. Lecture 09.  Single view reconstructin.CV2011-2. Lecture 09.  Single view reconstructin.
CV2011-2. Lecture 09. Single view reconstructin.
 
Definite integral
Definite integralDefinite integral
Definite integral
 
Метод искусственной пчелиной колонии, алгоритм пчёл
Метод искусственной пчелиной колонии, алгоритм пчёлМетод искусственной пчелиной колонии, алгоритм пчёл
Метод искусственной пчелиной колонии, алгоритм пчёл
 

Destaque

Arduino и бионика (Bionic Arduino). Часть 1. Введение, цифровые входы, перекл...
Arduino и бионика (Bionic Arduino). Часть 1. Введение, цифровые входы, перекл...Arduino и бионика (Bionic Arduino). Часть 1. Введение, цифровые входы, перекл...
Arduino и бионика (Bionic Arduino). Часть 1. Введение, цифровые входы, перекл...
Tatiana Volkova
 
Evaluation Question 1 – In what way does your media product use, develop or c...
Evaluation Question 1 – In what way does your media product use, develop or c...Evaluation Question 1 – In what way does your media product use, develop or c...
Evaluation Question 1 – In what way does your media product use, develop or c...
Alliicceee
 
3 d pie chart circular with hole in center 11 stages style 3 powerpoint diagr...
3 d pie chart circular with hole in center 11 stages style 3 powerpoint diagr...3 d pie chart circular with hole in center 11 stages style 3 powerpoint diagr...
3 d pie chart circular with hole in center 11 stages style 3 powerpoint diagr...
SlideTeam.net
 

Destaque (20)

Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в Processing
 
Компьютерная графика в Processing, часть 3. Изображения и текст
Компьютерная графика в Processing, часть 3. Изображения и текстКомпьютерная графика в Processing, часть 3. Изображения и текст
Компьютерная графика в Processing, часть 3. Изображения и текст
 
Arduino и бионика (Bionic Arduino). Часть 4. ШИМ, сервомашинки, I2C, акселеро...
Arduino и бионика (Bionic Arduino). Часть 4. ШИМ, сервомашинки, I2C, акселеро...Arduino и бионика (Bionic Arduino). Часть 4. ШИМ, сервомашинки, I2C, акселеро...
Arduino и бионика (Bionic Arduino). Часть 4. ШИМ, сервомашинки, I2C, акселеро...
 
Компьютерная графика в Processing, часть 6. Взаимодействие.
Компьютерная графика в Processing, часть 6. Взаимодействие.Компьютерная графика в Processing, часть 6. Взаимодействие.
Компьютерная графика в Processing, часть 6. Взаимодействие.
 
Arduino и бионика (Bionic Arduino). Часть 1. Введение, цифровые входы, перекл...
Arduino и бионика (Bionic Arduino). Часть 1. Введение, цифровые входы, перекл...Arduino и бионика (Bionic Arduino). Часть 1. Введение, цифровые входы, перекл...
Arduino и бионика (Bionic Arduino). Часть 1. Введение, цифровые входы, перекл...
 
Презентация к конкурсу "Школьный урок технологии - 2035"
Презентация к конкурсу "Школьный урок технологии - 2035"Презентация к конкурсу "Школьный урок технологии - 2035"
Презентация к конкурсу "Школьный урок технологии - 2035"
 
SEOGuardian - Settore Crociere - Aggiornare
SEOGuardian - Settore Crociere - AggiornareSEOGuardian - Settore Crociere - Aggiornare
SEOGuardian - Settore Crociere - Aggiornare
 
12 estudos para guitarra
12 estudos para guitarra12 estudos para guitarra
12 estudos para guitarra
 
110619 ot vistas 25 a new heart jeremiah and ezekiel
110619 ot vistas 25 a new heart  jeremiah and ezekiel110619 ot vistas 25 a new heart  jeremiah and ezekiel
110619 ot vistas 25 a new heart jeremiah and ezekiel
 
[BrunoiMob] Nova Penha
[BrunoiMob] Nova Penha[BrunoiMob] Nova Penha
[BrunoiMob] Nova Penha
 
Working With Allen Process
Working With Allen ProcessWorking With Allen Process
Working With Allen Process
 
Prevision dimanche 06 decembre 2015
Prevision dimanche 06 decembre  2015Prevision dimanche 06 decembre  2015
Prevision dimanche 06 decembre 2015
 
Evaluation Question 1 – In what way does your media product use, develop or c...
Evaluation Question 1 – In what way does your media product use, develop or c...Evaluation Question 1 – In what way does your media product use, develop or c...
Evaluation Question 1 – In what way does your media product use, develop or c...
 
3 d pie chart circular with hole in center 11 stages style 3 powerpoint diagr...
3 d pie chart circular with hole in center 11 stages style 3 powerpoint diagr...3 d pie chart circular with hole in center 11 stages style 3 powerpoint diagr...
3 d pie chart circular with hole in center 11 stages style 3 powerpoint diagr...
 
Aya Mohamed Ali
Aya Mohamed AliAya Mohamed Ali
Aya Mohamed Ali
 
Horario 7º semestre
Horario   7º semestreHorario   7º semestre
Horario 7º semestre
 
Customer Service Excellence Programme (Telephones)
Customer Service Excellence Programme (Telephones)Customer Service Excellence Programme (Telephones)
Customer Service Excellence Programme (Telephones)
 
7 must read tips to simplify content marketing planning in 2015
7 must read tips to simplify content marketing planning in 2015 7 must read tips to simplify content marketing planning in 2015
7 must read tips to simplify content marketing planning in 2015
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
 
How to quickly spy on your competition
How to quickly spy on your competitionHow to quickly spy on your competition
How to quickly spy on your competition
 

Semelhante a Компьютерная графика в Processing, часть 4. Преобразования на плоскости

Расчетная работа Цифровой коллаж
Расчетная работа Цифровой коллажРасчетная работа Цифровой коллаж
Расчетная работа Цифровой коллаж
sheplyakov
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс
2berkas
 
Геометрическое моделирование
Геометрическое моделированиеГеометрическое моделирование
Геометрическое моделирование
Viktoria Vlasenko
 
расчетная работа(исправлен)
расчетная работа(исправлен)расчетная работа(исправлен)
расчетная работа(исправлен)
Евгений Белов
 
лабораторная работа №4 uml
лабораторная работа №4 umlлабораторная работа №4 uml
лабораторная работа №4 uml
Natasha Lysakova
 
Ntc imitayton productsystem
Ntc imitayton productsystemNtc imitayton productsystem
Ntc imitayton productsystem
Alexander Dvorak
 
презентация лекции №5
презентация лекции №5презентация лекции №5
презентация лекции №5
student_kai
 
презентация лекции №7
презентация лекции №7презентация лекции №7
презентация лекции №7
student_kai
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
etyumentcev
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
Eugeniy Tyumentcev
 
презентация лекции №12
презентация лекции №12презентация лекции №12
презентация лекции №12
student_kai
 

Semelhante a Компьютерная графика в Processing, часть 4. Преобразования на плоскости (20)

модуль 1. основы работы в illustrator 1. введение
модуль 1. основы работы в illustrator 1. введениемодуль 1. основы работы в illustrator 1. введение
модуль 1. основы работы в illustrator 1. введение
 
Расчетная работа Цифровой коллаж
Расчетная работа Цифровой коллажРасчетная работа Цифровой коллаж
Расчетная работа Цифровой коллаж
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс
 
Геометрическое моделирование
Геометрическое моделированиеГеометрическое моделирование
Геометрическое моделирование
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 
расчетная работа(исправлен)
расчетная работа(исправлен)расчетная работа(исправлен)
расчетная работа(исправлен)
 
лабораторная работа №4 uml
лабораторная работа №4 umlлабораторная работа №4 uml
лабораторная работа №4 uml
 
лекция 11
лекция 11лекция 11
лекция 11
 
Ntc imitayton productsystem
Ntc imitayton productsystemNtc imitayton productsystem
Ntc imitayton productsystem
 
презентация лекции №5
презентация лекции №5презентация лекции №5
презентация лекции №5
 
презентация лекции №7
презентация лекции №7презентация лекции №7
презентация лекции №7
 
Data Mining - lecture 7 - 2014
Data Mining - lecture 7 - 2014Data Mining - lecture 7 - 2014
Data Mining - lecture 7 - 2014
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
"Рекомендации по проектированию API". Марина Степанова, Яндекс
"Рекомендации по проектированию API". Марина Степанова, Яндекс"Рекомендации по проектированию API". Марина Степанова, Яндекс
"Рекомендации по проектированию API". Марина Степанова, Яндекс
 
презентация лекции №12
презентация лекции №12презентация лекции №12
презентация лекции №12
 
L05 features
L05 featuresL05 features
L05 features
 
Графика средствами PHP
Графика средствами PHPГрафика средствами PHP
Графика средствами PHP
 
Графика средствами PHP
Графика средствами PHPГрафика средствами PHP
Графика средствами PHP
 
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
 

Компьютерная графика в Processing, часть 4. Преобразования на плоскости

  • 1. Компьютерная графика Преобразования на плоскости Jordi Linares i Pellicer Escola Politècnica Superior d’Alcoi Dep. de Sistemes Informàtics i Computació jlinares@dsic.upv.es http://www.dsic.upv.es/~jlinares
  • 2. Преобразования на плоскости • • • Геометрические преобразования на плоскости необходимы для трансформации и визуализации нашей модели. Основные аффинные преобразования: перенос, вращение и масштабирование Матрицы преобразований:
  • 3. Преобразования на плоскости • • Несколько преобразований могут быть скомбинированы в одно, чтобы определить более сложное преобразование. Например, вращение вокруг заданной точки (xc, yc):
  • 4. Преобразования на плоскости • • • • • • • В processing каждый графический примитив может быть преобразован через матрицу, ещё называемую матрицей моделирования (model/view) Определив эту матрицу, мы сможем перейти от системы координат нашей модели к системе координат окна, или сделать любое другое сложное преобразование. В самом начале матрица моделирования — это просто единичная матрица, никак не влияющая на графические примитивы Эти матрицы можно определить при помощи функций rotate(angle), translate(tx, ty) и scale(sx, sy) Их смысл — сделать матрицу моделирования равной произведению предыдущего значения этой матрицы и матрицы, определённой функцией (перенос, вращение или масштабирование). rotate(PI) =>M = M • rotate(PI) На практике это означает, что порядок, в котором мы пишем эти Функции — обратный тому, в котором они будут применены, то есть порядок применения будет снизу вверх.
  • 5. Преобразования на плоскости • Пример: // Вращение вокруг заданной точки int xc, yc; size(300, 300); // Давайте вращать вокруг середины окна xc = width / 2; yc = height / 2; // Мы должны определить матрицы в обратном // порядке относительно того, как они будут // влиять на нашу модель translate(xc, yc); rotate(PI / 4.0); translate(-xc, -yc); // Сейчас мы нарисуем эллипс с центром // в (xc, yc), с горизонтальным диаметром // 100 и вертикальным диаметром 200. // В результате получится эллипс, повёрнутый на // 45 градусов вокруг своего центра. ellipse(xc, yc, 100, 200);
  • 6. Практика 4-1 • Измените код практики 2-1 (тригонометрические функции) так, чтобы система координат менялась с [0,2*PI] на [0, width] и от [-1, +1] до [height, 0], через определение подходящих матриц моделирования. • Измените код практики 3-1 чтобы показать изображение в его максимальном пропорциональном размере в пределах окна, через определение подходящих матриц моделирования
  • 7. Преобразования на плоскости Другие функции, связанные с матрицей моделирования: resetMatrix() Сбрасывает матрицу моделирования, делая её единичной матрицей • pushMatrix() popMatrix() В processing есть вещь, известная как стек матриц Когда вызвана pushMatrix() , текущая матрица моделирования кладётся в этот стек (не теряя свои значения) Когда вызвана popMatrix(), текущая матрица моделирования является вершиной стека. Она берётся из стека. В цепочке преобразований (серии вызовов translate(), scale() или rotate()) pushMatrix() может быть вызвана на любом промежуточном шаге, к которому мы хотим вернуться через popMatrix() Вызовов функции pushMatrix() должно быть столько же, сколько popMatrix() • • • • •
  • 8. Преобразования на плоскости // Пример использования // pushMatrix() и popMatrix() size(300, 300); noFill(); background(0); stroke(255); // Первый переход в новую систему // координат: // Перемещаем (0,0) в центр окна translate(width / 2, height / 2); // В этой системе координат // рисуем эллипс в середине окна ellipse(0, 0, 100, 200); // Сохраняем первую систему // координат pushMatrix(); // Вторая система координат: // Дополнительно к предыдущим изменениям, // мы применяем вращение: rotate(PI / 4.0); // Рисуем тот же самый эллипс, // но сейчас на него будут влиять // два предыдущих // преобразования ellipse(0, 0, 100, 200); // Возвращаемся к первой // системе координат popMatrix(); // Рисуем снова. // Теперь только фигуру // после первого переноса rectMode(CENTER); rect(0, 0, 100, 200);