Vektör nedir?
Vektörler, değişen boyuttaki koordinat kümeleridir. Bir vektördeki her koordinat, vektörün bulunduğu alanın o yönünde mutlak bir konumu temsil eder.
- Bir 1-D vektörü {1} olacaktır . Bu, örneğin, X = 1 konumundaki bir konum olabilir veya t = 1 zamanı olabilir.
- 2-B vektörü {-4,3} olacaktır . Bu, örneğin X ekseni üzerinde -4 ve Y ekseni üzerinde 3 konumu olabilir. Aynı zamanda X ekseni üzerindeki bir konumdaki (-4 metre) sıcaklık (3 derece) olabilir.
- 3-B vektör {1,2,3} olacaktır . Bu, X ekseni boyunca boşluk 1'de, 2 Y ekseni üzerinde geri ve Z ekseni üzerinde 3 yukarı konum olabilir. Veya 1 kırmızı, 2 yeşil ve 3 mavi renkte olabilir. Veya bir XY konumu olabilir ( T ( {3} ) bir zamanda {1,2 } ) olabilir.
Her durumda, sorunumuz için vektörlere anlam atadığımızı unutmayın. Oyunlarda geometri için kullanılan vektörleri yaygın olarak görseniz de, onlarla başka bir şey yapamamanızın bir nedeni yoktur.
Neden vektör kullanıyorum?
İlk olarak, asla vektör kullanmanız gerekmez . X ve y'yi veya önem verdiğiniz koordinatları ne şekilde takip ettiğiniz sürece, bir şekilde iyi olursunuz.
Bununla birlikte, vektörleri kullanmanın avantajı, yön ve konum gibi şeyleri düzgün bir şekilde temsil etmeleri ve ayrıca hayatınızı kolaylaştıran, üzerinde tanımlanmış birkaç matematik işlemine sahip olmalarıdır.
Bunların basit bir örneği için nokta ürünü düşünün .
Yukarıdan aşağıya bir oyunda bir radar sisteminiz olduğunu varsayalım. Radar sektöründe görünen her düşman (2D'de biraz pasta şeklinde kama) ekranınızda küçük bir kırmızı nokta almalıdır. Yani, radar bölümünüzde hangi düşmanların olduğunu bulmanız gerekiyor.
Düşmanların bir üçgen içinde olup olmadığını test edebilirsiniz. Ayrıca, düşmanların radar sektörünün iki tarafını tanımlayan uçakların / hatların iki yarım alanının kesişme noktasında olup olmadığını test edebilirsiniz.
Ya da kontrolü yapmak için bir nokta ürün kullanabilirsiniz. Bunu nasıl yapacağınız aşağıda açıklanmıştır:
- Radarın ortasından "radarın önüne" doğru giden bir vektör oluşturun. Normalleştirin.
- Radarın merkezinden radar görünürlüğünü kontrol etmek istediğimiz nesneye doğru giden bir vektör oluşturun. Normalleştirin.
- İki normalize edilmiş vektörün nokta ürününü alın.
- Bu ürünün arkosinini alın ve radarın genişliğinin yarısından daha az olup olmadığını kontrol edin. Öyleyse, bir bip çizin.
Bu çok kullanışlıdır ve artık farklı yönlere işaret eden (sadece ileri vektörü değiştiren) ve farklı genişliklere sahip olan (sadece radar genişliği açısını değiştiren) radarlara kolayca sahip olmanıza izin verir - ve bu durumlar için de aynı kodu tekrar kullanabilirsiniz !
Neden başka vektörleri kullanıyorum?
2B'deyseniz, belki de karmaşık efektler ve hareketler (eğirme, ölçekleme vb.) Elde etmenin en iyi yolu bir sahne grafiği kullanmaktır. Bir gezegenin yörüngede dönen bir gemisi var, geminin yörüngede dönen bir uçağı var. Vektör matematiği kullanmadan bunun hesaplanması gerçekten çok çirkin.
Vektör matematiği ile, her birini bir noktaya ve 3x3 dönüşüm matrisine sahip olarak temsil ediyoruz. Gezegen dönüşümünü, gemi dönüşümünü ve gezegenin dönüşümünü kullanır ve drone dönüşümü ve geminin dönüşümünü ve gezegenin dönüşümünü kullanır.
Gezegen hareket ettiğinde, dönüşümünü değiştirirsiniz ve gemi ve drone otomatik olarak "ücretsiz" olarak konumlandırılır. Çok daha temiz kod.
Hala ikna olmadım.
Vektörler aynı zamanda neredeyse tüm grafik kütüphaneleri tarafından kullanılan konum, geometri ve hareket için doğal temsildir ve kesinlikle OpenGL ve DirectX'tir. Onları kullanmak zorunda kalmadan kaçmanız muhtemel değildir.
Sonuç
Vektörler, geometrik problemleri temiz ve zarif bir şekilde çözen açık kod yazmak için güçlü bir araçtır.