Міністерство освіти та наукиУкраїни
Національний університет “Львівська політехніка”
Графічно-розрахункова робота № 1
з курсу «Програмування комп’ютерної графіки»
варіант 16 -16 -10
Львів 2014
Завдання
Побудувати графік функції заданої таблично. Масштаб розмітки осей координат графіка повинен відповідати реальним результатам розрахунків.
Параметри для побудови графіка визначені у таблиці 2.
Необхідно передбачити плаваючий центр координат – основну частину екрану мають займати ті чверті в яких знаходиться графік функції.
Завдання для побудови графіку
Таблиця 1
№ варіанту
Функція f(x)
Діапазон зміни аргументу
16
y=arcsin(x)
[-0,95;0,95]
Таблиця 2
№ варіанту
Тип лінії для побудови
Товщина лінії
Колір лінії
16
______________
3
Red
Завдання
Створити на екрані комп’ютера графічне вікно і сформувати в ньому рухоме зображення. Вікно розмістити у верхньому правому куті екрану. Навести межі вікна.
Параметри зображення задані в пікселях. Графік і вікно з рухомим зображенням повинні бути присутні на екрані одночасно.
Завдання для побудови зображення
№ варіанту
Структура зображення
Пояснення
10
/
Плавний рух стрілок годинника з правильним показом часу.
Кольори стрілок різні.
Параметри: R=80
2.1 Розрахунок функціональних залежностей для побудови графіка
Оскільки реальні координати графіка функції, що виводяться на екран можуть бути або значно більшими, або значно меншими за машинні координати монітору, необхідно визначити значення масштабних коефіцієнтів стискання або розтягу для функції що виводяться на екран.
Протабулюємо задану функцію на проміжку зміни аргументу з метою визначення максимального та мінімального значень функції і аргументу: xmax , xmin , ymax , ymin.
Знайдемо значення масштабуючи коефіцієнтів:
kx = (xm2 - 50) / (xrmax - xrmin);
ky = (ym2 - 50) / (yrmax - yrmin);
Використовуючи обчислені коефіцієнти побудуємо графік функції і осі координат, нанесемо розмітку.
2.2 Розрахунок матриці перетворень для рухомого зображення
Для побудови зображень на екрані комп’ютера використовується операція переносу, масштабування, повороту та їх композицій.
У моїй програмі використовуються такі формули розрахунку переносу:
zmyn = r - r*cos(kuth*pi / 180);
zmxn = r*sin(kuth*pi / 180);
3. Список ідентифікаторів програми
Побудова графіка функцій:
rect – структура, в якій записані розміри екрана.
rect.bottom, rect.right – нижня та права сторона вікна, відповідає за розміри клієнтського вікна.
rect.top, rect.left – верхня та ліва сторона вікна, рівна 0.
rectright – зміння яка задає ширину області для побудови графіка функції.
str[192] – массив символів.
kx, ky – коефініент перетворення координат.
x0,y – мінімальне значення графіка в машинних координатах по осях x та y відповідно.
x – змінна, з інтервалом зміни від x1 до x2 з кроком h.
y – значення функції.
lx, ly – довжина осі по x та z відповідно.
sx, sy – ціле значення від розбиття осі на 10 частин по x та z відповідно.
tx, ty – змінна, значення якої відповідає довжині додатної осі по x та від’ємної по z відповідно.
xc, yc – центр графіка в точці x=0 по осях x та z відповідно. Плаваючий центр координат.
xx, yy – змінна, яка відповідає за розбиття графіка на 10 частин по осях x та z відповідно.
xmax , xmin, ymax, ymin – мінімальне та максимальне значення функції по осях x та z відповідно.
txp, txm, typ, tym – змінні, які визначають положення тексту розмітки осей у додатному та від’мному напрямках x та y відповідно.
Побудова анімації:
R – радіус маятника.
kuth, kutm, kuts, – кут, на який повертається нитка маятника.
zmxn, zmyn – матриця руху.
Команди і функції:
GetClientRect(&rect) – команда для запису розмірів екрана в структуру rect.
swprintf_s() – записує значення змінної в масив str.
TextOut() – виводить значення змінної по заданих координатах.
MoveTo(x, y) – переміщує поточну вершину, змінна x, y визначають координати нової поточної вершини.
LineTo(x, y) – будує лінію з поточної вершини у точку з координатами x, y.
Rectangle...