- Katılım
- 3 Haziran 2019
- Mesajlar
- 235
- Elmaslar
- 252
- Puanlar
- 7.295
- Yaş
- 22
- Yer
- Türkiye
- Discord İzni
- Minecraft
- GrimOK
- whyshiro_
Selamlar MC-TR Forumu,
Bu gün sizlere SpigotAPI kullanark nasıl partiküler şekiller yapabileceğinizi öğreteceğim. Öncelike söylemem gerekiyor ki bu kurs ileri seviye matematik içermektedir (trigonometrik fonksiyonlar ve parametrik denklemler). Bu konuyu anlaşılır kılmak için ilk önce basit ve anlaşılır bir şekilde trigonometrik fonksiyonları size anlatacağım. Sonra bu fonksiyonları analitik düzlemde inceleyeceğiz ve parametrik denklemler sayesinde bir çember oluşturacağız. Hemen ardından SpigotAPI tarafından bize sunulan Location sınıfından bir obje oluşturup bunları nasıl kullanabileceğinizi sizlere öğreteceğim. İlk önce trigonometrik fonksiyonlar hakkında konuşalım.
Trigonometrik Fonksiyonlar
Sinüs Fonksiyonu:
Bu kısımda sadece iki adet trigonometrik fonksiyon göreceğiz. Bunlar Y = sin(t) (sinüs fonksiyonu) ve y=cos(t) (kosinüs fonksiyonu). Bu fonksiyonların ikisi de periyodiktir. Belirli bir zamandan sonra kendilerini tekrarlar. Aynı ses dalgılarının enerji kaybetmeden yayılması gibi. İlk önce sinüs fonksiyonuna bakalım:
Burada iki boyutlu bir düzlem bizi karşılamakta. Bu düzlem bir analitik düzlemdir ve iki boyutludur. Kırmızı, dalgalı bir çizgi bu düzlemimizin üzerinde. Bu dalgalı çizgi bizim fonksiyonumuz. Sinüs fonksiyonunun kökleri vardır. Bu kökler tam sayı ile bulunamaz. Bu kökler radyan veya derece şeklinde bulunabilir. Burada gördüğümüz pi sayısı (π) radyandır. Radyan bir açı birimidir, uzunluk birimi değildir. Radyan, bir dairede yarıçap uzunluğundaki yay parçasını gören merkez açıya eşit açı ölçme birimidir. Bir radyan (π), 180 dereceye eşittir. Şimdi bunu da öğrendiğimize göre köklere geçelim. Buradaki kökler ileride parametrik denklem kullandığımız zaman işimize yarayacak.
Burada sinüs fonksiyonunun kökleri derece olarak : 0, 180, 360, 540... olarak girmekte. Bu değerlerde sinüs 0'dır.
Aynı zamanda sinüsün "1" olduğu değerleri de bilmemiz gerekiyor. Bunlar: 90, 270,450... Burada değerler sadece "1" olmuyor. 270, 630.. derece gibi katlarında [270 + n(360)] fonksiyon "-1" değerini almakta. Bunu da not edip diğer fonksiyona geçelim.
Kosinüs Fonksiyonu:
Bu kısımda sinüs fonksiyonunu incelediğimiz gibi bir de kosinüs fonksiyonuna bakacağız. Bu kısımda lafı uzatmayacağım. Kosinüs fonksiyonunu sanki sinüs fonksiyonunu sola doğru ötelemişiz gibi elde edebiliriz:
Göreceğiniz üzere burada köklerin yerleri tam tersi oldu. 0 derecede 1, 90 derecede ise 0 aldı. Bu kısmı uzatmadan parametrik denklemlere geçiyorum. Merak edenler için bu iki fonksiyonun köklerini aşağıya bırakıyorum:
Parametrik Denklemler
Parametrik denklemler, bir veya daha fazla bağımsız değişkenin parametreleri olarak adlandırılan fonksiyonları olarak bir grup niceliği tanımlar. Yani size özetlemek için şöyle söyleyeyim: "İki veya daha fazla değişken alabilen fonksiyonlar."
O zaman şöyle bir parametrik denklem oluşturalım:
x = cos(t)
y = sin(t)
ve bunu tek bir fonksiyon haline getirirsek çember elde etmiş oluruz. Şu anda elimde yeterince imkan olamamasından ötürü size internetten bulduğum görseli paylaşacağım. Burada değerlerimiz beşin kati ile genişletilmiş. Yani çember büyütülmüş. Aynı zamanda çemberimizin yarıçapı 5 olmuştur. Yani:
x = 5cos(t)
y = 5sin(t)
Görsele dökersek eğer:
Çemberini elde etmiş oluruz. Peki nasıl oldu bu? Daha önceden size dediğim kökler ve noktalar var ya, hadi onları yerlerine yerleştirelim:
(Fotoğrafı ben çektim. Kalite kötü ise kusura bakmayın)
Son olarak bunları analitik düzleme dizelim:
Bizim değerimiz sürekli olarak artacağından bu noktalar arasında hareket ederken parabolik bir hareket yapacak. Yani çember elde etmiş olacağız. Son olarak daha iyi anlamanız için bir görsel bırakıyorum:
Hadi lafı uzatmadan koda geçelim!
Kodlama Kısmı:
Ve işte sonucumuz:
(Üstümüzdeki partiküller sürekli dönmektedir)
Aynı zamanda bu kısmı şu şekilde değiştirirsek çapraz bir yüzük elde etmiş olacağız:
Bu kodun sonucu ise şu şekildedir:
Evet arkadaşlar, umarım sizlere bir şeyler öğretebilmişimdir. İleriki zamanlarda daha karmaşık partikülleri ele alacağım. Şimdilik elimden bu kadar geliyor. Matematik hayatınızın bir kısmında mutlaka karşınıza çıkıyor. O yüzden matematiği bir düşman değil, bir hobi olarak görün. Sonraki dersimizde görüşmek üzere!
Bu arada sorularınız için Discord'dan bana ulaşabilirsiniz: Grim#2005
Bu gün sizlere SpigotAPI kullanark nasıl partiküler şekiller yapabileceğinizi öğreteceğim. Öncelike söylemem gerekiyor ki bu kurs ileri seviye matematik içermektedir (trigonometrik fonksiyonlar ve parametrik denklemler). Bu konuyu anlaşılır kılmak için ilk önce basit ve anlaşılır bir şekilde trigonometrik fonksiyonları size anlatacağım. Sonra bu fonksiyonları analitik düzlemde inceleyeceğiz ve parametrik denklemler sayesinde bir çember oluşturacağız. Hemen ardından SpigotAPI tarafından bize sunulan Location sınıfından bir obje oluşturup bunları nasıl kullanabileceğinizi sizlere öğreteceğim. İlk önce trigonometrik fonksiyonlar hakkında konuşalım.
Trigonometrik Fonksiyonlar
Sinüs Fonksiyonu:
Bu kısımda sadece iki adet trigonometrik fonksiyon göreceğiz. Bunlar Y = sin(t) (sinüs fonksiyonu) ve y=cos(t) (kosinüs fonksiyonu). Bu fonksiyonların ikisi de periyodiktir. Belirli bir zamandan sonra kendilerini tekrarlar. Aynı ses dalgılarının enerji kaybetmeden yayılması gibi. İlk önce sinüs fonksiyonuna bakalım:
Burada iki boyutlu bir düzlem bizi karşılamakta. Bu düzlem bir analitik düzlemdir ve iki boyutludur. Kırmızı, dalgalı bir çizgi bu düzlemimizin üzerinde. Bu dalgalı çizgi bizim fonksiyonumuz. Sinüs fonksiyonunun kökleri vardır. Bu kökler tam sayı ile bulunamaz. Bu kökler radyan veya derece şeklinde bulunabilir. Burada gördüğümüz pi sayısı (π) radyandır. Radyan bir açı birimidir, uzunluk birimi değildir. Radyan, bir dairede yarıçap uzunluğundaki yay parçasını gören merkez açıya eşit açı ölçme birimidir. Bir radyan (π), 180 dereceye eşittir. Şimdi bunu da öğrendiğimize göre köklere geçelim. Buradaki kökler ileride parametrik denklem kullandığımız zaman işimize yarayacak.
Burada sinüs fonksiyonunun kökleri derece olarak : 0, 180, 360, 540... olarak girmekte. Bu değerlerde sinüs 0'dır.
Aynı zamanda sinüsün "1" olduğu değerleri de bilmemiz gerekiyor. Bunlar: 90, 270,450... Burada değerler sadece "1" olmuyor. 270, 630.. derece gibi katlarında [270 + n(360)] fonksiyon "-1" değerini almakta. Bunu da not edip diğer fonksiyona geçelim.
Kosinüs Fonksiyonu:
Bu kısımda sinüs fonksiyonunu incelediğimiz gibi bir de kosinüs fonksiyonuna bakacağız. Bu kısımda lafı uzatmayacağım. Kosinüs fonksiyonunu sanki sinüs fonksiyonunu sola doğru ötelemişiz gibi elde edebiliriz:
Göreceğiniz üzere burada köklerin yerleri tam tersi oldu. 0 derecede 1, 90 derecede ise 0 aldı. Bu kısmı uzatmadan parametrik denklemlere geçiyorum. Merak edenler için bu iki fonksiyonun köklerini aşağıya bırakıyorum:
Parametrik Denklemler
Parametrik denklemler, bir veya daha fazla bağımsız değişkenin parametreleri olarak adlandırılan fonksiyonları olarak bir grup niceliği tanımlar. Yani size özetlemek için şöyle söyleyeyim: "İki veya daha fazla değişken alabilen fonksiyonlar."
O zaman şöyle bir parametrik denklem oluşturalım:
x = cos(t)
y = sin(t)
ve bunu tek bir fonksiyon haline getirirsek çember elde etmiş oluruz. Şu anda elimde yeterince imkan olamamasından ötürü size internetten bulduğum görseli paylaşacağım. Burada değerlerimiz beşin kati ile genişletilmiş. Yani çember büyütülmüş. Aynı zamanda çemberimizin yarıçapı 5 olmuştur. Yani:
x = 5cos(t)
y = 5sin(t)
Görsele dökersek eğer:
Çemberini elde etmiş oluruz. Peki nasıl oldu bu? Daha önceden size dediğim kökler ve noktalar var ya, hadi onları yerlerine yerleştirelim:
(Fotoğrafı ben çektim. Kalite kötü ise kusura bakmayın)
Hadi lafı uzatmadan koda geçelim!
Kodlama Kısmı:
Java:
private void createRingParticle(final Player p ) {
new BukkitRunnable() { // Bir adet runnable oluşturduk. Runnable, bir kod takımını istediğimiz süreç içerisinde sürekl, olarak tekrar eder.
double rad = 0; // radyan değerimizi belirlediğimiz bir double değeri. Double veri tipi kesirli sayıları tutmak için kullanılır
public void run() { // Kodumuzun çalışcağı fonksiyon.
rad += Math.PI / 16; // Radyanımızı her tur başında pi / 16 artacak şekilde belirledik. Bu işlem bizim dairemizi 8 eş bölüme ayırdı.
//p.sendMessage(String.valueOf(rad)); //Debugging için oyuncuya radyanı gönderdiğimiz kod.
Location location = p.getLocation(); // Kullanıcının lokasyonunu aldık.
Location particleBuilder1 = location.clone().add(Math.cos(rad), 1.85, Math.sin(rad)); //Yeni bir lokasyon oluşturduk. Eski lokasyonu
// kopyaladık ve ardından sinüs (x), partikülün ayağımızdan yüksekliğini (y = 1.85) ve kosinüs (z) değerlerini önceki lokasyona atadık.
p.spawnParticle(Particle.FLAME,particleBuilder1,0,0,0,0); // Oyuncunun üzerine bu partikülleri gönderdik.
}
}.runTaskTimer( JavaPlugin.getPlugin( Main.class ), 0, 1 );
}
Ve işte sonucumuz:
(Üstümüzdeki partiküller sürekli dönmektedir)
Java:
Location particleBuilder1 = location.clone().add(Math.cos(rad), 1.85, Math.sin(rad));
//Bu kısmı şu şekilde değiştirelim:
Location particleBuilder1 = location.clone().add(Math.cos(rad), Math.sin(rad) + 1, Math.sin(rad));
Bu kodun sonucu ise şu şekildedir:
Evet arkadaşlar, umarım sizlere bir şeyler öğretebilmişimdir. İleriki zamanlarda daha karmaşık partikülleri ele alacağım. Şimdilik elimden bu kadar geliyor. Matematik hayatınızın bir kısmında mutlaka karşınıza çıkıyor. O yüzden matematiği bir düşman değil, bir hobi olarak görün. Sonraki dersimizde görüşmek üzere!
Bu arada sorularınız için Discord'dan bana ulaşabilirsiniz: Grim#2005