Дигитални диференцијални алгоритам (ДДА) и Бресенхамов алгоритам су алгоритми за цртање дигиталних линија и користе се у рачунарској графици за цртање слика. Раније смо користили аналитичке анализаторе за израчунавање пиксела и на тај начин су омогућени цртежи линија. Али ове аналитичке методе нису тако прецизне као дигиталне методе да помоћу ових дигиталних алгоритама сада и као и на сваком пољу измишљамо методе вишег квалитета и у рачунарској графици. Изум ових алгоритама је савршен пример. Пре него што наставимо, погледајмо концепт који стоји иза ових алгоритама. Иако се чини да није у досегу наше дискусије, кључно је истаћи основне разлике између то двоје. Ако сте заиста упознати са алгоритмима, можете прескочити на стварне разлике које се налазе на крају ове странице.
ДДА се углавном користи за цртање линија у рачунарској графици и користи стварне вредности док предвиђа следеће вредности пиксела. Претпоставимо да је почетна вредност пиксела као (Кс0, И0) (Кс0, И0) и одредишна пиксела као (Кс1, И1) (Кс1, И1). Научићемо како да одредимо вредности одредишних пиксела из познате вредности пиксела (Кс0, И0) (Кс0, И0), као ниже.
Корак 1: Овде имамо улаз (Кс0, И0) (Кс0, И0) и требало би да идентификујемо да ли линија иде паралелно са оси к или оси и. Да бисмо то пронашли, израчунајмо сада разлику између почетне и одредишне вредности пиксела.
дк = Кс1 - Кс0
ди = И1 - И0
Корак 2: Сада смо идентификовали разлику и требало би да нацртамо линију дуж оси к ако је 'дк' једнака нули, требали бисмо повући линију паралелну са оси и. Ево стварног израчунавања рачунарског језика.
ако (апсолутна (дк)> апсолутна (боја))
Кораци = апсолутни (дк);
друго
Кораци = апсолутни (ди);
Корак 3: Сада је вријеме да се идентифицирају стварне координате 'к' или 'и' вриједности пиксела како би се цртала линија.
Кс корак = дк / (плутајући) кораци;
Корак И = кораци ди / (плутају);
4. корак: Ово се мора израчунати док не дођемо до одредишног пиксела. Алгоритам ДДА заокружује вредност пиксела на најближу целу вредност током рачунања. Ево узорка кода о чему смо сада разговарали.
За (инт в = 0; в < Steps; v++)
к = к + Кс прираст;
и = и + И прираст;
путпикел (Роунд (к), Роунд (и));
Завршили смо с цртањем цртећа помоћу ДДА и пређимо сада на Бресенхам'с!
То је такође алгоритам за цртање дигиталних линија, а измислио га је Бресенхам 1962. године и због тога је добио исто име. Овај алгоритам је тачнији и користио је одузимање и збрајање за рачунање вредности пиксела током цртања линије. Тачност Бресенхамовог алгоритма је поуздана и током цртања кривина и кругова. Погледајмо како овај алгоритам функционише.
Корак 1: Бресенхамови алгоритми претпостављају почетну координату пиксела као (ка + 1, иа).
Корак 2: Аутоматски израчунава следећу вредност пиксела као (к)а + 1, иа + 1), Овде је „а“ инкрементална вредност и алгоритам је израчунава додавањем или одузимањем једначина које је створио.
Овај алгоритам израчунава тачне вредности без заокруживања, а такође изгледа и лакше!
Размотримо сада тачке (0,0) и (-8, -4) и повуцимо црту између тих тачака користећи Бресенхамов алгоритам.
На основу података, (к1, и1) = (0, 0) и (к2, и2) = (-8, -4).
Сада ћемо израчунати диференцијалне вредности као ниже.
∆к = к2-к1 = -8-0 = 8
Стога је инкрементална вредност за к = ∆к / к2 = 8 / -8 = -1.
∆и = и2-и1 = -4-0 = 4
Стога је инкрементална вредност за и = ∆и / и2 = 4 / -4 = -1.
Променљива одлука = е = 2 * (∆и) - (∆к)
Стога је е = 2 * (4) - (8) = 8-8 = 0
На основу горњег израчуна израчунајмо резултирајуће вредности. Вриједности и-координате подешавају се на основу варијабле одлуке, а ми овдје само игноришемо њено израчунавање.
Пикел | Икс | и | Променљива одлука |
(0,0) | 0 | 0 | 0 |
(-1,0) | -1 | 0 | Вредност |
(-2, -1) | -2 | -1 | 0 |
(-3, -1) | -3 | -1 | Вредност |
(-4, -2) | -4 | -2 | 0 |
(-5, -2) | -5 | -2 | Вредност |
(-6, -3) | -6 | -3 | 0 |
(-7, -3) | -7 | -3 | Вредност |
(-8, -4) | -8 | -4 | 0 |
ДДА у својим прорачунима користи реалне вредности уз коришћење плутајућих тачака. Следеће вредности пиксела или тачке одређују се диференцијалним једначинама
Корак Кс = дк / (плутајући) кораци
Корак И = корак ди / (плутају)
Овде се не користе фиксне константе, али у Бресенхамовом алгоритму су фиксне тачке коришћене у аритметичким прорачунима. Бресенхамов алгоритам користи аритметику Интегер-а, за разлику од ДДА.
ДДА решава диференцијалне једначине операцијама множења и дељења. Исти сте могли примијетити овдје, кораком Кс = дк / (плутајући) кораци. Бресенхамов алгоритам користи операције додавања и одузимања и то можете приметити овде у његовој следећој једнаџби за рачунање вредности пиксела (ка + 1, иа + 1). Аритметика је у Бресенхаму једноставнија у односу на ДДА.
Као што смо раније расправљали, Бресенхамов алгоритам користи једноставнију аритметику од ДДА и резултира ефикасним резултатима.
Корак Кс = дк / (плутајући) кораци
Могли сте примјетити 'флоат' и зато он не заокружује вриједности док Бресенхамов алгоритам заокружује вриједности на најближи цијели број. Стога су употребљене вредности једноставније у Бресенхамовом алгоритму.
ДДА може цртати кругове и кривине осим цртања линија. Бресенхамов алгоритам такође је способан да извуче све горе поменуто и тачност је стварно већа од ДДА. Слично томе, Бресенхамов алгоритам могао би да има ефикасне кривине од оних које је произвео ДДА. Оба алгоритма могу цртати и троуглове и полигоне.
Како ДДА укључује и заокруживање, скупо је од употребе Бресенхамовог алгоритма.
Из наше горње дискусије јасно је да је Бресенхамов алгоритам оптимизован у погледу брзине, трошкова и употребе операција.
Погледајмо разлике у табеларном облику.
С.Но | Разлике у | Дигитални диференцијални алгоритам | Бресенхамов алгоритам |
1. | Зашто име? | Управо због тога што је дигитална имплементација једнаџби добила је име. | Изумио га је Ј.Е. Бресенхам 1962. године и отуда име. |
2. | Рачунања | То укључује строже рачунање. | Употребљена израчунавања су заиста једноставнија. |
3. | Врсте коришћених операција | Користила је множења и поделе. Овде су коришћене диференцијалне једначине узорка Ксинцремент = дк / (флоат) кораци, Иинцремент = ди / (плутајући) кораци.
| Користи збрајање и одузимање. Примјер израчунавања овдје се може означити као (ка + 1, иа + 1). |
4. | Аритметичке вредности рачунања | Користи вредности с помичним зарезом. | Користи само целе вредности. |
5. | Ефикасност | Сложена аритметика резултира у мањој ефикасности. | Једноставнија аритметика резултира већом ефикасношћу. |
6. | Брзина | Употреба операција множења и дељења захтева много времена за његове процесе рачунања. | Употреба операција сабирања и одузимања захтијева мање времена него ДДА. |
7. | Тачност | Мање је тачности. | Тачније је. |
8. | Заокруживања | Користи стварне вредности и никада их не заокружује. | Заокружује вредности до најближих целих вредности. |
9. | Способност цртања | Може цртати линије, кругове и кривине, али са мањом тачношћу. Помоћу овог алгоритма можемо чак и нацртати троуглове и полигоне. | Може да црта линије, кругове и кривине са већом ефикасношћу. Помоћу овог алгоритма могу се цртати и троуглови и полигони. |
10. | Трошкови рачунања | Скупо је, јер укључује и заокруживање. | Употреба Бресенхамовог алгоритма јефтинија је од ДДА. |
11. | Оптимизирани алгоритам | То није оптимизовани алгоритам | То је оптимизовани алгоритам. |
Бавили смо се сваком могућом разликом између ДДА и Бресенхамовог алгоритма. Можда се чини да се понавља, али постоји неки ваљан разлог да се поново спомињу те тачке и то бисте сазнали када је потпуно разумете. Ако и даље сматрате да постоји двосмисленост, оставите нам коментар. Научимо заједно дијељењем одговарајућег знања!