DDA ve Bresenham Algoritması arasındaki fark

Anonim

çiziminde kullanılır. Dijital Diferansiyel Algoritma (DDA) ve Bresenhams Algoritması dijital çizgiler çizim algoritmalarıdır ve resimleri çizmek için bilgisayar grafiklerinde kullanılır. Daha önce, pikselleri hesaplamak için analitik analiz cihazları kullanıyorduk ve böylece çizgi çizimleri mümkün hale geldi. Fakat bu analitik yöntemler dijital algoritmalar kadar doğru değildir, bu dijital algoritmaların kullanımı ile artık her alanda olduğu gibi bilgisayar grafiklerinde de daha kaliteli yöntemler icat ettik. Bu algoritmaların icadı mükemmel bir örnektir. Devam etmeden önce, bu algoritmaların arkasındaki kavrama göz atalım. Tartışmamızın kapsamı dışındaysa da, ikisi arasındaki temel farklılıkları belirtmek esastır. Gerçekten algoritmaları biliyorsanız, bu sayfanın sonundaki gerçek farklılıklara atlayabilirsiniz.

Dijital Diferansiyel Algoritma (DDA) nedir?

Bir DDA, çoğunlukla bilgisayar grafiklerinde çizgiler çizmek için kullanılır ve bir sonraki piksel değerlerini tahmin ederken gerçek değerleri kullanır. İlk piksel değerini (X0, Y0) (X0, Y0) ve varış pikselini (X1, Y1) (X1, Y1) olarak varsayalım. Bilinen piksel değerinden (X0, Y0) (X0, Y0) aşağıdaki gibi hedef piksel değerlerini nasıl hesaplayacağımızı öğreneceğiz.

  • Hedef nokta değerini DDA kullanarak hesaplamak nasıl?

Adım-1: Burada (X0, Y0) (X0, Y0) girişine sahibiz ve çizginin x eksenine veya y eksenine paralel mi. Bunu bulmak için başlangıç ​​ve varış piksel değerleri arasındaki farkı hesaplayalım.

dx = X1 - X0

dy = Y1 - Y0

Adım-2: Şimdi farkı tespit ettik ve 'xx' sıfırsa x ekseni boyunca çizgiyi çizmeliyiz Aksi takdirde, çizgiyi y eksene paralel çizmeliyiz. İşte bilgisayar dili açısından gerçek hesaplamadır.

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

Adımlar = mutlak (dx);

else

Adımlar = mutlak (dy);

Adım 3: Şimdi çizgiyi çizmek için gerçek 'x' koordinatını veya 'y' koordinatları piksel değerlerini tanımlama zamanı geldi.

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

Y artım = dy / (float) basamakları;

Adım-4: Bu, hedef piksele ulaşana kadar hesaplanmalıdır. DDA algoritması, hesaplamayı yaparken piksel değerini en yakın tamsayı değerine çevirir. İşte şimdi tartıştığımız şeyin kod örneği.

için (int v = 0; v

{

x = x + X artışı;

y = y + Y artışı;

putpixel (Yuvarlak (x), yuvarlak (y));

}

DDA'yi kullanarak çizgiyi çizmekle bitirdik ve şu an Bresenham'ın işine geçmemize izin verin!

Bresenham'ın Algoritması nedir?

Aynı zamanda dijital çizgi çizim algoritmasıdır ve 1962'de Bresenham tarafından keşfedilmiştir ve bu yüzden aynı adı almıştır. Bu algoritma daha doğrudur ve çizgiyi çizerken piksel değerinin hesaplanmasında çıkarma ve ekleme kullanılır. Bresenham'ın algoritmasının doğruluğu, eğrileri ve çevreleri çizerken de güvenilirdir. Bu algoritmanın nasıl çalıştığını inceleyelim.

Adım-1: Bresenham'ın algoritmaları başlangıç ​​piksel koordinatını (x a + 1 , y a ) olarak kabul eder.

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

Bu algoritma yuvarlama olmaksızın doğru değerleri hesaplar ve daha da kolay görünüyor!

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

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

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

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

Δx = x2-x1 = -8-0 = 8

Dolayısıyla, x = Δx / x2 = 8 / -8 = -1 için artımsal değer.

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

Dolayısıyla y = Δy / y2 için artan değer = 4 / -4 = -1'dir.

Karar Değişken = e = 2 * (Δy) - (Δx)

Dolayısıyla, e = 2 * (4) - (8) = 8-8 = 0

Yukarıdaki hesaplamayla let bize sonuçtaki değerleri tablolaştırırız. Y-koordinatının değerleri bir karar değişkenine göre ayarlanır ve burada hesaplamasını görmezden geliyoruz.

x y
Karar değişkeni (0, 0) 0 0
0 (-1.099) - 1 0
Bir (- 2, -1) -2 -1
0 (- 3, -1) -3 < -1 Bir
(- 4, -2) -4 -2 0
(- 5, -2) -5 > -2 Bir (- 6, -3)
-6 -3 0 (- 7, -3)
-7 -3 DDA ve Bresenham Algoritması :
Aritmetik Hesaplama Arasındaki Farklar (- 8, -4) -8 -4

0

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

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

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

Burada sabit sabitler kullanılmaz, ancak Bresenham'ın algoritma sabit noktalarında aritmetik hesaplamalarda kullanılır. Bresenham'ın algoritması DDA'nın tersine, Tamsayı Aritmetiği'ni kullanır.

Kullanılan işlem tipi:

  • DDA, çarpım ve bölme işlemleri ile diferansiyel denklemleri çözer. Burada da X increment = dx / (float) basamaklarını fark edebilirsiniz. Bresenham'ın algoritması toplama ve çıkarma işlemlerini kullanır ve burada bir sonraki piksel değer hesaplama denkleminde (x

a + 1 , y a + 1 ) fark edebilirsiniz. Aritmetik, DDA'ya kıyasla Bresenham'da daha basittir. Verimlilik:

  • Daha önce de tartıştığımız gibi, Bresenham'ın algoritması DDA'ya kıyasla daha basit aritmetik kullanıyor ve sonuç verimli çıktı.

Hız:

  • DDA, çarpma ve bölme işlemleriyle birlikte kayan noktalı tamsayılar kullandığından, Bresenham'ın algoritması tek başına ekleme ve çıkarmalarla birlikte sadece tamsayı aritmetik kullanmasına karşın oldukça yavaştır. Bu, hesaplamaları için harcanan zamanı önemli derecede azaltır ve dolayısıyla DDA'dan daha hızlıdır. Doğruluk:
  • DDA kayan noktalı değerler kullanmasına rağmen, DDA'nın doğruluğu Bresenham'ınki kadar iyi değildir. Bu kavramı çeşitli faktörler etkilemektedir ve bu nedenle Bresenham'ın DDA'dan daha doğru olduğu düşünülmektedir. Yuvarlama:
  • Sadece DDA'nın hesaplamasına buradan bakabilirsiniz. X artışı = dx / (float) adımları

'float' fark edebilirsiniz ve bu nedenle değerler yuvarlamaz, buna karşılık Bresenham'ın algoritması değerleri en yakın tam sayıya yuvarlar. Bu nedenle, kullanılan değerler Bresenham'ın algoritmasında daha basittir.

Ne çiziyor?

  • DDA çizim çizgilerinin dışında daireler çizebilir ve eğrilebilir. Bresenham'ın algoritması da yukarıda bahsedilenleri çizebilecek ve doğruluğu DDA'dan daha yüksek olacaktır. Benzer şekilde, Bresenham'ın algoritması DDA tarafından üretilenlerden daha etkili eğriler üretebilir. Her iki algoritma da üçgenler ve poligonlar çizebilir.

Hangisi pahalı?

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

Optimize edilmiş bir algoritma hangisi?

  • Yukarıdaki tartışmamızdan Bresenham'ın algoritmasının hız, maliyet ve operasyonların kullanımı açısından en uygun hale getirildiği çok açıktır.

Tabular formdaki farklılıklara bir göz atalım.

S. Hayır

Farklar Dijital Diferansiyel Algoritma Bresenham Algoritması 1.
Neden adı? Denklemlerin sayısal olarak uygulanması olduğu için ismini aldı. 1962 yılında J. E. Bresenham tarafından icat edildi ve dolayısıyla adı. 2.
Hesaplamalar Daha sert hesaplamalar içerir. Kullanılan hesaplamalar gerçekten daha basittir. 3.
Kullanılan işlem türleri Çarpma ve bölme kullanılır. Burada kullanılan örnek diferansiyel denklemler Xincrement = dx / (float) basamakları, Yincrement = dy / (float) basamaklarıdır.

Ekleme ve çıkarmalar kullanır. Buradaki örnek hesaplama, (x

a + 1 , y a + 1 ) gibi gösterilebilir. 4.
Aritmetik hesaplama değerleri kayan nokta değerlerini kullanır. Sadece tam sayı değerlerini kullanır. 5.
Verimlilik Kompleks aritmetik, daha az verimlilik sağlar. Daha basit aritmetik, daha fazla verimlilik sağlar. 6.
Hız Çarpma ve bölme işlemlerinin kullanımı, hesaplama işlemleri için çok zaman alır. Toplama ve çıkarma işlemlerinin kullanımı DDA'dan daha az zaman alır. 7.
Doğruluk Doğruluk daha azdır. Daha doğru. 8.
Yuvarlama kapalı Gerçek değerleri kullanır ve değerleri hiçbir zaman yuvarlamaz. Değerleri en yakın tamsayı değerlerle yuvarlar. 9.
Çizim kabiliyeti Çizgi, daire ve eğrileri daha az doğrulukla çizebilme yeteneğine sahiptir. Bu algoritmayla üçgenler ve poligonlar çizebiliriz. Çizgi, daire ve eğrileri daha etkin bir şekilde çizebilme yeteneğine sahiptir. Bu algoritma ile üçgenler ve çokgenler de çizilebilir. 10.
Hesaplamaların maliyeti Yuvarlamayı da içerdiği için pahalıdır. Bresenham'ın algoritmasının kullanımı DDA'dan daha ucuzdur. 11.
Optimize edilmiş algoritma Optimize edilmiş bir algoritma değil Optimize edilmiş bir algoritma. DDA ve Bresenham'ın algoritması arasındaki olası her farklılığı ele aldık. Hatta tekrarlayıcı gibi görünebilir ancak bu noktaları tekrar söylemek için geçerli bir nedeniniz 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!