- •Конспект лекцій
- •Теми лекцій
- •Лекція 1: загальне введення в комп'ютерну графіку
- •Предмет і область застосування комп'ютерної графіки
- •Коротка історія
- •Технічні засоби підтримки комп'ютерної графіки
- •Питання й вправи
- •Лекція 2 сучасні апаратні засоби растрової графіки
- •2.1.Основні поняття
- •2.2. Пристрою уведення Сканери
- •Цифрові фотоапарати й відеокамери
- •2.3. Пристрою виводу Дисплеї
- •Дисплеї на елт
- •Жидкокристаллические дисплеї
- •Інші типи дисплеїв
- •Проектори
- •Принтери
- •Матричні принтери
- •Струминні принтери
- •Лазерні принтери
- •2.4. Архітектура графічної підсистеми пк Архітектура
- •Подання зображень
- •Програмний інтерфейс
- •Питання й вправи
- •Лекція 2. Колір у комп'ютерній графіці
- •Про природу світла й кольору
- •Колірний графік мко
- •Колірні моделі rgb і cmy
- •Колірні моделі hsv і hls
- •Простір cie Luv
- •Питання й вправи
- •Лекція 3. Геометричні перетворення
- •Системи координат і вектори
- •Рівняння прямій і площині
- •Аналітичне подання кривих і поверхонь
- •Перетинання лучачи із площиною й сферою
- •Інтерполяція функцій однієї й двох змінних
- •Матриці
- •Геометричні перетворення (перенос, масштабування, обертання)
- •Перехід в іншу систему координат
- •Завдання обертання щодо довільної осі
- •Питання й вправи
- •Лекція 4. Подання геометричної інформації
- •Геометричні примітиви
- •Полігональні моделі
- •Воксельні моделі
- •Поверхні вільних форм (функціональні моделі)
- •Системи координат: світового, об'єктна, спостерігача й екранна
- •Однорідні координати. Завдання геометричних перетворень в однорідних координатах за допомогою матриць
- •Питання й вправи
- •Лекція 6 алгоритми растеризаЦії відрізків, окружностей і еліпсів
- •6.1. Введення в растеризацію кривих
- •6.2.Зображення відрізка із цілочисловими координатами кінців
- •Цифровий диференціальний аналізатор
- •Алгоритм Брезенхема
- •Алгоритм Кастла-Пітвея
- •6.3. Зображення відрізка з нецілочисловими координатами кінців
- •6.4. Зображення окружностей
- •Алгоритм Брезенхема
- •6.5. Зображення еліпсів
- •Побудова по неявній функції
- •Побудова шляхом стиску окружності
- •Лекція 7 відсікання (кЛіпування) геометричних примітивів
- •Алгоритм Сазерленда-Коена відсікання прямокутною областю
- •Відсікання опуклим багатокутником
- •Кліпування багатокутників
- •Питання й вправи
- •Лекція 8 видалення невидимих поверхонь і ліній
- •Видалення нелицьових граней багатогранника Алгоритм Робертса
- •Алгоритм Варнока
- •Алгоритм Вейлера-Азертона
- •Метод z-Буфера
- •Методи пріоритетів (художника, що плаває обрію)
- •Алгоритми порядкового сканування для криволінійних поверхонь
- •Метод двійкової розбивки простору
- •Метод трасування променів
- •Питання й вправи
- •Лекція 9 проектування просторових сцен
- •Основні типи проекцій
- •Паралельні проекції
- •Центральні проекції
- •Математичний апарат
- •Ортогональні проекції
- •Косокутні проекції
- •Центральні проекції
- •Спеціальні картографічні проекції. Екзотичні проекції земної сфери
- •Стереографическая проекція
- •Гномоническая проекція
- •Ортографическая проекція
- •Проекції на циліндр
- •Проекція Меркатора
- •Проекції на багатогранник
- •Незвичайні проекції
- •Питання й вправи
- •Лекція 10 растрове перетворення графічних примітивів
- •Алгоритм Брезенхема растрової дискретизації відрізка
- •Алгоритми Брезенхема растрової дискретизації окружності й еліпса
- •Алгоритми заповнення областей
- •Лекція 11 зафарбовування. Рендеринг полігональних моделей
- •Проста модель висвітлення
- •Питання й вправи
- •Зафарбування граней Плоске зафарбовування
- •Зафарбування методом Гуро
- •Зафарбування методом Фонга
- •Більше складні моделі висвітлення
- •Усунення ступінчастості (антиэлайзинг)
- •Питання й вправи
- •Лекція 12 візуалізація просторових реалістичних сцен
- •Свето- Тіньовий аналіз
- •Метод излучательности
- •Глобальна модель висвітлення із трасуванням променів
- •Текстури
- •Питання й вправи
- •Лекція 13 алгоритми стиску зображень без втрат
- •13.1. Необхідність стиску зображень
- •13.2. Неіснування ідеального алгоритму
- •13.3. Алгоритми кодування довжини повторення (rle)
- •13.4. Словникові алгоритми
- •Алгоритм lz77
- •Алгоритм lzw
- •13.5. Алгоритми статистичного кодування
- •Алгоритм Хаффмена
- •13.6. Арифметичне кодування
- •Лекція 14 стиск зображень із втратами
- •14.1. Необхідність стиску із втратами
- •14.2. Оцінка втрат
- •14.3. Зображення як функція
- •Дискретне Перетворення Фур'є
- •Дискретне косинусное перетворення
- •14.4. Алгоритм стиску зображень jpeg
- •14.5. Вейвлет-Перетворення
- •14.6. Фрактальное стиск
- •Список літератури
- •Лекція 15 алгоритми стиску відео
- •Введення
- •Основні поняття
- •Вимоги додатків до алгоритму
- •Визначення вимог
- •Огляд стандартів
- •Базові технології стиску відео Опис алгоритму компресії
- •Загальна схема алгоритму
- •Використання векторів зсувів блоків
- •Можливості по распараллеливанию
- •Інші шляхи підвищення ступеня стиску
- •Порівняння стандартів
- •Питання для самоконтролю
- •Лекція 16 основи видавничої справи
- •1. Вибір формату
- •1.1. Використання стандартних форматів
- •1.1.1. Стандартні розміри по iso
- •2. Підготовка тексту
- •2.1.2. Редагування матеріалу
- •Перевірка фактичної вірогідності матеріалу
- •Установлення власника авторських прав і одержання дозволу на видання
- •Вступна частина
- •Авантитул
- •Заключна частина
- •2.2. Оформлення книги
- •2.2.1. Принципи виміру й термінологія
- •2.2.2. Характеристики шрифту Загальні характеристики
- •Класифікація шрифтів
- •2.3. Розробка дизайну тексту
- •2.3.1. Вибір шрифту
- •2.3.2. Вибір розмірів смуги набору, полів і шрифту
- •Формати октаво.
- •2.3.3. Стилі заголовків
- •Заголовки усередині тексту
- •Постійні й змінні колонтитули
- •Колонцифри
- •Допоміжний текст і підписи до ілюстрацій
- •Вступна й заключна частини
- •Складання підсумкової специфікації
- •2.3.4. Переноси
- •2.3.5. Розділові знаки
- •2.3.6. Зауваження по розмітці сторінки
- •2.4. Підрахунок сторінок тексту
- •2.4.1. Етап 1
- •Гарний матеріал
- •Поганий матеріал
- •2.4.2. Етап 2
- •2.4.3. Етап 3
- •Лекція 17 цифрове фото
- •1. Історія фотографії
- •2. Від плівки до цифрового фото
- •3. Умовна класифікація цифрових фотоапаратів
- •4. Сенсори цифрових фотоапаратів
- •Лекція 18 подання сайту
- •Зменшення швидкості руху
- •Створення кліпу зі зменшенням швидкості руху
- •Додавання змінної швидкості руху
- •Ініціалізація руху клацанням миші
- •Додавання сліду від руху об'єкта
- •Зникнення сліду
- •Підвищення ефективності
- •Покадровое рух
- •Постійна швидкість
- •Коливальний рух
- •Зміна розмірів у русі
- •Керування рухом
- •Ковзання
- •Використання порожніх фільмів
- •Реалізація підходів на практиці
- •Оглядач зображень
Зміна розмірів у русі
До цього моменту ми розглядали різні типи зі стосовно до руху по осях x і y, однак використання цього типу руху не обмежується як тільки цими параметрами. Можна переходити від одного значення до іншому й створювати рух, заснований на зміні розмірів об'єктів.
У даній вправі ми реалізуємо пружний рух, що тільки що було нами розглянуте. Ми будемо визначати координати клацання миші й використовувати їх для визначення розміру, що буде приймати наш фільм.
Створіть файл із фільмом у такий же спосіб, як і в попередніх прикладах, з ім'ям фільму ball_mc, але цього разу розташуєте фільм, указавши значення X = 275 і Y = 200 (біля середини робочого місця).
Ми почнемо з визначення функції mouseDown. Складемо координати X і Y покажчика миші, потім помножимо результат на два й використовуємо його для визначення кінцевого розміру нашого фільму. Якщо користувач клацне на лівому верхньому куті, фільм прийме розмір, дорівнює нулю, а якщо клацання буде в правому нижньому куті, тоді розмір стане рівним 1900, тобто (550+400)*2.
ball_mc.onMouseDown=function(){
this.targetScale=(this._parent._xmouse+this._parent._ymouse)*2
this.onEnterFrame=this.scaleMe
}
Отже, ми взяли це значення й записали його в змінну targetScale фільму.
Тепер нам потрібно визначити функцію scaleMe, що буде змінювати розмір фільму з поточного до кінцевого. Це робиться за допомогою досягнення певної крапки на осях x і y, аналогічного розглянутому раніше. Єдина різниця полягає в тім, що ми будемо змінювати параметри _xscale і _yscale замість _x і _y. Тому що ми хочемо дорівняти _xscale до _yscale, ми можемо проводити всі обчислення з використанням _xscale і потім установити _yscale на таке ж значення:
this.acceleration = 12;
this. friction = 0.8;
ball_mc.scaleMe = function() {
var scaleDiff = this.targetScale-this._xscale;
this.scaleSpeed += scaleDiff/this._parent.acceleration;
this.scaleSpeed *= this._parent.friction;
this._yscale = this._xscale += this.scaleSpeed;
this.checkScale();
};
Перші три рядки функції такі ж, як і раніше - вони обчислюють різницю між поточним розміром і кінцевим розміром, і розраховують, на скільки збільшується scaleSpeed. Потім змінна швидкості зменшується за допомогою множення на константу friction.
У наступному рядку ми робимо дві дії, еквівалентні наступним рядкам.
this._xscale += this.scaleSpeed;
this._yscale = this._xscale;
Коли Flash виявляє рядок коду, аналогічну тої, котру ми використовували в даному прикладі, він починає виконувати дії праворуч ліворуч. Спочатку до змінної швидкості додається _xscale і після цього _yscale прирівнюється до _xscale.
Збережете ваш фільм у файлі scale.fla і запустите його - тепер об'єкт буде приймати різні розміри, залежно від того, на якому місці ви клацніть мишею.
Останнє, що потрібно зробити, це додати функцію checkScale. Вона більш-менш схожа на функцію checkDistance, з якої ми мали справу раніше, і призначена для перевірки того, що розмір фільму більш-менш близький до кінцевого розміру, і що його швидкість майже дорівнює нулю:
ball_mc.checkScale = function() {
if (Math.abs(this.targetScale-this._xscale)<0.2) {
if (Math.abs(this.scaleSpeed)<0.2) {
this._xscale = this._yscale=this.targetScale;
delete this.onEnterFrame;
}
}
};
Незважаючи на те, що ми використовували цей підхід лише для зміни розміру об'єкта, він може також застосовуватися для зміни параметрів _alpha, _rotation або будь-якої іншої властивості вашого фільму.
