Archive for the ‘Eğlence’ Category

Boş vakit 2

Sunday, January 3rd, 2010

#include <stdio.h>
int main(){

    char t[] = "èfİ÷¬—}ÖJÕwÓÕ|t³İï\"γû¤ÛÖ²¯²ì¡ú®×ÖšïE›­û\0\0\0";
    unsigned *a= (unsigned*)t, y=0;
    do printf("%c", ((y=y*((*a)&amp;1)+1)-1)?(y>5)?10:32:10+32);
    while(*(((*a>>=1)-1)?a:++a));

    return 0;
}

cse 112 labwork 1 in cevabı

2 ilginç olay

Thursday, September 10th, 2009

Uzun süredir yazamıyorum, tatil gibi bir şey yaptık bu gün bitti.

Bu gün iki tane ilginç şey öğrendim.

Birincisi integer (ve benzer 1 byte dan büyük değişken tipleri) hafıza da ters tutuluyormuş. Mesela integer 4 byte ise


int a = 0x04030201;
char *c = (char*)&amp;amp;a;
printf("%d %d %d %d\n", *c, *(c+1), *(c+2), *(c+3));

ekrana 1 2 3 4 basıyor. Yani a integer’ı hafıza 04 03 02 01 olarak değil de 01 02 03 04 diye tutuluyormuş. Niye böyle bir şeye gerek duydular bilmiyorum.

edit: olay şurada açıklanıyormuş.

Bir diğer şey ise her data tipi her adrese yazılamayabiliyormuş. Mesela 4 byte olan bir integer sadece 4 ve katı olan adreslerde olabiliyor, 2 byte olan short ise sadece 2 ve katına konulabiliyor, 1 byte char ise her adreste olabiliyor.

Mesela bir structure oluşturursak

struct test{
char a;
int b;
char c;
};

bu structure adres 0×1000 de allocate edilirse o adresteki şu şekilde oluyor

a***bbbbc***

ilk önce byte olan a koyuluyor, ama ondan sonra b konulamıyor çünkü 4 ve katı adrese denk gelmiyor, 3 tane boş byte bırakılıyor ve sonra 4 bytelık b integer ı geliyor. daha sonra c geliyor ve ondan sonraki 3 byte gene kullanılamıyor.

ve sonuçta bu structure hafıza’da 12 byte kaplıyor. Eğer biz şu şekilde değiştirirsek

struct test{
char a;
char c;
int b;
};

bu sefer hafızada tutulan yapı şöyle oluyor.

ac**bbbb

ve toplam 8 byte lık yer kaplıyor.

Bu compiler a bağlı bir durum tabi. Akıllı compiler lar structure ları ikincisi gibi düzenleyebiliyormuş, fakat dev cpp bu konuyu atlamış gibi =) Bu olayın ismi struct padding miş.

Adreslendirme de bu şekilde bir zorunluluk yok, niye compiler lar böyle bir şey yapıyor bilemiyorum, eğer kodumuzun başına
#pragma pack(1)
yazarsak compiler bu olayı iptal ediyor ve bizim yazdığımız sırada ve gerçek boyutlarında hazırlıyor structure ları. Ama bir kötü yanı var ki kullanılıyor demek (belki de her mimaride çalışmıyordur)

Z fighting

Monday, March 16th, 2009

Opengl de bana ilginç bir anı ve şu anda kullandığım avatarımı vermiş olan konu.

Basit olarak anlatmak gerekirse 3d ile çizilen iki şeklin kameraya olan uzaklıklarının birbirine eşit (veya çok yakın) olması ile oluşan, opengl in hangi şekil üstte olmalı anlayamamasından oluşur.

En basit çözümü üstte görünülmesi istenilen şeklin bir birim daha öne kaydırılmasıdır, ama eğer bizim başta  “en fazla şu kadar uzaklıkta olan z lerin çizilmesine izin ver” diye verdiğimiz değer çok büyükse bu yeterli olmayabilir.

Diğer bir çözümde stencil buffer kullanmak. Önce altta kalmasını istediğimiz nesneyi hem ekrana hem de stencil bufferına çizeriz, daha sonrada üstte kalmasını istediğimiz nesneyi eğer stencil buffer 1 ise kesin çiz, 0 ise depth test yap öyle çiz deriz. Şu an da tam hangi değerleri vereceğiz aklımda olmadığı için böyle yarım yamalak bir tanım yaptım =)

Neyse asıl anlatmak istediğim bu z buffer ın bana bıraktığı hoş anı =) 3 boyutlu engebeli bir gezegen yapmak istiyordum, ve onunla uğraşırken şu şekli ortaya çıkardım.

interesting1

Ne olduğunu başta çözemedim, sonradan farkedebildim niye böyle bir şey çıktığını. İşte z fighting sonucu ortaya çıkan bir şekil, doğrusu gözüme çok hoş geldi ve avatar olarak kullanma kararı aldım =D İlerde birileri sorunca avatarın ne diye “Kendisi bir bugtır” diyeceğim.

Malesef programın o halini kaydetmemişim =( ama bir gün tekrar aynı “hata”yı ortaya çıkarmaya çalışacağım.

gezegen

Bu da şeklin olması gerek şey idi, malesef sadece çok küçük bir resmini tutmuşum. Soldaki şey engebeli bir gezegen aslında, döndürünce falan hoş duruyordu. İleride tekrar uğraşabilirim, yapmak istediğim proje küre şeklinde bir dünya yaratmak ve uçarak bu dünya üzerinde gezine bilmek idi (Spore oynayanlar demek istediğimi anlayabilmiştir) hatta binalar falan eklerim diyordum ama sonunda (diğer bir çok projeye olan şey gibi =D) yarım kaldı. Şu an dosyalarını bile bulamıyorum.

shultays.com

Thursday, March 12th, 2009

shultays.com

Bir yıl kadar önce yaptığım, 3D grafik olayına giriş yaptığım kişisel web sitem. Hazırlık-1.sınıf zamanlarında AS2 olarak başlamıştım, daha sonra AS3 kullanmaya başladım. Asıl amacım flashta 3D site yapmak değilde bir 3D grafik motoru yazmak idi, bu yüzden hiç bir hazır kütüphane kullanmadım. AS2 hali hala duruyor, ama resimler eksik, mesela ortada bir küp vardı o görünmüyor, kenarda bir Otostopçunun Galaksi Rehberi vardı, hatta kapağı bile açılıyordu (vay be)

Pek kullanıcı dostu değil, zaten öyle olması için de tasarlanmadı =p Aslında aklımda göze güzel gelebilecek bir menü sistemi var ama hep üşeniyorum. Uzun süredir de flash kullanmadım, o yüzden de biraz çekinme var. Hem zaten zaman da yok =D

WASD tuşları ile kamera aşağı yukarı hareket ediyor. İleri gitmek için RF tuşlarını kullanarak ileri geri gidebilirsiniz. QE ekranı çevirir. Ayrıca farenin sol tuşunu basılı tutarakta kamerayı döndürebilirsiniz.

Renkli ve ünlemli gezegenler aslında bizim linklerimiz oluyor, onlara tıklayınca gezegene gidiyoruz ve onunla alakalı flash yükleniyor. Beyaz gezegenler de boş gezegenler, yanlarına gidebiliyorsunuz ama bir şey açmıyorlar.

Hayalimdeki proje evrende kişilere belirli bölgeler vermek, o bölgelerde kendi gezegenlerini oluşturmalarını sağlamak idi. Siz evrende gezinerek aslında siteler arasında geziniyor gibi olacaktınız. Lakin bir süre sonra artık sıkmaya başladı ve bitirilmemiş projeler arasında yerini aldı. Bir diğeride bu mesela. Multiplayer bir savaşlı yarışlı oyun yapayım dedim ama görebileceğiniz o daha başlarda yalan oldu =)

İki resim arasındaki farklar

Friday, March 6th, 2009

İki resim arasında ki 23176856 farkı bulun.

farkEvrimsel algoritmalar dersimin ilk sonucu, ikinci resmin birinciye benzemesi gerekiyordu. Amaç üçgenler ile ilk resme ulaşmak. Resim 512×512 olduğu için oldukça yüklü bir işlem istiyor. Algoritma’mız pek iyi olmadığı için bir yerden sonra tıkanmış ve bu sonuçtan ileri gidememiş (Yaklaşık bir 5-6 saatlik işlemin sonucu). Lakin yine de yaratıcı olursanız benzerlikleri yakalayibilirsiniz =)

İşin ilginci resimler düşündüğünüzden daha benzer. Şöyle ki her pixel için 3 renk düşünün, 0-255 arasında bir sayı. Tüm pixellerin renklerinin birbirinden çıkarınca ortaya çıkan sonuç 2317685. Bunuda 512*512*3 e bölünce yaklaşık 30 çıkıyor. Yani 30/256 ~= %12 lik bir hata var. Ama göze çok çok daha fazla geldiği kesin =)
İlerde resmin aynısını çıkarmayı ummuyorum ama benzetebileceğime inanıyorum, bakalım bir kaç fikir daha var aklımda onları ekleyince ne olacak.

Sevgili İzzet

Thursday, March 5th, 2009

Uykusuz 2009/10 sayısında Uğur Gürsoy’un köşesinden bir mektup.

Sevgili İzzet

Uzun araştırmalarım sonucu senin niçin kızlarla çiftleşemediğini buldum sevgili dostum.

Sevgili İzzet, doğanın zayıf ve çelimsiz genlere sahip canlıları yeryüzünden silmeye çalıştığını keşfetmiş bulunmaktayım… Senin sahip olduğun kötü genler, binlerce yıl önce buzul çağından kurtuldu, arslandan kaplandan bir şekilde kaçtı ama oyunun sonuna geldin sevgili dostum. Doğa senin çiftleşmeni engelleyerek kötü genlerin bir sonraki kuşağa aktarmanı engelliyor… Bu iş burayaya kadar dostum, oyun bitti…

En iyi arkadaşın
C. Darwin
Galapagos adaları

Not: Bu durumdan kötü saç kesiminin de payı olabilir, onu gelince konuşalım.

Gönül ister resimleri de koyabilseydim.