МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра КСА
Пояснювальна записка
до розрахункової роботи
з курсу "Програмування комп'ютерної графіки"
Перевірив:
старший викладач Іванюк О.О.
1.1 Завдання
Побудувати графік функції заданої таблично. Масштаб розмітки осей координат графіка повинен відповідати реальним результатам розрахунків. Параметри для побудови графіка визначені у таблиці 2.
Необхідно передбачити плаваючий центр координат – основну частину екрану мають займати ті чверті, в яких знаходиться графік функції.
ЗАВДАННЯ по графіку
Таблиця 1
№ варіанту
Функція f(x)
Діапазон зміни аргументу
3
z = tg(x)
[-0.49*π ; 0.49*π]
Таблиця 2
№ варіанту
Тип лінії для побудови
Товщина лінії
Колір лінії
3
4
Red
1.2 Завдання
Створити на екрані комп’ютера графічне вікно і сформувати в ньому рухоме зображення. Вікно розмістити у верхньому правому куті екрану. Навести межі вікна.
Параметри зображення задані в пікселях. Графік і вікно з рухомим зображенням повинні присутні на екрані одночасно.
ЗАВДАННЯ по анімації
№ варіанту
Структура зображення
Пояснення
23
Коло з чотирма спицями скочується по сходинках.
Параметри: а = 40, L=70, d = 18.
2.1 Розрахунок функціональних залежностей для побудови графіка
Оскільки реальні координати графіка функції, що виводиться на екран можуть бути або значно більшими, або значно меншими за машинні координати екрану монітору, не-
обхідно визначити значення масштабних коефіцієнтів стискання або розтягу для функції, що виводиться на екран.
Протабулюємо задану функцію на проміжку зміни аргументу з метою визначення максимального та мінімального значень функції і аргумента : xmax , xmin, zmax, zmin.
Знайдемо значення масштабуючих коефіцієнтів:
kx = (rectright - 50) / (xmax - xmin);
kz = (rect.bottom - 50) / (zmax - zmin);
де: rectright, rect.bottom – координати меж вікна.
Використовуючи обчислені коефіцієнти побудуємо графік функції і осі координат, нанесемо розмітку.
2.2 Розрахунок матриці перетворень для рухомого зображення
Для побудови зображень на екрані комп'ютера використовуються операції переносу, масптабування, повороту та їх композиції.
У своєму завданні я вирішив скористатись формулами розрахунку повороту в полярних координатах. Це передусім повязано з простотою їх використання.
Розрахунок повороту в полярних координатах можна виразити наступним чином :
x = rd * sin(angle) + Mx
y = -rd * cos(angle) + My
де:
angle – кут повороту;
М(х,у) – точка відносно якої відбувається операція повороту.
rd – радіус вектор.
У циклі програми, який реалізує рух обєкта прямолінійно я скористався цими ж формулами:
circleX = rd * sin(angle2) + rect.right - mx + step;
circleY = -rd * cos(angle2) + rect.top + my;
де:
(rect.right – mx, rect.top + my) – координати точки відносно якої відбувається рух.
Обчислення координати рухомої точки обчислюються при постійному значенні angle2 = 90 °:
sin(angle2) = cos(angle2) = 1
Тому точка не повертається, а рухається прямолінійно.
Координати вершин спиць, і координати цента при падінні обєкта обчислюються при змінному значенні кута angle. Тому в цьому випадку відбувається поворот точки на певний кут.
3. Список індетифікаторів програми
Побудова графіка функції:
rect – структура, в якій записані розміри екрана.
rect.bottom, rect.right – нижня та права сторона вікна, відповідає за розміри клієнтського вікна.
rect.top, rect.left – верхня та ліва сторона вікна, рівна 0.
rectright – зміння яка задає ширину області для побудови графіка функції.
str[192] – массив символів.
kx, kz – коефініент перетворення координат.
x0, z0 – мінімальне значення графіка в машинних координатах по осях x та y відповідно.
x – змінна, з інтервалом зміни від x1 до x2 з кроком h.
z – значення функції.
lx, lz – довжина осі по x та z відповідно.
sx, sz – ціле значення від розбиття осі на 10 частин по x та z відповідно.
tx, tz – змінна, значення якої відповідає довжині додатної осі по x та від’ємної по z відповідно...