Bir dönüşüm matrisinin etkisini nasıl tersine çevirebilirim?


14

Son zamanlarda GLGW aracılığıyla OpenGL ve C ++ kullanarak bir oyun üzerinde çalışıyorum.

Oyunda üzerine bir taret takılmış bir zeplin var. Zeplin dünya uzay koordinatlarında hareket ediyor ve taret bunu 'takip ediyor'.

Taret, bakış / nişan alma yönü için kendi koordinat alanına sahiptir. Temel olarak, taret yönü (0,0,1)hedeflediğinde, hava gemilerinin hareket yönüne paralel hedefler.

Tarete bir dünya uzay hedefi vermek için, dünya uzay koordinatlarını alan ve bunları taret uzay koordinatlarına dönüştüren bir matrisim var.

Taret ateş ederken, dünya uzayında mermileri ortaya çıkarmasını istiyorum, bu yüzden taret alanı koordinatlarını dünya uzayına dönüştürmek için dönüşüm matrisimi kullanmanın zarif bir yolu var mı?

Sorusunu soran bir daha genel bir yol olabilir: Ben bir matris varsa Muzaydan koordinatları alır Auzaya B. Kullanımı kolay bir yolu var mı Mkoordinatları almak Biçin A?

Yanıtlar:


19

Çok uzun matris olarak Mise ters çevrilebilir sonra bilgisayar, (eğer çok sıradışı bir şey yapıyoruz sürece genellikle, olacak olan) matris tersini ait Mistediğini yapar size bir matris verecektir.

Yani, bir Mdönüşüm inverse(M)gerçekleştirirse, "karşıt" dönüşümü gerçekleştirir.

Çoğu matris / vektör kütüphanesi, tersi hesaplamak için bir yol sağlar.


1
Bonus soru (cevabı bilecek bir kişi gibi göründüğünüz gibi): Ters çevrilemez dönüşüm matrisleri görsel olarak ilginç sonuçlar verir mi?
user1306322

6
@ user1306322 Belki. Daha düşük bir boyuta (örn. Tüm X değerlerini sıfırlamak) yansıtma, değerleri attığınız için ters çevrilemez bir dönüşüm olacaktır. Yararlı olması açısından ilginç, ama korkak sonuçlar elde edemeyeceksiniz. "İnvertibilite" ve "görsel olarak ilginç" dikeydir.
congusbongus

@congusbongus hayır! 3D'den 2D'ye projeksiyon, düzlemsel alıcılarda alt gölgeler elde etmek için standart bir hack'tir.
imallett

@ user1306322 İlginizi çekebilir Moore – Penrose pseudoinverse
Tobias Kienzler

5

Dönüşüm matrisiniz bir döndürme matrisi ise, bir döndürme matrisinin tersinin bu matrisin devri olması gerçeğinden yararlanarak sorunu basitleştirebilirsiniz.

Dönüşüm matrisiniz bir dönüşü izleyen bir çeviriyi temsil ediyorsa, bileşenleri ayrı ayrı ele alın. Tersi, çevirinin çıkarılması ve sonra dönme matrisinin devri uygulanmasına eşdeğerdir.


2

Matris lib'inizde muhtemelen ters adında bir işlev vardır. Muhtemelen aradığınız şey budur.

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.