Малюємо графік функції однієї змінної в середовищі програмування delphi

Графік функції доцільно зображувати у вигляді ламаної лінії, яка з'єднує точки, що лежать на графіку. Для того, щоб така кусковолінійна апроксимація давала хороший результат, необхідно, щоб відстань між точками ламаної лінії була достатньо малою.

Для побудови графіка по заданому аналітичному опису функції необхідно обчислити масив значень аргументу і масив відповідних значень функції. Крок зміни аргументу залежить від кількості точок на які розбивають діапазон зміни аргументу і обчислюється за наступною формулою:

Побудова графіка функції

де Побудова графіка функції — крок зміни аргумента; Побудова графіка функції — максимальне значення аргумента; Побудова графіка функції — мінімальне значення аргумента; Побудова графіка функції — задана кількість точок графіка.

Наступним кроком алгоритму побудови графіка є обчислення масиву значень функції Побудова графіка функції, та визначення його мінімального і максимального значення. Дані виличини необхідні для проведення масштабування.

Читати повністю

Алгоритм провірки приналежності точки відрізку

В процесі розробки delphi-проектів, в основу яких закладено взаємодію користувача з графічними примітивами (точками, лініями, еліпсами, прямокутниками), доволі часто виникає потреба виконувати певні дії з активними об'єктами, тобто з об'єктами над яким, наприклад, містииться курсор чи було натиснуто кнопку миші. В такому випадку, перед нами постає задача визначення приналежності точки певному об'єкту. Відмітимо, що з такою проблемою ми зустрічалися при розробці проектів, які реалізують алгоритми на графах, а саме при візуалізації графа. Тобто, при видалення ребра ми розглядали задачу на приналежність точки відрізку, де в якості точки брались координати мишки, а я якості  відрізка — ребро графа. А при переміщенні чи видаленні вершин — задачу на приналежність точки еліпсу.

В даному матеріалі, розглянемо алгоритм, за яким можна перевірити приналежність точки відрізку та створимо delphi-проект який буде змінювати курсор при наведенні мишки на відрізок. Отже, три точки Приналежність точки відрізку лежать на одній прямій, якщо вектори Приналежність точки прямій і Приналежність точки прямій колінеарні, тобто має місце рівність:

Читати повністю

Перехід від одного плану перевезень в транспортній задачі до іншого використовуючи цикл перерахунку

Перерозподіл перевезень в транспортній задачі з метою поліпшення рішення відбувається по циклу (відомий як цикл перерахунку). Даний цикл в транспортній таблиці являє собою сукупність клітинок, з'єднаних замкнутою ламаною лінією, яка в кожній клітинці робить поворот на 90 градусів, і обов'язковою вимогою є те, що в кожному рядку і кожному стовпці, по яких проходить цикл, повинно бути дві і тільки дві вершини. Також слід відмітити, що кожен цикл перерахунку складається з парного числа вершин, одна з яких міститься у вільній клітинці, а інші — у заповнених. Якщо відрізки ламаної лінії перетиноються, то точка перетину вершиною не вважається. Для кожної вільної клітини можна побудувати цикл перерахунку і при чому єдиний.

Графічне представлення циклу перерахунку

Графічне представлення можливих конфігурацій циклу перерахунку

Читати повністю

Побудова графіка функції в середовищі програмування Delphi

Розглянемо delphi-проект "Побудова графіка функції на Delphi", який малює на канві компонента Image графік функції заданої користувачем на заданому відрізку. Масштабування графіка по осі Х здійснюється по заданому відрізку, а по осі Y — по максимальному і мінімальному значенню функції. Для того, щоб задати функцію та діапазон зміни аргумента необхідно у відповідні поля форми вказати формулу, що описує функцію, та проміжок [a; b].

Після того, як всі необхідні параметри задано, переходимо безпосередньо до побудови графіка. Для цього достатньо натиснути кнопку «Побудувати графік функції». В рузультаті в правій частині форми відбудеться автоматична побудова графіка з заздалегідь заданими опціями («Показувати осі координат», «Показувати сітку та числові написи»).

Отже, давайте запустимо даний проект, і з його допомогою спробуємо побудувати графік функції F(x)=3*x-Sin(2*x) на проміжку [-3; 3].

Читати повністю

Матриця повороту. Обертання точки (об'єкта) на площині

Двовимірним поворотом об'єкта називається його переміщення по круговій траєкторії на прлощині. Параметрами даного переміщення є кут повороту Поворот точки на площині і деяка точка Поворот точки на площині — центр обертання, тобто точка навколо якої здійснюється поворот даного об'єкта.

Поворот об'єкта на заданий кут навколо цннтру обертання

Поворот об'єкта на заданий кут навколо цннтру обертання

Для простоти, розглянемо спочатку операцію обертання точки на деякий кут, коли центр обертання міститься в початку системи координат.

Читати повністю

Графічне представлення орієнтованого графа засобами Delphi

В параграфі Графічне представлення графа засобами Delphi ми створили проект, який малював неорієнтований граф на канві компонента Image1. Сьогодні розглянемо алгоритм побудови орієнтованого графа, тобто графа ребрам якого присвоєно певний напрямок. Послідовність дій при побудові вершин орієнтованого графа аналогічна послідовності дій, яку ми здійснювали у випадку неорієнтованого. Проте, процес побудови орієнтованого ребра дещо відрізняється. Для того, щоб нарисувати орієнтоване ребро, будемо використовувати наступний алгоритм: нехай маємо дві вершини графа (зображені у вигляді кола з центром у точках V1 та V2 і радіусом r). Для того, щоб побудувати ребро проведемо від точки V1 до V2 пряму лінію. Далі для того, щоб задати напрямок необхідно знайти точку перетину кола з центром в точці V2 та радіусом r з прямою, яка прорходить через дві точки V1 та V2. В результаті отримаємо деяку точку A. Далі, побудуємо деяке уявне коло з радіусом r1 (на малюнку зображено штрихпунктирною лінією), і знову знайдемо точку перетину даного кола з прямою V1V2. Отримуємо деяку точку B. Після того, як координати точки B відомі, виконуємо поворот даної точки відносно точки A, проти годинникової стрілки на кут l. В результаті отримуємо точку B1. Аналогічно, виконуємо поворот точки B за годинниковою стрілкою — отримуємо точку B2. Таким чином ми отримали трикутник AB1B2, який і буде вказувати напрямок орієнтованого ребра.

Читати повністю

Графічне представлення графа засобами Delphi

Основним питанням, що виникає при розробці алгоритмів для опрацювання графів, є їх візуалізація (графічне представлення). З матемотичної точки зору граф зручно представляти у вигляді матриці суміжності. Проте з практичної точки, його доцільно було б представити у вигляді вершин і ребер на множині точок площини.

В даному параграфі створимо delphi-проект, який для побудови вершини графа буде використовувати наступний алгоритм: при натисканні лівої кнопки миші по робочій області на екрані будуть відображатись вершини графа, нумерація яких здійснюється в порядку зростання.
Після того, як вершини створено, необхідно поєднати їх ребрами. Для того, щоб створити ребро між парою вершин необхідно буде виконати наступні дії: натиснути ліву кнопку миші по першій вершині, після чого, не відпускаючи її, перетягнути курсор на другу вершину. Далі, відпускаємо ліву кнопку миші, і таким чином на екрані відобразиться неорієнтоване ребро.

Читати повністю

« Попередня сторінка