Що ж. Відразу скажу - Я не знаю чому x збільшується на дробове число. При моїх спробах збільшувати його на одиницю графік виходив дуже навіть не гладким і це було погано, тому залишив так як відшукав в просторах інтернету. Щоб почати малювати лінію з якоїсь точки можна буде визначити початкову точку, для чого була використана функція moveto Сам графік будується за допомогою циклічного обчислення, адже для кожного значення x потрібно отримати відповідний йому y. значить, щоб не писати всі ці вирази вручну потрібно використовувати цикл.
Всередині циклу викликається функція lineto. всередині якої написані такі параметри, які можуть збити з пантелику бідного новачка, але лякатися не варто.
- lineto креслить лінію від поточної позиції до, але не включаючи в неї, зазначеної точки.
Іншими словами при обчисленні значення y ми будемо отримувати деякі точки, а щоб отримати графік, потрібно ці точки з'єднувати лініями.
x * 50 + getmaxx () / 2 Означає, що первісна точка x зміщена до центру екрану по осі x. Цифра 50 тут потрібна тільки для того щоб розширити мальованої графік. Неважко спробувати її змінити або прибрати, щоб побачити еффект.Когда я намагався прибрати цю 50 і додавати до x одиницю замість 0.02 графік малювався жахливо, хоча якщо подумати, то то що написано тут або те що хотів написати я зводиться до того що x додається на одиницю, але щось ось в цьому є чого я зрозуміти поки що на жаль не можу. Точніше розумію, але розумію якось туманно, в повному обсязі і складно для роз'яснень
Не буду приховувати, сподіваюся на допомогу кого-небудь з читачів, завдяки критиці, благодарностям, вказівкою моїх помилок цей матеріал може стати набагато легше і зрозуміліше. Перевірку на помилки я прибрав, щоб не відволікало очі від описуваного коду
Дякуємо! пишіть далі
Чим менше у нас Х. тим більше точок на лінії ми отримуємо, відповідно більше точок = точніше графік =)
вірніше більше точок з координатами (x * 50 + getmaxx () / 2, getmaxy () / 2 (y * 20)) помістяться на моніторі.
тут вибрано що в одиничному відрізку по Ox поміщається 50 пікселів. а крок за параметром обраний таким чином щоб для кожного пікселя осі х (0.02 * 50 = 1 піксель) розраховувався y.
#include не знаходить пише то помилка що робити. 😥
цей приклад для Borland C ++ 3.1
напевно потрібно ще один приклад шукати.
Не працює. Багато помилок.
Напевно інший компілятор, тому не працює.
А warning - це попередження, а не помилка.
У мене BC и все працює
Напевно інший компілятор, тому не працює. Мій цей приклад тільки для BC ++ 3.1
Ось наприклад, ви оголосили змінну флоат. І передаєте її значення в функцію moveto (), але ця функція може приймати тільки цілі значення. Теж саме з функцією lineto ()
Зручний код. І для Dev-C придався (версія 4.9.9.2)
Дозволю собі дати пояснення по коду:
Пам'ятаємо, нам потрібен графік функції y = x * x, і в коді виконується обчислення y = x * x.
Що це за «додаткові елементи»?
Справа в тому, що система координат графічного вікна строго фіксована, вона відповідає тільки першій чверті математичної декартовій системі. Це означає що на екрані, без «додаткових елементів» ми зможемо дивитися тільки на одну гілку графіка - в позитивній частині осі ОХ. (Звичний, математичний центр системи декартових координат на екрані розміщується в верхньому лівому кутку графічного вікна).
І при цьому графік буде дзеркально відображений вниз - з тієї причини, що у моніторів вважається зворотне (в порівнянні з математичної) напрямок осі ОУ.
Отже: щоб подолати технічні обмеження «комп'ютерної системи координат» потрібно:
1) повернути вісь ОУ в зворотну сторону (просто помножити У на -1)
2) зрушити центр в середину екрану (додати до Х і У половину від ширини і висоти вікна)
3) задати масштаб побудови графіка (застосувати коефіцієнти множення для Х і У).
Ось тепер думаю все зрозуміло:
getmaxx () - функція, яка визначає ширину графічного вікна,
getmaxy () - функція, яка визначає висоту графічного вікна.
50 - множник масштабу по осі ОХ,
20 - множник масштабу по ОУ.
А знак мінус, перед значенням (у * 20), орієнтує графік на екрані у звичному для людини напрямку.