
- •Конспект лекцій
- •Теми лекцій
- •Лекція 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, і т.д. Насправді, у випадку з даною зі швидкості, фільм ніколи не досягає своєї кінцевої мети, а лише нескінченно наближається до неї доти, поки відстань не стане пренебрежимо малим.
Якщо повернутися до вихідного приклада об'єкта, що рухається від 0 до 200, з розбивкою кожного відрізка дистанції на дві частини, то для кожного кадру будуть наступні позиції: 100, 150, 175, 187,5, 193,75, 196,875, 198,4375, 199,21875, 199,609375, 199,8046875. Це називається парадоксом Зено, що полягає в тім, що якщо об'єкт завжди переміщається на половину попередньої дистанції, то він ніколи не досягне мети, всі наближаючись і наближаючись до неї. Тому що неможливо розділити на дві частини один пиксель, картинка буде здаватися нерухливої, однак ActionScript цього не враховує. Замість того щоб перевіряти, чи перебуває фільм у своєму кінцевому положенні, ми будемо перевіряти, чи перебуває він поруч зі своєю метою, і чи менше заданого відстань між об'єктом і його метою. При підході об'єкта до кінцевої крапки можна зупинити його, видаливши керуючий елемент onEnterFrame.
Почавши з нашого попереднього коду, ми додамо нову функцію checkDistance для перевірки того, чи є відстань меншим, ніж певне число. Фільм потім перейде у своє кінцеве положення, і функція, привласнена onEnterFrame, буде вилучена. Додайте наступний код після вже наявної програми:
ball_mc.checkDistance = function() {
// check movieclip is within 0.2 pixels of target
if (Math.abs(this.target-this._x)<0.2 && Math.abs(this.target-this._y)<0.2) {
this._x = this.target;
this._y = this.target;
delete this.onEnterFrame;
}
};
Насамперед, у нас є умовне вираження, що перевіряє, чи перебуває фільм усередині відрізка довжиною 0,2 пикселя від мети. У коді this.target-this._x представлена відстань від фільму до мети по осі X, і ми використовуємо Math.abs для перетворення цього значення в позитивне, тому що байдуже, праворуч або ліворуч перебуває фільм від кінцевої крапки, тобто між -0,2 і +0,2. Нарешті, у функції moveToMouse ми додаємо виклик функції checkDistance:
ball_mc.moveToMouse = function() {
this._x += (this.target-this._x)/this._parent.speed;
this._y += (this.target-this._y)/this._parent.speed;
this.duplicate();
this.checkDistance();
};
Виконання цього коду приведе до того ж результату, що й у випадку з попереднім файлом. Однак якщо вибрати команду Debug>List Variables у режимі Test Movie після закінчення фільму, ви побачите, що дублікати відсутні, і фільм ball_mc не має функції onEnterFrame. По великому рахунку, у нашім фільмі нічого не відбувається - він просто перебуває чекаючи клацання миші, щоб запуститися знову.
Давайте тепер перейдемо до розгляду того, як можна створити постійне, засноване на часі, рух.