DDA ve Bresenham Algoritması Arasındaki Fark

Dijital Diferansiyel Algoritması (DDA) ve Bresenhams Algoritması, dijital çizgi çizim algoritmalarıdır ve bilgisayar grafiklerinde resim çizmek için kullanılır. Daha önce, pikselleri hesaplamak için analitik analizörler kullanıyorduk ve böylece çizgi çizimleri mümkün oluyordu. Ancak bu analitik yöntemler, günümüzde ve her alanda olduğu gibi bu dijital algoritmaların kullanımıyla da bilgisayar grafiklerinde daha yüksek kaliteli yöntemler icat ettiğimiz dijital yöntemler kadar doğru değildir. Bu algoritmaların icadı mükemmel bir örnektir. Devam etmeden önce, bu algoritmaların arkasındaki konsepte bakalım. Tartışmamızın kapsamı dışında görünse de, ikisi arasındaki temel farklılıklara dikkat etmek önemlidir. Algoritmalara gerçekten aşina iseniz, bu sayfanın sonunda bulunan gerçek farklılıklara atlayabilirsiniz.

Dijital Diferansiyel Algoritma (DDA) nedir?

Bir DDA çoğunlukla bilgisayar grafiklerinde çizgi çizmek için kullanılır ve sonraki piksel değerlerini tahmin ederken gerçek değerleri kullanır. İlk piksel değerini (X0, Y0) (X0, Y0) ve hedef pikseli (X1, Y1) (X1, Y1) olarak kabul edelim. Aşağıdaki gibi bilinen piksel değerinden (X0, Y0) (X0, Y0) hedef piksel değerlerinin nasıl hesaplanacağını öğreneceğiz.

  • Hedef nokta değeri DDA kullanılarak nasıl hesaplanır?

Aşama 1: Burada (X0, Y0) (X0, Y0) girişine sahibiz ve çizginin x eksenine mi yoksa y eksenine paralel mi çalıştığını tanımlamalıyız. Bunu bulmak için, şimdi başlangıç ​​ve hedef piksel değerleri arasındaki farkı hesaplayalım.

dx = X1 - X0

dy = Y1 - Y0

Adım 2: Şimdi, farkı belirledik ve eğer 'dx' sıfırsa çizgiyi x ekseni boyunca çizmeliyiz, aksi takdirde çizgiyi y eksenine paralel olarak çizmeliyiz. İşte bilgisayar dili açısından gerçek hesaplama.

if (mutlak (dx)> mutlak (dy))

Adımlar = mutlak (dx);

Başka

Adımlar = mutlak (dy);

Aşama 3: Şimdi, çizgi çizmek için gerçek 'x' koordinatını veya 'y' koordinat piksel değerlerini belirleme zamanı.

X artışı = dx / (float) adımları;

Y artışı = dy / (şamandıra) adımları;

Adım 4: Hedef piksele ulaşana kadar bu hesaplanmalıdır. DDA algoritması, hesaplama yaparken piksel değerini en yakın tamsayı değerine yuvarlar. İşte şimdi tartıştıklarımızın kod örneği.

(İnt v = 0; v için < Steps; v++)

x = x + X artışı;

y = y + Y artışı;

putpiksel (Yuvarlak (x), Yuvarlak (y));

DDA'yı kullanarak çizgiyi çizmeyi bitirdik ve şimdi Bresenham'ın!

Bresenham Algoritması nedir?

Aynı zamanda dijital bir çizgi çizme algoritmasıdır ve 1962 yılında Bresenham tarafından icat edilmiştir ve bu yüzden aynı isme sahiptir. Bu algoritma daha doğrudur ve çizgi çizerken piksel değerini hesaplamak için çıkarma ve toplama kullanılmıştır. Bresenham algoritmasının doğruluğu, eğriler ve daireler çizerken de güvenilirdir. Bu algoritmanın nasıl çalıştığına bakalım.

Aşama 1: Bresenham'ın algoritmaları ilk piksel koordinatını (xa + 1, ybir).

Adım 2: Bir sonraki piksel değerini otomatik olarak (xa + 1, ya + 1), Burada 'a' artan değerdir ve algoritma oluşturduğu denklemleri ekleyerek veya çıkararak bu değeri hesaplar.

Bu algoritma yuvarlamadan doğru değerleri hesaplar ve daha kolay görünür!

  • Bresenham Algoritmasının Sayısal Örneği:

Şimdi (0,0) ve (-8, -4) noktalarını ele alalım ve Bresenham algoritmasını kullanarak bu noktalar arasında bir çizgi çizelim.

Verilen veriler, (x1, y1) = (0, 0) ve (x2, y2) = (-8, -4).

Şimdi diferansiyel değerleri aşağıdaki gibi hesaplayalım.

Ax = x2-x1 = -8-0 = 8

Bu nedenle, x = ∆x / x2 = 8 / -8 = -1 için artımlı değer.

Δy = y2-y1 = -4-0 = 4

Bu nedenle, y = ∆y / y2 = 4 / -4 = -1 için artımlı değer.

Karar Değişkeni = e = 2 * (∆y) - (∆x)

Bu nedenle, e = 2 * (4) - (8) = 8-8 = 0

Yukarıdaki hesaplama ile, sonuç değerlerini sıralayalım. Y koordinatının değerleri bir karar değişkenine göre ayarlanır ve burada hesaplamasını görmezden geliriz.

Piksel x y                                              Karar değişkeni
(0,0) 0 0 0
(-1,0) -1 0 Bir değer
(-2, 1) -2 -1 0
(-3, -1) -3 -1 Bir değer
(-4, -2) -4 -2 0
(-5, -2) -5 -2 Bir değer
(-6, -3) -6 -3 0
(-7-3) -7 -3 Bir değer
(-8, -4) -8 -4 0

DDA ve Bresenham Algoritması arasındaki farklar:

  • Aritmetik Hesaplama:

DDA, hesaplamalarında kayan noktaların kullanımı ile gerçek değerleri kullanır. Sonraki piksel veya nokta değerleri diferansiyel denklemlerle belirlenir

X artışı = dx / (float) adımları

Y artışı = dy / (float) adımları

Burada sabit sabitler kullanılmaz, ancak Bresenham'ın algoritmasında aritmetik hesaplamalarda sabit noktalar kullanılır. Bresenham'ın algoritması, DDA'nın aksine Tamsayı aritmetiği kullanıyor.

  • Kullanılan operasyon tipi:

DDA diferansiyel denklemleri çarpma ve bölme işlemleriyle çözer. Aynı şeyi burada görebilirsiniz, X artışı = dx / (float) adımları. Bresenham'ın algoritması toplama ve çıkarma işlemlerini kullanır ve burada bir sonraki piksel değeri hesaplama denkleminde (xa + 1, ya + 1). Bresenham'larda aritmetik, DDA'ya göre daha basit.

  • verimlilik:

Daha önce tartıştığımız gibi, Bresenham'ın algoritması DDA'dan daha basit aritmetik kullanıyor ve verimli sonuçlar veriyor.

  • hız: DDA, çarpma ve bölme işlemleriyle birlikte kayan nokta tamsayıları kullandığından, nispeten daha yavaştır, oysa Bresenham'ın algoritması sadece toplama ve çıkarma ile birlikte tamsayı aritmetiği kullanır. Bu hesaplamaları için harcanan zamanı önemli ölçüde azaltır ve dolayısıyla DDA'dan daha hızlıdır.
  • Doğruluk: DDA kayan nokta değerleri kullansa da, DDA'nın doğruluğu Bresenham'ınki kadar iyi değildir. Bu kavramı çeşitli faktörler etkiler ve bu nedenle Bresenham'ın DDA'dan daha doğru olması.
  • Yuvarlama: Burada DDA'nın hesaplamasına bakın..

X artışı = dx / (float) adımları

'Float' fark edebilirsiniz ve bu nedenle değerleri yuvarlamaz, oysa Bresenham'ın algoritması değerleri en yakın tamsayıya yuvarlar. Bu nedenle, kullanılan değerler Bresenham'ın algoritmasında daha basittir.

  • Ne çiziyor?

DDA, çizim çizgileri dışında daire ve eğriler çizebilir. Bresenham'ın algoritması da yukarıda belirtilenlerin hepsini çizebilir ve doğruluğu DDA'nınkinden gerçekten daha yüksektir. Benzer şekilde, Bresenham'ın algoritması DDA tarafından üretilenlerden daha verimli eğriler ortaya çıkarabilir. Her iki algoritma da üçgen ve çokgen çizebilir.

  • Hangisi pahalı?

DDA yuvarlamayı da içerdiğinden, Bresenham algoritmasının kullanımından daha pahalıdır.

  • Hangi optimize edilmiş bir algoritma?

Yukarıdaki tartışmamızdan hareketle, Bresenham'ın algoritmasının hız, maliyet ve işlemlerin kullanımı açısından optimize edilmiş olduğu çok açıktır..

Farklılıklara tablo biçiminde bakalım.

S.No Farklılıklar Sayısal Diferansiyel Algoritması Bresenham Algoritması
1. Neden isim? Denklemlerin dijital uygulaması olduğu için,. 1962 yılında J.E. Bresenham tarafından icat edildi ve böylece adı.
2. hesaplamalar Daha zorlu hesaplamaları içerir. Kullanılan hesaplamalar gerçekten daha basit.
3. Kullanılan operasyon türleri Çarpma ve bölmeler kullandı. Burada kullanılan örnek diferansiyel denklemler Xincrement = dx / (float) basamaklarıdır,

Yincrement = dy / (şamandıra) adımları.

Toplama ve çıkarma kullanır. Buradaki örnek hesaplama, (xa + 1, ya + 1).
4. Aritmetik hesaplama değerleri Kayan nokta değerleri kullanır. Yalnızca tam sayı değerlerini kullanır.
5. verim Karmaşık aritmetik daha düşük verimlilik sağlar. Daha basit aritmetik daha fazla verimlilik sağlar.
6. hız Çarpma ve bölme işlemlerinin kullanımı hesaplama süreçleri için çok zaman alır. Toplama ve çıkarma işlemlerinin kullanılması DDA'dan daha az zaman alır.
7. doğruluk Daha az doğruluk. Daha doğru.
8. Yuvarlama Gerçek değerler kullanır ve asla değerleri yuvarlamaz. Değerleri en yakın tam sayı değerlerine yuvarlar.
9. Çizim yeteneği Çizgi, daire ve eğriler çizebilir ancak daha az doğrulukla. Bu algoritma ile üçgenler ve çokgenler bile çizebiliriz. Çizgileri, daireleri ve eğrileri daha verimli bir şekilde çizebilir. Bu algoritma ile üçgenler ve çokgenler de çizilebilir..
10. Hesaplama maliyeti Yuvarlama da içerdiğinden pahalı. Bresenham algoritmasının kullanımı DDA'dan daha ucuzdur.
11. Optimize edilmiş algoritma Optimize edilmiş bir algoritma değil Optimize edilmiş bir algoritmadır.

DDA ve Bresenham'ın algoritması arasındaki olası her farkı ele aldık. Hatta tekrarlayıcı gibi görünebilir, ancak bu noktalardan tekrar bahsetmek için geçerli bir neden var ve tamamen anladığınızda bunu öğreneceksiniz. Hala bir belirsizlik olduğunu düşünüyorsanız, lütfen bize bir yorum bırakın. Doğru bilgiyi paylaşarak birlikte öğrenelim!