Vector

Vektörleri işlemek için olası tüm fonksiyonların listesi.

Vector tarafından oluşturulur.

Tür İsim Açıklama
number x veya 1 Vektörün X bileşeni.
number y veya 2 Vektörün Y bileşeni.
number z veya 3 Vektörün Z bileşeni.
Metametot İkinci İşlenen Açıklama
__add Vector Toplama işleminin sonucuyla yeni bir Vector döndürür.
__div number veya Vector Bölme işleminin sonucuyla yeni bir Vector döndürür.
__eq any 2 işleneni karşılaştırır, eğer ikisi de Vector ise her bir bileşeni ayrı ayrı karşılaştırır.
__index number veya string Vector'ün bileşenini alır. Bir number döndürür.
__mul number veya Vector Çarpma işleminin sonucuyla yeni bir Vector döndürür.
__newindex number veya string Vector'ün bileşenini ayarlar. number ve string kabul eder.
__sub Vector Çıkarma işleminin sonucuyla yeni bir Vector döndürür.
__tostring x y z döndürür.
__unm Olumsuzlama (negasyon) işleminin sonucuyla yeni bir Vector döndürür.

Metotlar

Vector:Add( Vector vector )
Argüman olarak verilen vektörün değerlerini orijinal vektöre ekler. Bu fonksiyon, yeni bir vektör nesnesi oluşturmadan, nesne oluşturma ve çöp toplama (garbage collection) adımlarını atlayarak vector1 + vector2 ile aynıdır.
Angle Vector:Angle()
Vektörün normalini temsil eden bir açı döndürür.
Angle Vector:AngleEx( Vector up )
Bu vektörün (normalleştirilmiş) açısını döndürür, ancak 'yukarı' yönünün Vector( 0, 0, 1 ) olduğunu varsaymak yerine (Vector:Angle'ın yaptığı gibi), açı için hangi yönün 'yukarı' olduğunu belirleyebilirsiniz.
Vector Vector:Cross( Vector otherVector )
Bu vektör ile parametre olarak verilen vektörün çapraz çarpımını (cross product) hesaplar. İki vektörün çapraz çarpımı, her ikisine de dik (sağ el kuralına göre) bir yöne sahip ve büyüklüğü, bu iki vektörün oluşturduğu paralelkenarın alanına eşit olan 3 boyutlu bir vektördür. Bu, büyüklüklerinin çarpımı, aralarındaki açının sinüsü ve sağ el kuralı ile tanımlanan birim (normal) vektör n olarak tanımlanır: :a × b = |a| |b| sin(θ) n̂ burada a ve b vektörler, n̂ ise her ikisine de dik olan birim vektördür (büyüklüğü 1).
number Vector:Distance( Vector otherVector )
Vektör ile diğer vektör arasındaki Öklid mesafesini döndürür. Bu fonksiyon, Vector:DistToSqr'dan daha maliyetlidir. Ancak, karesi alınmış mesafeler Öklid mesafeleriyle aynı olmadığından, Vector:DistToSqr kullanmadan önce notlarına bakınız.
number Vector:Distance2D( Vector otherVector )
Vektör ile diğer vektör arasındaki Öklid mesafesini 2D uzayda döndürür. Z ekseni yok sayılır. Bu fonksiyon, Vector:Distance2DSqr'dan daha maliyetlidir. Ancak, karesi alınmış mesafeler Öklid mesafeleriyle aynı olmadığından, Vector:Distance2DSqr kullanmadan önce notlarına bakınız.
number Vector:Distance2DSqr( Vector otherVec )
Z eksenini yok sayarak 2 vektör arasındaki karesi alınmış mesafeyi 2D uzayda döndürür. Bu, karekök hesaplamanın maliyetli bir işlem olması nedeniyle Vector:Distance2D'den daha hızlıdır. Karesi alınmış mesafeler toplanmamalıdır. Mesafeleri toplamanız gerekiyorsa, Vector:Distance2D kullanın. Bir mesafe kontrolü yaparken, karşılaştırılan mesafenin karesinin alındığından emin olun.
number Vector:DistToSqr( Vector otherVec )
2 vektörün karesi alınmış mesafesini döndürür. DistToSqr'ın karekök hesaplamasına gerek duymaması (ki bu maliyetli bir işlemdir) nedeniyle bu fonksiyonu çağırmak Vector:Distance'dan daha hızlıdır. Karesi alınmış mesafeler toplanmamalıdır. Mesafeleri toplamanız gerekiyorsa, Vector:Distance kullanın. Bir mesafe kontrolü yaparken, karşılaştırılan mesafenin karesinin alındığından emin olun. Aşağıdaki örnek koda bakınız.
Vector:Div( number divisor )
Vektörü verilen sayıya böler, bu da x, y ve z'nin bu değere bölüneceği anlamına gelir. Bu, orijinal vektörün değerini değiştirecektir, değeri değiştirmeden bölme işlemi için örnek 2'ye bakın.
number Vector:Dot( Vector otherVector )
Bu vektör ile parametre olarak verilenin noktasal çarpımını (dot product) döndürür. İki vektörün noktasal çarpımı, büyüklüklerinin (uzunluklarının) çarpımı ile aralarındaki açının kosinüsüdür: a · b = |a| |b| cos(θ) burada a ve b vektörlerdir. Büyüklükleri elde etmek için Vector:Length'e bakın. Eğer her iki vektör de normalleştirilmişse, noktasal çarpım sadece aralarındaki açının kosinüsünü, vektörler birbirine dik ise sıfır döndürür.
number Vector:DotProduct( Vector Vector )
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir. Bu, Vector:Dot'un bir takma adıdır. Onun yerine onu kullanın. İki vektörün noktasal çarpımını döndürür.
Bu vektörün negatif versiyonunu, yani her bileşeni kendisinin negatif değerine sahip bir vektörü döndürür. Ayrıca bakınız: Vector:Negate.
Vector Vector:GetNormal()
Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir. Bunun yerine Vector:GetNormalized kullanın. Vektörün normalleştirilmiş bir versiyonunu döndürür. Bu, Vector:GetNormalized'ın bir takma adıdır.
Vektörün normalleştirilmiş bir versiyonunu döndürür. Normalleştirilmiş, aynı yöne sahip ancak 1 uzunluğunda bir vektör anlamına gelir. Bu, üzerinde çağırdığınız vektörü etkilemez; bunu yapmak için Vector:Normalize kullanın.
boolean Vector:IsEqualTol( Vector compare, number tolerance )
Vektörün, verilen toleransla başka bir vektöre eşit olup olmadığını döndürür.
boolean Vector:IsZero()
Vektörün tüm alanlarının 0 olup olmadığını kontrol eder.
number Vector:Length()
Vektörün Öklid uzunluğunu döndürür: √(x² + y² + z²). Karekök kullandığı için bu nispeten maliyetli bir işlemdir. Mümkün olduğunda Vector:LengthSqr kullanmanız tavsiye edilir.
number Vector:Length2D()
Vektörün Z ekseni olmadan iki boyuttaki uzunluğunu döndürür. Karekök kullandığı için bu nispeten maliyetli bir işlemdir. Mümkün olduğunda Vector:Length2DSqr kullanmanız tavsiye edilir.
Vektörlerin x ve y değerlerinin karesi alınmış uzunluğunu döndürür, x² + y². Karekök hesaplamanın maliyetli bir işlem olması nedeniyle bu, Vector:Length2D'den daha hızlıdır.
number Vector:LengthSqr()
Vektörün karesi alınmış uzunluğunu döndürür, x² + y² + z². Karekök hesaplamanın maliyetli bir işlem olması nedeniyle bu, Vector:Length'den daha hızlıdır.
Vector:Mul( number multiplier )
Vektörü verilen sayı (bu, x, y ve z'nin bu değerle çarpılacağı anlamına gelir), bir Vektör (her vektörün X, Y ve Z'si çarpılır) veya bir VMatrix (vektörü matrisin döndürme/öteleme bilgisiyle dönüştürür) ile ölçekler.
Vector:Negate()
Bu vektörü olumsuzlar, yani her bileşeni kendisinin negatif değerine ayarlar. Vector( -vec.x, -vec.y, -vec.z ) ile aynıdır.
Vector:Normalize()
Verilen vektörü normalleştirir. Bu, üzerinde çağırdığınız vektörü değiştirir; orijinali etkilemeden normalleştirilmiş bir kopya döndürmek istiyorsanız, Vector:GetNormalized kullanın.
Vector:Random( number min = -1, number max = 1 )
Bu Vektör nesnesinin her bir elemanını rastgele hale getirir.
Vector:Rotate( Angle rotation )
Bir vektörü verilen açı kadar döndürür. Herhangi bir şey döndürmez, bunun yerine orijinal vektörü değiştirir.
Vector:Set( Vector vector )
Değerleri ikinci vektörden birinci vektöre kopyalar.
Vector:SetUnpacked( number x, number y, number z )
Vektörün x, y ve z değerlerini ayarlar.
Vector:Sub( Vector vector )
İkinci vektörün değerlerini orijinal vektörden çıkarır, bu fonksiyon çöp toplamayı (garbage collection) önlemek için kullanılabilir.
Color Vector:ToColor()
Vektörü (0 ile 1 arasında değişen değerler) bir Renge (Color) dönüştürür. Bu aynı zamanda değer aralığını 0 - 1'den 0 - 255'e çevirecektir. x * 255 -> r y * 255 -> g z * 255 -> b Bu, Color:ToVector'un tersidir.
table Vector:ToScreen()
Belirtilen pozisyon vektörünün ekranda nerede görüneceğini döndürür. İlgili bir fonksiyon, 2D bir koordinatı 3D bir yöne dönüştüren gui.ScreenToVector'dur. Doğru çalışması için bir 3D render ortamından veya cam.Start3D'den sonra çağrılmalıdır. Bir render kancasındaki hatalar, oyuncu oyununu yeniden başlatana kadar bu değerin yanlış olmasına neden olabilir. Sorun Takipçisi: 462 cam.Start3D veya varsayılan olmayan parametrelerle 3D bağlamında cam.Start, bu fonksiyon için referans FOV'u yanlış ayarlar ve bu da yanlış dönüş değerlerine neden olur. Bu, varsayılan bir 3D bağlamı oluşturup sonlandırarak (argümansız cam.Start3D) düzeltilebilir. Sorun Takipçisi: 1404
table Vector:ToTable()
Vektörü üç elemanlı bir tablo (table) olarak döndürür.
Vektörün x, y ve z değerlerini döndürür.
boolean Vector:WithinAABox( Vector boxStart, Vector boxEnd )
Verilen vektörün, diğer 2 vektör tarafından oluşturulan bir kutunun içinde olup olmadığını döndürür.
Vector:Zero()
x, y ve z'yi 0 olarak ayarlar.

Örnek

İsimlendirilmiş bileşene göre dizinleme.

local v = Vector( 1, 2, 3 ) print( v.x, v.y, v.z )
Çıktı: 1 2 3

Örnek

Numaraya göre dizinleme (en verimlisi!).

local v = Vector( 1, 2, 3 ) print( v[1], v[2], v[3] )
Çıktı: 1 2 3

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord