Natan'ın uygun yorumuna cevap vermeye çalışarak, standart Öklid Uzayında 3B vektörleri temsil etmek için Affin Space'de vektörler kullandığınızda gerçekte neler olduğunu anlamak için faydalı olabilecek bazı düşünceler yaptım.
İlk önce koordinatlara sahip olanı vektör olarak çağıracağım , yani bir nokta ve bir vektör aynı varlıktır; bir vektörü iki nokta farkı olarak görebilirsiniz: V = B - A ; V B A içinde hareket eder
, çünkü A + V = A + B - A = B . A = 0 (orijinli) koyun ; V = B - 0 = B olsun : B noktası ve 0 hareket eden vektöriçin B aynı şeydir.
"Vektör" diyeceğim - 3B kitaplıkların çoğunda kullanılan anlamda - afinasyon uzayının bir vektörü w = 0 olduğunda.
Matris, lineer bir işlevi kompakt / zarif / verimli bir biçimde temsil etmenize izin verdikleri için kullanılır, ancak doğrusal işlevler, kökü dönüştürülemeyen büyük dezavantajlara sahiptir: F ( 0 ) = 0 , F doğrusal olmak isterse (F Diğer şeyler arasında F (λ X ) = λF ( X ) ve F ( A + B ) = F ( A ) + F ( B ))
Bu, 0 vektörünü asla hareket ettirmeyeceğinizden, çeviri yapan bir matris oluşturamayacağınız anlamına gelir . İşte Afin Uzay oyununa geliyor . Afinik alan öklid uzayına bir boyut ekler, böylece traslantyonlar ölçeklendirme ve rotasyonlarla yapılabilir.
Afin Uzayı, Afin ve Öklid vektörleri arasında bir denklik ilişkisi kurabileceğiniz anlamında yansıtıcı bir alandır, böylece onları (kafaları ve vektörlerle yaptığımız gibi) birbirine karıştırabilirsiniz. Aynı yönde kökene yansıyan tüm afin vektörleri aynı öklid vektörü olarak görülebilir.
Bu, koordinatlarda aynı oranlara sahip tüm vektörlerin eşdeğer sayılabileceği anlamına gelir:
Matematiksel olarak:
yani her afin vektörü w = 1 olan bir canon versiyonuna indirgenebilir (her eşdeğer vektör arasından en çok sevdiğimiz birini seçeriz).
Görsel olarak (2D öklid - 3D affine):
dolayısıyla “projektif” alanın anlamı ; Burada, öklid uzayının 2B (mavi bölge) olduğunu fark etmelisiniz.
W = 0 (hiper) düzleminde yer alan kanonik sürümlerine (kolaylıkla) yerleştirilemeyen belirli afine vektörleri kümesi vardır.
Görsel olarak gösterebiliriz:
> 0 sonra Öklid uzaya yansıtılan vektör sonsuzun ama bir özellikle sonsuzun gider - ne görmek (olmalı) iken w olmasıdır Yön .
Şimdi, projektif uzayına iki vektör eklemenin, toplam vektörü öklid uzayında yansıtılan bir vektör olarak gördüğünüzde sorunlara yol açabileceği açıktır; öklid düzlemi (hiper) düzlemi.
Bu yüzden sadece "noktaları" nı "vektörler" olarak toplayabilirsiniz çünkü bir "vektör", "noktanın" w koordinatını değiştirmeyecektir, bu sadece "puanlar" burada w = 1:
Gördüğünüz gibi yeşil nokta, camgöbeği "noktayı" temsil eden iki afin vektörünün eklenmesiyle elde edilen ve V "vektörünü , ancak her afin vektörüne V'yi canon tarafından farklı bir biçimde uygularsanız , elde edersiniz. yanlış sonuç (kırmızı "" nokta "").
Affine Space'in Öklid Uzayları üzerindeki işlemi tanımlamak için şeffaf bir şekilde kullanılamayacağını ve "vektör" teriminin yanlış kullanılmasının hesaplama toplamlarının (katı) kısıtı altında bir anlamı olduğunu görüyorsunuz. yalnızca yansıtıcı vektörler üzerindeki .
Bununla birlikte, GPU’nun ne yaptığınızı gerçekten bilmiyorsanız Vector4’ün w = 0 veya w = 1 olması gerektiğini varsaydığını kabul etmek mantıklıdır .