02/07: Bresenham ve Xiaolin Wu
Kategori: Genel | Gönderen: Arda
Kodlamaya meraklı olanlar zaten bilirler, lakin ben sıkça unutuyorum iki nokta arasına doğru bir çizgi çekmenin yöntemini.
Bresenham bu işi en hızlı yapan en eski adam, Xiaolin Wu ise bresenham'ın algoritmasını geliştirip antialias ekleyen adam.
Ben genellikle oyun yazımı sırasında sprite'ın düz bir doğrultuda istediğim noktaya ulaşmasını bresenham'ın yöntemini kullanarak yapardım. Son zamanlarda bezier curve'lar kullanarak işi birazcık daha "tuhaf"hale getirdiğimi söyleyebilirim. Ama mütemadiyen ihtiyaç duyacağım bir kod olduğu için buraya yazayım, ilerde yine unuttuğumda buraya bakarım.
Bresenham's line algorithm ve Xiaolin_Wu's line algorithm
Eğer Bresenham'ın algoritmasını Sinclair Basic üzerinde denemek istiyorsanız kodu uyarladım, buyrun okuyun:
Bu kod 110 numaralı satırdan başlar ve x0,y0-x1,y1 girdilerini alır, burada 20 numaralı satırda kordinatlar rastgele hazırlanıyor, 250 numaralı satırda da başa dönüyoruz.
20 LET x0=RND*256: LET x1=RND*256: LET y1=RND*170: LET y0=RND*170
110 REM line draw function
120 LET steep=ABS (y1-y0)>ABS (x1-x0)
130 IF steep THEN LET xb=x0: LET x0=y0: LET y0=xb: LET xb=x1: LET x1=y1: LET y1=xb
140 IF x0>x1 THEN LET xb=x0: LET x0=x1: LET x1=xb: LET xb=y1: LET y1=y0: LET y0=xb
150 LET dx=x1-x0
160 LET dy=ABS (y1-y0)
170 LET e=dx/2
180 LET y=y0
185 LET ystep=-1
190 IF y0<y1 THEN LET ystep=1
200 FOR x=x0 TO x1
210 IF steep THEN PLOT y,x: GO TO 220
215 PLOT x,y
220 LET e=e-dy
230 IF e<0 THEN LET y=y+ystep: LET e=e+dx
240 NEXT x
250 GO TO 20
Bresenham bu işi en hızlı yapan en eski adam, Xiaolin Wu ise bresenham'ın algoritmasını geliştirip antialias ekleyen adam.
Ben genellikle oyun yazımı sırasında sprite'ın düz bir doğrultuda istediğim noktaya ulaşmasını bresenham'ın yöntemini kullanarak yapardım. Son zamanlarda bezier curve'lar kullanarak işi birazcık daha "tuhaf"hale getirdiğimi söyleyebilirim. Ama mütemadiyen ihtiyaç duyacağım bir kod olduğu için buraya yazayım, ilerde yine unuttuğumda buraya bakarım.
Bresenham's line algorithm ve Xiaolin_Wu's line algorithm
Eğer Bresenham'ın algoritmasını Sinclair Basic üzerinde denemek istiyorsanız kodu uyarladım, buyrun okuyun:
Bu kod 110 numaralı satırdan başlar ve x0,y0-x1,y1 girdilerini alır, burada 20 numaralı satırda kordinatlar rastgele hazırlanıyor, 250 numaralı satırda da başa dönüyoruz.
20 LET x0=RND*256: LET x1=RND*256: LET y1=RND*170: LET y0=RND*170
110 REM line draw function
120 LET steep=ABS (y1-y0)>ABS (x1-x0)
130 IF steep THEN LET xb=x0: LET x0=y0: LET y0=xb: LET xb=x1: LET x1=y1: LET y1=xb
140 IF x0>x1 THEN LET xb=x0: LET x0=x1: LET x1=xb: LET xb=y1: LET y1=y0: LET y0=xb
150 LET dx=x1-x0
160 LET dy=ABS (y1-y0)
170 LET e=dx/2
180 LET y=y0
185 LET ystep=-1
190 IF y0<y1 THEN LET ystep=1
200 FOR x=x0 TO x1
210 IF steep THEN PLOT y,x: GO TO 220
215 PLOT x,y
220 LET e=e-dy
230 IF e<0 THEN LET y=y+ystep: LET e=e+dx
240 NEXT x
250 GO TO 20
Yorumlar
Yorum yok
Yorum Ekle
ae Weblog Son Başlıklar
- 22/02: Adidas ZX Spectrum'dan esinlenerek ayakkabı yapmış
- 21/02: Z80 assembly
- 20/02: Herşeyin başlangıcı: Manic Miner
- 14/02: Purebasic denemesi, bir küçük intro
- 07/02: Bresenham ve Xiaolin Wu
- 04/02: BREAKPOINT 2010!
- 03/02: Global Game Jam 2010 tamamlandı...
- Önceki Başlık
- Sonraki Başlık
- Bugün
- Arşivler
- All
- Downloads and Development
- Genel
- Gereksiz bilgiler
- in English
- Retro Oyun Makaleleri
- Teknoloji
- Zx Spectrum
- www.zx.gen.tr
- www.worldofspectrum.org
- Zx Spectrum Techwiki
- www.commodore.gen.tr
- www.kisafilm.org
- plazma-dergi.org
- ardarda.googlepages.com
- bizdopus.blogspot.com
- retrocu.blogspot.com
- www.webdefteri.com/wp
- www.amstradcpc.com
Indiana Jones' Diary
Sizin AMSTRAD
NightNetwork
retrocu.com
Gökhan'ın Web Defteri
Mathman'ın Seyir Defteri
World of Spectrum Forums
RZX Archive Latest Games
nesw
No items available
Kategoriler
Arama
Login
Bağlantılar
Son mesajlar...
Zx Spectrum için Yeni Sürümler
Tüm Başlıklar
- 22/02: Adidas ZX Spectrum'dan esinlenerek ayakkabı yapmış
- 21/02: Z80 assembly
- 20/02: Herşeyin başlangıcı: Manic Miner
- 14/02: Purebasic denemesi, bir küçük intro
- 07/02: Bresenham ve Xiaolin Wu
- 04/02: BREAKPOINT 2010!
- 03/02: Global Game Jam 2010 tamamlandı...
- 03/02: Dobişko'nun hayaletleri...
- 27/01: CSSCGC 2010 başladı!
- 17/01: Zx Spectrum Basic Merger 1.0
- 16/01: SpeccyView 1.1 is ready.
- 16/01: cULA64 V5 is out.
- 10/01: Doğru söyle dokuz köyden kovul :)
- 09/01: Creating 256 colour games with EmuZwin
- 09/01: about Samsung st550 blur problem
- 06/01: 7D9 greetz
- 05/01: Hyperion yeni amiga'yı duyurdu..
- 05/01: müstehaktır!
- 01/01: Yeni yılın ilk girdisi...
- 30/12: 2010
- 26/12: Ode to claire: 128b intro
- 25/12: Şu Zx Spectrumcu Türkler!
- 16/12: Zx Spin yakında Türkçe!
- 13/12: Google Streetview İstanbulda mı?
- 12/12: ZX Spin 0.7s sürümü çıktı
- 12/12: Dragons Breath Türkçe!
- 12/12: Vefa Lök Oyunları ve şifreleri
- 11/12: 7D9 geldi! (Yenilere uyarılar)
- 09/12: UlaPlus araçları / UlaPlus tools
- 09/12: Windows7 ve "süpermiş abi bu" etkisi
- 11/11: Zx Spectrum Icons on Vista & Windows7 64bit
- 08/11: Zx Spectrum ile internet...
- 07/11: Koray Külcü ve Tunç Taylan'dan OKEY!
- 07/11: ULA64'ü BASIC ile kullanım rehberi
- 06/11: ULA64 (UlaPlus) ZX Spectrum'da
- 31/08: Open Game Definitions Standard duyurulur!
- 27/08: Hasenatbot 1.0.b yayında
- 24/08: ve "Korsan Körfezi" kapatıldı.
- 20/08: Tatil Bitiyor gibi...
- 20/07: WOS Search plug-in for firefox
- 18/06: Error Diffusion teknikleri...
- 13/06: Zx spectrum türkçe yayınları gün yüzüne çıkıyor
- 12/06: Resmi Cambridge Computer Z88 günü!
- 31/05: gerçek x-chat, mirc ve irc rehberi
- 31/05: x-chat ve irc...
- 27/05: Retkinlikler..
- 16/05: World of spectrum search plug-in for Firefox3
- 15/05: Senin yerine ben arar öğrenir, cevabı söylerim
- 11/05: OpenZX rom
- 06/05: Birkaç yararlı bağlantı ve bir program daha...