- Mesaj
- 11.858
- Çözümler
- 562
- Beğeni
- 13.000
- Puan
- 5.915
- Ticaret Puanı
- 2
2 boyutlu düzlemde herhangi bir objenin belirli bir konum içerisine geldiğini nasıl tespit ederiz?
İlk önce 2 boyutlu uzay hakkında bilgi edinelim. 2 boyutlu uzayda sağ, sol, yukarı ve aşağı gidebiliriz. Gidebileceğimiz 4 yön vardır.
Yatay harekette bulunduğumuz konuma x, dikey harekette ise bulunduğumuz konuma y diyoruz.
Aşağıdaki görselde 2 boyutlu uzayın koordinat düzlemi örneği yer almaktadır.
Merkez noktası 0, 0 olacak şekilde sağ tarafa gittikçe x değeri artar, sol tarafa gittikçe x değeri azalır. Yukarı ilerledikçe y artar aşağı indikçe y azalır.
2 boyutlu düzlemde merkeze kendinizi koyarak diğer cizimlere olan uzaklığı da bulabilirsiniz ancak bu konumuzda 2 boyutlu düzlemde belirli bir bölgenin içerisine herhangi bir obje girdiğinde bunu koddan tespit etmek istiyoruz.
Öncelikle 2 boyutlu uzayımızı çizelim. 0,0 noktası sol üst köşedeki nokta olacak.
400x400 alana sahip bir tane 2 boyutlu uzayımız mevcut. Bu uzayımızda 2 tane obje oluyor. şekil 2'yi hareket edebildiğini hayal edelim. Şekil 1'i ise bu uzayda yer alan belirli bir alanı hedefleyelim. Mesela bir ev olabilir ya da ekranda gördüğümüz düğme?![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Şimdi gelelim sorulara;
Şekil 2, şekil 1'in alanına girdiğin nasıl tespit ederiz?
Öncelikle 2 boyutlu render işlemlerinde bilgisayar soldan sağa doğru olmak üzere aşağıya doğru sıralı bir şekilde çizimleri yapar. Bir oyun kodluyorsanız saniyede bu çizim belirlediğiniz frame rate oranına göre tekrarlanacaktır.
Şekil 1: 100, 60 konumunda yer alıyor. İlk önce şekil 1'in tüm köşelerinin bulunduğu konumu bulmamız gerekiyor. Bunu bulmak için başlangıç noktasını referans alabiliriz. Basit anlaşılması için dikdörtgen seçtim.
Sol üst = (x, y) = (100, 60)
Sağ Üst = (x+75, y) = (100+75, 60)
Sol alt = (x, y+30) = (100, 60+30)
sağ alt = (x+75, y+30) = (100+75, 60+30)
Yani benim şekil 1'in dört köşesinin bulunduğu konum şu sayılara denk gelecektir;
Şekilimin köşelerinin konumunu bildikten sonra artık çarpışma noktalarını tespit edebilirim ve şekil 2 bu alana girip girmediğini tespit edebilirim.
SEKIL2_X > SEKIL1_X && SEKIL2_X < SEKIL1_X+SEKIL1_GENISLIK = bu bize x konumunda 100 ila 175 arasında olup olmadığının sonucunu verecektir.
SEKIL2_Y > SEKIL1_Y && SEKIL2_Y < SEKIL1_Y+SEKIL1_YUKSEKLIK = bu bize y konumunda 60 ila 90 arasında olup olmaduğunun sonucunu verecektir.
Eğer bu iki sorgumuz bize true değerini verirse şekil 2, şekil 1 ile çarpışmıştır.
Uygulamak isterseniz basit bir js canvas ile şekil 2 yi hareket ettirip şekil 1 alanına girdiğinde renginin değişmesini sağlayabilirsiniz. şekil 1 alanından çıktıktan sonra rengi eski haline gelebilir.
Bir sonraki yazımda 2 boyutlu uzayda iki nesnenin birbirine olan uzaklığı nasıl bulabileceğinizi anlatacağım.
İlk önce 2 boyutlu uzay hakkında bilgi edinelim. 2 boyutlu uzayda sağ, sol, yukarı ve aşağı gidebiliriz. Gidebileceğimiz 4 yön vardır.
Yatay harekette bulunduğumuz konuma x, dikey harekette ise bulunduğumuz konuma y diyoruz.
Aşağıdaki görselde 2 boyutlu uzayın koordinat düzlemi örneği yer almaktadır.
![2 boyutlu uzay koordinat sistemi.jpeg 2 boyutlu uzay koordinat sistemi.jpeg](https://www.mmotutkunlari.com/data/attachments/16/16981-dfa7385eeaee25d6c24af792afdac769.jpg?hash=36c4XuruJd)
Merkez noktası 0, 0 olacak şekilde sağ tarafa gittikçe x değeri artar, sol tarafa gittikçe x değeri azalır. Yukarı ilerledikçe y artar aşağı indikçe y azalır.
2 boyutlu düzlemde merkeze kendinizi koyarak diğer cizimlere olan uzaklığı da bulabilirsiniz ancak bu konumuzda 2 boyutlu düzlemde belirli bir bölgenin içerisine herhangi bir obje girdiğinde bunu koddan tespit etmek istiyoruz.
Öncelikle 2 boyutlu uzayımızı çizelim. 0,0 noktası sol üst köşedeki nokta olacak.
400x400 alana sahip bir tane 2 boyutlu uzayımız mevcut. Bu uzayımızda 2 tane obje oluyor. şekil 2'yi hareket edebildiğini hayal edelim. Şekil 1'i ise bu uzayda yer alan belirli bir alanı hedefleyelim. Mesela bir ev olabilir ya da ekranda gördüğümüz düğme?
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Şimdi gelelim sorulara;
Şekil 2, şekil 1'in alanına girdiğin nasıl tespit ederiz?
Öncelikle 2 boyutlu render işlemlerinde bilgisayar soldan sağa doğru olmak üzere aşağıya doğru sıralı bir şekilde çizimleri yapar. Bir oyun kodluyorsanız saniyede bu çizim belirlediğiniz frame rate oranına göre tekrarlanacaktır.
Şekil 1: 100, 60 konumunda yer alıyor. İlk önce şekil 1'in tüm köşelerinin bulunduğu konumu bulmamız gerekiyor. Bunu bulmak için başlangıç noktasını referans alabiliriz. Basit anlaşılması için dikdörtgen seçtim.
Sol üst = (x, y) = (100, 60)
Sağ Üst = (x+75, y) = (100+75, 60)
Sol alt = (x, y+30) = (100, 60+30)
sağ alt = (x+75, y+30) = (100+75, 60+30)
Yani benim şekil 1'in dört köşesinin bulunduğu konum şu sayılara denk gelecektir;
Şekilimin köşelerinin konumunu bildikten sonra artık çarpışma noktalarını tespit edebilirim ve şekil 2 bu alana girip girmediğini tespit edebilirim.
SEKIL2_X > SEKIL1_X && SEKIL2_X < SEKIL1_X+SEKIL1_GENISLIK = bu bize x konumunda 100 ila 175 arasında olup olmadığının sonucunu verecektir.
SEKIL2_Y > SEKIL1_Y && SEKIL2_Y < SEKIL1_Y+SEKIL1_YUKSEKLIK = bu bize y konumunda 60 ila 90 arasında olup olmaduğunun sonucunu verecektir.
Eğer bu iki sorgumuz bize true değerini verirse şekil 2, şekil 1 ile çarpışmıştır.
JavaScript:
IF ((SEKIL2_X > SEKIL1_X && SEKIL2_X < SEKIL1_X+SEKIL1_GENISLIK) &&
(SEKIL2_Y > SEKIL1_Y && SEKIL2_Y < SEKIL1_Y+SEKIL1_YUKSEKLIK))
Uygulamak isterseniz basit bir js canvas ile şekil 2 yi hareket ettirip şekil 1 alanına girdiğinde renginin değişmesini sağlayabilirsiniz. şekil 1 alanından çıktıktan sonra rengi eski haline gelebilir.
Bir sonraki yazımda 2 boyutlu uzayda iki nesnenin birbirine olan uzaklığı nasıl bulabileceğinizi anlatacağım.