МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра КСА
Пояснювальна записка
до розрахункової роботи
з курсу "Програмування комп'ютерної графіки"
1.1 Завдання
Побудувати графік функції заданої таблично. Масштаб розмітки осей координат графіка повинен відповідати реальним результатам розрахунків. Параметри для побудови графіка визначені у таблиці 2.
Необхідно передбачити плаваючий центр координат – основну частину екрану мають займати ті чверті, в яких знаходиться графік функції.
Завдання для побудови графіку
Таблиця 1
№ варіанту
Функція f(x)
Діапазон зміни аргументу
17
y = ch(x)
[0; 20]
Таблиця 2
№ варіанту
Тип лінії для побудови
Товщина лінії
Колір лінії
17
2
Orange
1.2 Завдання
Створити на екрані комп’ютера графічне вікно і сформувати в ньому рухоме зображення. Вікно розмістити у верхньому правому куті екрану. Навести межі вікна.
Параметри зображення задані в пікселях. Графік і вікно з рухомим зображенням повинні присутні на екрані одночасно.
Завдання для побудови рухомого зображення
№ варіанту
Структура зображення
Пояснення
9
2.1 Розрахунок функціональних залежностей для побудови графіка
Оскільки реальні координати графіка функції, що виводиться на екран можуть бути або значно більшими, або значно меншими за машинні координати екрану монітору, необхідно визначити значення масштабних коефіцієнтів стискання або розтягу для функції, що виводиться на екран.
Протабулюємо задану функцію на проміжку зміни аргументу з метою визначення максимального та мінімального значень функції і аргументу : xmax , xmin, ymax, ymin.
Знайдемо значення масштабуючих коефіцієнтів:
kx = (rect.right - 450) / (xmax - xmin);
ky = (rect.bottom - 50) / (ymax - ymin);
де: rect.right, rect.bottom – координати меж вікна.
Використовуючи обчислені коефіцієнти побудуємо графік функції і осі координат, нанесемо розмітку.
2.2 Розрахунок матриці перетворень для рухомого зображення
Для побудови зображень на екрані комп'ютера використовуються операції переносу, масштабування, повороту та їх композиції.
У своєму завданні я використав формули розрахунку повороту в полярних координатах. Розрахунок повороту в полярних координатах можна виразити наступним чином :
x = rd * sin(angle) + Mx
y = -rd * cos(angle) + My
де:
angle – кут повороту;
М(х,у) – точка відносно якої відбувається операція повороту.
rd – радіус вектор.
У циклі програми, який реалізує рух маятника я скористався цими формулами (координата кінця нитки обчислюються при змінному значенні кута angle, у межах від 30° до 150° і від 150° до 30°, під час руху маятника у напрямі і проти напряму осі ОХ, відповідно):
dx = xc - (radius) * cos(angle);
dy = yc + radius * sin(angle);
де:
(xc, yc) – координати точки відносно якої відбувається поворот підвісу маятника.
Координати вершин спиць кола обчислюються при змінному значенні кута angle_small.
3. Список індентифікаторів програми
Побудова графіка функції:
rect – структура, в якій записані розміри екрана.
rect.bottom, rect.right – нижня та права сторона вікна, відповідає за розміри клієнтського вікна.
rect.top, rect.left – верхня та ліва сторона вікна, рівна 0.
rect.right – змінна яка задає ширину області для побудови графіка функції.
str[192] – масив символів.
kx, ky – коефіцієнт перетворення координат.
x0, y0 – мінімальне значення графіка в машинних координатах по осях x та y відповідно.
x – змінна, з інтервалом зміни від x1 до x2 з кроком h.
y – значення функції.
lx, ly – довжина осі по x та y відповідно.
sx, sy – ціле значення від розбиття осі на 10 частин по x та y, відповідно.
tx, ty – змінна, значення якої відповідає довжині додатної осі по x та від’ємної по y, відповідно.
xc, yc – центр графіка в точці x = 0 по осях x та y, відповідно. Плаваючий центр координат.
xx, yy – змінна, яка відповідає за розбиття графіка на 10 частин по осях x та y, відповідно.
xmax , xmin, ymax, ymin – мінімальне та максимальне значення функції по осях x та y, відпов...