DDA ve Bresenham Algoritması arasındaki fark
ç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! 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! Ş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 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: a + 1 , y a + 1 ) fark edebilirsiniz. Aritmetik, DDA'ya kıyasla Bresenham'da daha basittir. Verimlilik: Hız: '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? Hangisi pahalı? Optimize edilmiş bir algoritma hangisi? Tabular formdaki farklılıklara bir göz atalım. S. Hayır Ekleme ve çıkarmalar kullanır. Buradaki örnek hesaplama, (xBresenham'ın Algoritması nedir?
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
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.
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!