Реферат: Комп ютерна графіка 2
Поділ дуги кола на рівні частини . Наведений вище алгоритм для кола треба модернізувати, замінивши формулу (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)
У загальному випадку розміщення (рис. 1.11) при заданих координатах центрів і радіусах знаходимо міжцентрову відстань
(1.44)
та компонент повороту локальної системи з початком у центрі першого кола й віссю 0'х’, що збігається з 01 02 , відносно глобальної системи хОу :
t=f(x,y). (1.45)
Далі знаходимо xn1,2 , yn1,2 за формулами (1.43) у локальній системі та зводимо результат до глобальної системи, враховуючи, що х1=х0, у0=у1, a=t.
Задача спряження двох кіл третім
Задача спряження двох кіл третім зводиться до побудови кола, дотичного до двох заданих кіл. При цьому радіус шуканого кола задано, а треба знайти його центр і точки спряження.
Розв'язати цю задачу креслярськими приладами нескладно. Певні труднощі виникають при розробці програмного розв'язування цієї задачі засобами комп'ютерної графіки.
Загальна вимога до програмного забезпечення розв'язування будь-якої задачі — включати аналіз сумісності поставлених умов. Це означає, що перш ніж застосувати алгоритм розв'язку, треба визначити, яким умовам мають відповідати вхідні дані.
У задачі спряження формулювання умов сумісності вхідних даних та складання алгоритму розв'язування виникають труднощі, спричинені багатоваріантністю.
Як відомо, дотик двох кіл може бути зовнішнім або внутрішнім. У загальному випадку існує чотири варіанти дотику шуканого кола з двома заданими. Ці варіанти формалізуються наданням знака "-" чи "+" радіусам заданих кіл. Якщо дотик відповідного кола і шуканого с зовнішнім, то його радіус від'ємний, а якщо внутрішнім, то додатний.
Ще два варіанти, що відрізняються розміщенням центра шуканого кола відносно лінії центрів заданих кіл, формалізуємо наданням знака радіусу спряжувального кола. Якщо центри О1 і О2 заданих кіл не збігаються, то радіус спряжувального кола додатний, коли його центр лежить зліва, та від'ємний, коли його центр лежить справа від вектора 0102.
Центр спряжувального кола, його радіус і точки спряження ще не однозначно визначають кутовий параметр спряжувальноЇ дуги. Точки дотику поділяють спряжувальне коло на дві дуги, сума яких дорівнює 2п. Отже значенням коефіцієнта k можна поставити у відповідність кожну з двох дуг спряжувального кола. Наприклад, значенню k = 0 відповідає менша дуга, k = 1 — більша.
Алгоритм розв'язання в цілому наводимо з урахуванням прийнятої формалізації.