14/06/2003
16/05/2010
Gerçek Dünya Fiziğine Bir
Bakış
Lise fiziği
dersinin tekrar karşısına
çıkması bazıları için sıkıcı olacağını
biliyorum , ama eğlenmeye
bakın.
Doppler
etkisi, bazı insanlar için ince bir
konsept
olabilir, Ama o lojikal bir
süreçtir, pozitif olarak
bakılırsa bir ilginçlik çeşididir. Doppler etkisini
anlamak için ilkin bir "Ses"'in
gerçekte ne olduğunu
anlamalıyız. Basit
olarak
ses havada yol alan bir basınç
dalgasının aklınızda
yorumlanmasıdır. Hava
hareketlendiğinde etraftaki hava
taneciklerini
basınçlayan bir dalga
başlar.
Bu dalga,
onun kaynak noktasından dışarı doğru yol alır. Takip eden diyagramı
göz önüne al.
Yapmaya giriştiğiniz
şu diagramın gösterdiği resimdir. Source, bir dalga (daireler)
yaydığı zaman, source pozisyonu olan kaynak noktadan başlayarak
sürekli
yayılıyor gibi görünür. Benzer bir etkinin
güzel bir örneği sudaki yayınsal
harekettir. Durgun bir
suya bir çakıl taşını
attığın zaman genişleyen şekilde etki noktasından uzaklaşan dalgalar
yayılacak
. İster inan ister inanma
bu tamamen aynı fizik olayından meydana gelir. Tabi Bu Doppler etkisiyle
yapılmak zorunda
olunan
nedir?
Sonraki diyagrama
bakalım
(sağda).

listener
tarafından algılanan
sesi bu nasıl etkiler
peki?
Ee, son diagramdan da farkına varılabilecek source ve listener arası dalgalar
(daireler) daha dar. Bu, ses
dalgalarının böyle yakın
olması algılanan ses daha
hızlı gibi gelecek. Burada
bahsettiğimiz şey
frekanstır. Dalga mesafe
aralığı
sesin frekansını
etkiler. Sesin yayıldığı kaynak hareket
halinde olduğu zaman, bu frekansta bir
değişikliğe sebebiyet verir. Alanın farklı
noktalarında dalga mesafe
aralarının değiştiğini fark
etmişinizdir. Örneğin, hareketli
source’de (Önceki hareketin herhangi yerine
göre)
mesafesi aslında daha
geniştir, Bundan dolayı frekans
daha düşük olacak (Mesafe ve frekans ters bir
ilişkiye sahiptir). listener
tarafından
algılanan frekanstan
kastedilen, Listener'ın durduğu yerle
ilgilidir.
Listener'ın hareketi de frekansı
etkileyebilir. Bunu resmetme
gerçi biraz daha
zordur.
Eğer
source
hareketsiz Ve listener source'e doğru hareket
ederse, o zaman
listener tarafından algılanan
frekans hareketli source için
tanımladığımızla aynen
eğriltilecek.
Eğer sen hala bunu
kafanda
canlandıramıyorsan, takip eden iki
diyagramı dikkate al:
Bu iki diyagram, sesi,
bir sinüsel dalga formunda gösteriyor. Birinciyi ele
alalım. Dalgaları tepe olarak düşün. Dalganın (Tepe) zirvesi önceki
diyagramlar setindeki mavi dairelerdir.
Vadiler
mavi daireler arasındaki
boşluklardır. İkinci diyagramda sık
bir dalgalanma gösterilmiştir. İkisini kıyasladığın
zaman açıkça fark edeceksin. Basitçe İkinci diyagram aynı
alanda daha çok dalgalanma hadisesine
sahip.
Başka bir
ifadeyle daha büyük
sıklıkla, daha büyük
bayağılık veya daha büyük bir
frekansla meydana gelir.
Bazı ekstra
bilgilere ilgi duyabilecekler için: Dalgaların hızı, ses
hızıdır. Eğer source hızı
dalgaya kıyasla daha
büyükse, O zaman source ses
duvarını kırar.
OpenAL
Fiziği
Tamam, yukarıda
Doppler etkisini
karışık
yazımdan anladın, veya hali
hazırda
Doppler etkisini biliyor ve sadece onun OpenAL renderleme
hattını
nasıl etkileyeceğini bilmek istediğine onu
atlamış da olabilirsin. En iyi başlangıcın
direkt OpenAL spesifikasyonundan bunun
aktarılması ile olacağını
düşünüyorum:
" Doppler etkisi,
ortamda göreli olarak source ve listener'ın
hızlarına Ve bu ortamda ses
yayılma hızına bağlıdır." - bölüm 3,
altbölüm 7"
listener
tarafından duyulan sesin son frekansını
etkileyen 3 faktör olduğunun kastedildiğini bundan
çıkarabiliriz. Bu faktörler
source’nin sürati, listener'ın
sürati,
Ve
önceden tanımlanan bir ses hızı.
"Ortam" olarak adlı
şeyden
source ve Listener’ın "bulunduğu" yeri anlamalıyız. Örneğin, Açık havada duyulan
seslere kıyasla Su altında duyulan ses çok
farklıdır. Hava ve su farklı
ortam örnekleridir. Bu ortamlar arasındaki farklılık ses tanecik yoğunluğuyla
ilgili.
Daha önce
dediğimiz gibi, Ses, havada hareketli
taneciklerden başka bir şey
değildir. Çok daha büyük bir
tanecik yoğunluğuyla bir ortamda ses, çok farklı olacak çünkü
Tanecikler daha yakın
temastadır. Onların, daha yakın
temasında, dalganın
çok daha
iyi yol almasına imkan
verir.
Tersi bir
örnek olarak, açık alanı düşün. Açık alanda aşırı derecede zayıf
bir tanecik yoğunluğu vardır. Aslında, etrafta
dağılmış sadece birkaç çok
hafif tanecik(Çoğunlukla
hidrojen)
vardır.
Bu,
hiçbir sesin boşluktan duyulamamasının
nedenidir.
Tamam, konumuza
dönelim. OpenAL, içten bizim
için Doppler etkisini hesaplar,
velhasıl
biz hesaplamayı etkileyecek sadece birkaç
parametre tanımlarız. Gerçekçi
renderlemeyi istemediğimiz
durumda
bunu yaparız. Eğer etkinin
oldukça arttırılması
veya
azaltılması
istenirse. Hesaplama
şöyle:
shift =
DOPPLER_FACTOR * freq * (DOPPLER_VELOCITY - l.velocity) / (DOPPLER_VELOCITY +
s.velocity)
Sabitleri
ayırmak için tümü büyük
harfte yazılı. "l" ve "s"
değişkenleri sırayla listener ve source'dur. freq, dalga
yayımının ilk değiştirilmemiş
frekansı olup "shift" dalganın
değiştirilmiş
frekansıdır. "shift"
terimi
değiştirilmiş frekansa hitap için
uygundur. Bu son kayılan frekans
etkilediği bütün ses streamlemeleri
için
OpenAL tarafından örneklenecek.
'alListenerfv' ve
'alSourcefv' 'de 'AL_VELOCITY' kullanarak source ve listener
ikilisinin hızını
tanımlayabileceğimizi hali
hazırda
biliyoruz. Dosyadan yüklendiği
zaman 'freq' parametresi direkt
buffer
özelliklerinden gelir. Sabit değerleri
set
etmede bize sunulan fonksiyonlar şöyle.
ALvoid
alDopplerFactor(ALfloat factor);
ALvoid
alDopplerVelocity(ALfloat velocity);
'alDopplerFactor'
için herhangi negatif
olmayan bir değer uygun. Negatif bir değeri
geçmek, 'AL_INVALID_VALUE' hatasına sebep
olup tüm
komut görmezlikten gelinecek. Sıfırı geçmek
tamamen geçerli bir
argümandır. Bunu yapmak Doppler
etkisini iptal eder, aslında toplam performansa
faydalı
olabilir (Ama o kadar
gerçekçi olmayacak). Doppler faktörünün etkisi direkt
denklemin büyüklüğünü değiştirecek. 1.0 değeri herhangi
bir şekilde etkiyi değiştirmeyecek. 0.0 Ve 1.0 arası herhangi
değer geçilmesi Doppler etkisini en aza indirip 1.0'den daha büyük herhangi bir
sayı etkiyi azami dereceye
çıkaracak.
'alDopplerVelocity'
için negatif olmayan
sıfırdan farklı
herhangi bir değer
uygundur. Negatif ya da sıfır
değerini geçmek, 'AL_INVALID_VALUE'' hatasına sebep
olup tüm
komut görmezlikten gelinecek. Doppler hızı aslında
ses hızıdır. Bunu ayarlama ortam
boyunca çalınacak sesin hızını
ayarlama
gibi olur. OpenAL, hiçbir ortam
anlayışına sahip değil, Ama hızı ayarlamak bir
ortam etkisini verecek. OpenAL aynı şekilde
hiçbir birim anlayışına sahip
değildir (kilometre, mil,
parsek), Bundan dolayı
şunu aklından
çıkarma
bu değeri set
ettiğinizde bir şekilde
tanımladığınız birimlerin bütün
diğer nosyonlarıyla uyumludur.
Dersin Orjinali : http://www.devmaster.net/articles/openal-tutorials/lesson7.php