Ах + Ву + С < 0, (1.4)
Якщо прийняти, яка з цих півплощин розміщена зліва, а яка справа від прямої, то цим самим можна орієнтувати пряму (1.2). Для зміни напряму прямої (1.2) на протилежний треба обидві частини рівняння (1.2) помножити на -1. При цьому півплощини (1.3) і (1.4) поміняються місцями.
Сукупністю нерівностей, кожна з яких задає півплощину, задають область, обмежену опуклим багатокутником на площині, якщо кількість нерівностей менша від трьох. При цьому можна використовувати нерівності лише одного знака.
Наприклад, внутрішність квадрата, зображеного на рис. 1.4 моделюється системою нерівностей
-у + 2 > 0, -х + 2 > 0, у + 2 > 0, х + 2 > О, (1.5)
а зовнішність квадрата, зображеного на рис. 1.5, — системою нерівностей.
у - 1 > 0, х - 1 > 0, -у - 1 > 0, -х - 1 > О, (1.6)
"Кільцева" область (рис. 1.6), яка обмежена двома попередніми квадратами моделюється системою з восьми нерівностей (1.5) і (1.6).
Обчислення координат точки перетину двох прямих. Якщо прямі задані формою (1.2)
А1х+В1у+С1 =0, (1.7)
А2х+ В2у+ С2=0,
то координати точки перетину їх обчислюють за формулами
(1.8)
Якщо D = 0, а Dx ¹О або D y¹0, то прямі паралельні.
Якщо D=0, Dx= О, Dy= 0, то прямі збігаються.
Рівняння прямої, що проходить через дві точки, має вигляд
(1.9)
Це рівняння доцільно застосовувати тоді, коли впорядкована послідовність точок сполучається ламаною. Ця послідовність задається масивами координат хi, уi
(і =1,2, ..., n). Рівняння ланок ламаної дістанемо у вигляді
(1.10)
Рівняння (1.9) можна звести до вигляду (1.1), якщо обчислити k і b за формулами
(1.11)
та до вигляду (1.2), якщо обчислити А, В і С за формулами
(1.12)
Розглянемо ще параметричну форму за-дання прямої. Запишемо рівняння (1.9) у
вигляді
(1.13)
Звідси
, (1.14)
де s є параметром. Якщо s = 0, то x = x1| , у = y1. Якщо s = 1, то x2 = х, у = у2. Якщо
О <д< 1, то точка лежить усередині відрізка (x1 , y1), (y2, x2). Якщо s<0 або s >1, то точка лежить зовні відрізка.
Параметричне рівняння (1.14) застосовують у багатьох алгоритмах комп'ютерної графіки: в алгоритмі покриття області штриховкою, в алгоритмах визначення видності — рухомого та нерухомого екранів тощо.
Нехай область, яку треба покрити штриховкою (рис. 1.7), задана масивами координат (x1,y2), (x2,y2) (і = 1, 2, 3, 4). Рівняння ланок, що обмежують область, дістанемо у вигляді (1.10) при i = 1, 2, 3, 4. Визначивши iнтервал, який пробігає параметр b у рівнянні (1.1) сім'ї ліній штриховки, задамо крок зміни b. На кожному кроці треба розв'язати систему чотирьох рівнянь (1.10) і (1.1). У результаті дістанемо координати точок I…IV. Підставимо у формули (1.14) замість х та у знайдені координати хnj та ynj. Матимемо
. (1.15)
Якщо хі+1-хі= 0, то слід скористатися другою формулою з (1.15), а якщо уі+1-уі= 0, то - першою.
У результаті для точок ІІ і ІІІ дістанемо значення s2 та s3 за межами інтервалу
0<s<1, тобто їх не враховують при визначенні того відрізка лінії штриховки що належить області.
Полярні параметри прямої. Відстань р початку координат від прямої (1.2) та кут між віссю Ох і відрізком перпендикуляра ОК (рис. 1.8) називають полярними параметрами прямої.
Відстань р визначають за формулою
. (1.16)
Кут t визначають не безпосередньо, а за допомогою функцій синуса та косинуса:
(22.17)
Умова паралельності прямих (1.7) випливає з формул (1.8) при D= 0:
A1B2-B1A2 (1.18)
Умова перпендикулярності прямих (1.7):
A1A2+B1B2 =0 (1.19)
Рівняння прямої, яка проходить через точку М(х1, у1) і перпендикулярна до прямої (1.2):
А(у –у1)- В(х-х1)=0. (1.20)
Відстань точки М (х1,у1) до прямої (1.2):
(1.21)
Якщо в цю формулу підставити координати початку 0(0.0), то відстань d матиме знак С, чим і пояснюється знак абсолютної величини. Точки, розміщені по той самий бік від прямої що й початок координат, дають той самий знак для d. Точки. розміщені по різні боки від прямої, дають протилежні знаки для d. Тому відстань d називають орієнтованою.
Коло
Рівняння кола, центр якого збігається з початком координат, має вигляд
х2+у2=R2. (1.22)
У параметричній формі
x=Rcost, y=Rsint, (1.23)
де t — кут між Ох та радіусом-вектором точки.
Якщо центр кола має координати (а, b) то рівнянням кола є (рис. 1.6):
(х - а)2 + (у - b)2 = R2 (1.24)
та
х = а + Rсоst, у = b + Rsint . (1.25)
Орієнтація кола. Перейдемо від форми задання (1.22) чи (1.24) до неявної форми задання:
x2 +y2-R2=0, (1.26)
(x-a)2+(y-b)2-R2=0. (1.27)
Якщо координати точок, які лежать усередині кола, підставити в рівняння (1.26) або (1.27), то матимемо зміну знака ''=" на "<".
Можна вважати, що коло (1.26) або (1.27) має такий напрям, що точки, координати яких змінюють знак "=" на знак "<" у рівнянні (1.26) чи (1.27), розміщені, наприклад, зліва від напряму кола, тим самим визначити його орієнтацію. Щоб змінити напрям кола на протилежний, треба помножити рівняння на -1. Тоді матимемо
-x2-y2+R2=0, або –(x-a)2-(y-b)2+R2 = 0.
Поділ кола на рівні частини. Щоб поділити коло на n рівних частин, треба ввести параметр s:
(1.28)
Кутониіі параметр точок поділу
ti=2psi (1.29)
Змінюючи i від 1 до n + 1 обчислюємо спочатку si за формулою (1.28), а потім ti, за формулою (1.29). Підставивши ti, у рівняння (1.23) або (1.25), знайдемо координати xi, yi точок поділу.
Перша точка поділу (і = 1, si = 0, ti = 0) збігається з останньою (i=n+ 1, si = 1, ti = 2p). Цей збіг, як і кінцеве значення i=n+ 1 зроблено навмисно: при кресленні кола чи багатокутника графопобудовником креслярський пристрій міститься у початковій точці двічі — на початку та наприкінці креслення.
Наведений алгоритм застосовують у програмах креслення правильних багатокутників і кіл. У другому випадку n вибирають значно більшим, щоб візуально багатокутник не відрізнявся від кола.
Дуга (відрізок) кола. Параметрами, що визначають будь-яку дугу кола є: хс, ус- координати центра; R—радіус; tп —кутовий параметр початкової точки дуги; tд —
центральний кут, що охоплює дугу, або кутовий параметр дуги. Кути tп та tд орієнтовані. Перший — від напряму +х до радіуса-вектора початкової точки, другий від радіуса-вектора початкової до радіуса-вектора кінцевої точки. Якщо вини спрямовані проти ходу годинникової стрілки, то значення беруть зі знаком "+", а якщо за ходом - зі знаком "-".
Поділ дуги кола на рівні частини. Наведений вище алгоритм для кола треба модернізувати, замінивши формулу (1.29) на
t= tп (1-s)+( tд+ tд) (1.30)
Решта — без змін. На цьому алгоритмі грунтується програма креслення дуги кола.
Перетин кола та прямої. Щоб знайти координати точок перетину прямої (див-рис. 1.9), заданої у формі (1.2)
Ах + Ву + С = 0, (1.31)
та кола, заданого формою (1.25), знайдемо рівняння прямої у локальній системі х'О'у’ з початком у центрі кола О' (a,b) (рис. 1.9). За формулами рівняння прямої у локальній системі х'О'у'
А(х' +a)+ В(у'+b)+ С=0 або
Ах' + Ву' + С + Аа + Вb = 0. (1.32)
Згідно з (1.16) та (1.17) визначимо полярні параметри прямої (1.32) у системі х'О'у'
,
(1.33)
.
Очевидно, якщо p > R, то розв'язків не існує, якщо р = R, то маємо один розв'язок (дотик), Знайдемо синус та косинус кута
(22.34)
Координати точок перетину прямої з колом у системі
(1.35)
де .
Координати точок перетину у системі хОу маємо
(1.36)
Пряма, дотична до кола та паралельна заданій прямій. Форми задання прямої та кола, віднесення їх до локальної системи х'О'у' та вирази (1.32) і (1.33) такі самі, як і в попередньому алгоритмі. Для дотичних прямих р = R, а кутовий параметр однієї з точок дотику дорівнює куту нахилу до осі О'х' полярного параметра р. Звідси координати точки дотику однієї з шуканих прямих у системі х'О'у' є такими:
(1.37)
де cost і sint визначають за формулами (1.33). Координати точки дотику другої прямої у системі х'О'у'
(1.38)
знаходимо як для точки, симетричної точці () відносно початку О'.
Перехід у глобальну систему хОу здійснюється ча формулами (1.36). Якщо хі, уі— знайдені координати точок дотику у системі хОу, то рівняння дотичних прямих дістанемо у вигляді
А(х +х1)+В(у-уі)= О (і= 1,2), (1.39)
тобто коефіцієнти А і В такі самі, як і в рівнянні заданої прямої, а вільний член С набуває значення
Сі= -Ахі - Вуі. (1.40)
Перетин двох кіл. Розглянемо спочатку випадок окремого розміщення кіл, коли центр першого збігається з початком, а центр другого лежить на осі Ох (рис. 1.10). Задача має два розв'язки, якщо міжцентрова відстань d задовольняє умові (при R1 > R2)
.
Тут не розглядаємо тривіальні випадки, коли d=R1-R2 або d= R1+R2.
Рівняння першого кола (1.41)
Рівняння другого кола (1.42)
Координати шуканих точок перетину знайдемо як розв'язок системи рівнянь (1.41) і (1.42).
2ах – а2 = ,
звідки
(1.43)