Nokta dönüşümü ile vektör dönüşümü arasındaki fark nedir?


11

Dersimde öğretim üyem bana şunları söyledi:

Sadece 4 * 4 matrisleri düşünüyoruz. Bunlar, nesneleri (veya bu işlemlerin herhangi bir kombinasyonunu) döndürmek, ölçeklemek veya çevirmek için kullanılır. Matrisler daha sonra sanal kamera modelinin uygulanmasında da kullanılır. Bir vektör dönüşümü ile nokta dönüşümü arasındaki farkı bilmiyorsanız, yukarı bakın.

Sadece bu soru için bir cevap bulamıyorum ve bu web sitesi için bir hesap açamıyorum.


1
Diğer tüm cevaplara ve diğer insanlar yüzünden tamamlayıcı olarak zaten başka bir yerde kontrol edebilirsiniz uzunluğunda bu soruyu cevapladı: scratchapixel.com/lessons/...
user18490

Yanıtlar:


9

İşte basit cevap.

4D'de, bunları bir 4x4 matrisi ile çarpabilmek için, vektörler (x, y, z, 0) olarak temsil edilir ve noktalar (x, y, z, 1) olarak temsil edilir.

4x4 matrisinin 4. satırı matrisin çevirisini temsil ettiğinden, yukarıdaki gösterimler noktaları çeviriden etkilenecek şekilde yapar, ancak vektörler etkilenmez.

Hem vektörler hem de noktalar rotasyon, ölçekleme vb.

Uyarı:

Vektörlerin belirli özelliklere sahip olmasını beklerseniz daha derin bir tartışma yapılacaktır. Örneğin, bir üçgenin normalini aynı matrisle dönüştürürseniz, üçgenin köşelerini dönüştürürsünüz, aslında o üçgenin normal vektörü olmayacaktır. Bunun nedeni, normal vektörlerin hesaplandıkları köşelerle bir tür ters ilişkiye sahip olmasıdır.


Normaller işe yaramıyor çünkü vektör değiller. Konsepte iyi bir giriş bilmiyorum.
MB Reynolds

@MBReynolds Matematiksel olarak, normaller nokta veya yön olarak vektörlerdir . Buradaki sorun, onları dönüştürmek için bir yüzeyin noktalarına uyguladığımız dönüşümlerin normaller için geçerli olmamasıdır.
nbro

2
yüzey normalleri vektör değil bivektördür. İki vektörün çapraz çarpımı ile normal bulabiliriz, sonuç bir bivektördür. SEE Vogensen's Per: gist.github.com/pervognsen/c6b1d19754c2e8a38b10886b63d7bf2d
MB Reynolds

4

Ben de öğrenciyim beri öğrendiğim kadarıyla, sen çalışmak istiyorum olmasıdır , aynı şekilde, içinde muamele rotasyonlar, ölçekleme ve çeviriler için matrisleri bir matris ile çarpılması (yani bir 4 x 4 matris).4x44x4

Bu olmadan unutmayın rotasyonlar ve ölçekleme sırasıyla bir vektör ve bir skaler faktörü ile çarpımı kullanılarak temsil oysa matrisleri, çeviriler, bir vektör ile toplayarak temsil edilecekti.4x4

Şimdi soru şu: 3D koordinat sistemlerinden 4D sistemlerine nasıl geçebiliriz ? Cevap " homojen koordinatlar " dır .

Yani bunun anlamı nedir? Dönüşleri, ölçeklendirmeyi ve çeviriyi temsil etmek için matrisler inşa ediyoruz , böylece dönüşümleri temsil etmek için sadece matris çarpımlarını kullanıyoruz (örn. Rotasyonlar, ölçeklendirme, vb.). Onları bireysel olarak nasıl inşa ettiğimiz, daha spesifik, ancak web'e bakabilirsiniz.4x4

Bu noktada, matrislerimiz ve 3B vektörlerimiz var, henüz kullanışlı değil, çünkü boyutlar eşleşmediğinden 4 × 4 matrisleri ve 3 D vektörlerini çoğaltamazsınız. Bu nedenle, evren koordinatları ile çalışırken, verilen 3D noktalarımızı karşılık gelen 4D noktalarına dönüştürmemiz gerekir.4x44x43D

Bunu nasıl yaparız?

Yön ve pozisyon vektörleri arasında ayrım yapıyoruz . Yön vektörleri, adından da anlaşılacağı gibi, işaret ettikleri yöne sahiptir; uzunluklarını da önemsiyoruz, ancak çevirilerini etkilemiyorlar, çünkü konumlarını umursamıyoruz. Konum vektörleri (veya basitçe "noktalar") çevrilebilir veya hareket ettirilebilir; bunlar genellikle başlangıç ​​noktasına göre, yani başlangıç ​​noktasından noktanın kendisine bir vektör olarak temsil edilir.

0401

3Dv=(v1v2v3)v'=(v1v2v30)u=(u1u2u3)u'=(u1u2u31)

3D4th10


(wx,wy,wz,w)w0(x,y,z)w=1w4D matris çarpımı kullanarak.
Ilmari Karonen

2

Bir vektörün ve bir noktanın tanımına bakarsanız, bir vektör:

Hız gibi bir büyüklük ve yön ile tamamen belirtilen bir miktar. http://www.thefreedictionary.com/vector

Ve bir nokta:

Konum dışında hiçbir özelliği olmayan boyutsuz bir geometrik nesne. http://www.thefreedictionary.com/point

Yani bir vektörün ölçekli bir yön olduğunu ve bir noktanın bir konum olduğunu söyleyebilirsiniz.

Yani, bir vektörü dönüştürürseniz, sadece döndürür ve ölçeklendirirsiniz. Bir noktayla da çevirirsiniz (bir noktanın dönüşü ve ölçeklenmesi başlangıç ​​noktası etrafındadır, çünkü sadece noktanın döndürülemeyeceği bir konumdur).

Çoğu zaman bir vektör ve bir nokta aynı kaba, 4 bileşenli bir vektör içine konur. Tek fark w bileşenidir. W bileşeni 0 ise, o zaman bir yöndür. 1 ise, vektör bir noktadır.

Bunun nedeni matrisin kendisinde bulunabilir. Bir vektörü 4x4 matrisli 4 bileşenle çarpma şeklinizi kullanır. Bunun nasıl çalıştığını bilmiyorsanız, hızlı bir google öneririm.

[rÖt+scbirlerÖt+scbirlerÖt+scbirletrbirnslbirtbenÖnrÖt+scbirlerÖt+scbirlerÖt+scbirletrbirnslbirtbenÖnrÖt+scbirlerÖt+scbirlerÖt+scbirletrbirnslbirtbenÖn0001]

Gördüğünüz gibi, son bileşen 0 ise, 0 ile çarpmanız gerekir ve bu nedenle sonuç 0 olur ve çeviri yoktur.

Bu, çokgen nesnelerle bilgisayar grafiklerini kolaylaştırır. Konumları dönüştürmek için aynı dönüşüm matrisine ve aynı zamanda normallere sahip olursunuz. Normallerin w bileşeni 0'a ayarlandığından ve konumların w bileşeni 1 olduğundan, normaller sadece döndürülür (ve aynı zamanda ölçeklenir, bu da bazı garip şeylere yol açabilir, bu nedenle çoğu zaman normalin normalleştirilmesinden sonradır. t Aslında garip şeyler nedeniyle aynı matrisin pozisyonlar ve rotasyonlar için kullanılması tavsiye edilir! @JarkkoL'un yorumuna bakın.) ve pozisyonlar çevrilir (ve başlangıç ​​noktası etrafında döndürülür ve ölçeklendirilir).

Umarım hata yapmadım: P, ve bu sana yardımcı oldu!


2
Normaller, konumlarla aynı dönüşüm matrisi ile dönüştürülmez. Düzgün olmayan ölçekleme ve / veya eğriltme ile dönüşümler için normalleri düzgün bir şekilde dönüştürmek için 3x3 alt matrisinin devriğinin tersini hesaplamanız gerekir.
JarkkoL

@JarkkoL evet, bu doğru, sen haklısın. Aynı matrisi kullanmamak en iyisidir, ancak uygulamaya bağlı olarak yapılır. Çoğu zaman insanlar normal olmayanların eğrilmesini umursamazlar, çünkü ya homojen olmayan ölçekleme ya da ölçeklendirme kullanmazlar. Dönüştürme pozisyonları ve normallerle ilgili kısım daha çok bir konteynır kullanmanın yararlı olabileceğiydi.
bram0101
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.